diff --git a/src/ioslaves/file/fdreceiver.h b/src/ioslaves/file/fdreceiver.h --- a/src/ioslaves/file/fdreceiver.h +++ b/src/ioslaves/file/fdreceiver.h @@ -40,6 +40,7 @@ Q_SLOT void receiveFileDescriptor(); QSocketNotifier *m_readNotifier; + QString m_path; int m_socketDes; int m_fileDes; }; diff --git a/src/ioslaves/file/fdreceiver.cpp b/src/ioslaves/file/fdreceiver.cpp --- a/src/ioslaves/file/fdreceiver.cpp +++ b/src/ioslaves/file/fdreceiver.cpp @@ -27,6 +27,7 @@ FdReceiver::FdReceiver(const QString &path, QObject *parent) : QObject(parent) , m_readNotifier(nullptr) + , m_path(path) , m_socketDes(-1) , m_fileDes(-1) { @@ -53,6 +54,7 @@ if (m_socketDes >= 0) { ::close(m_socketDes); } + ::unlink(m_path.toLocal8Bit().constData()); } bool FdReceiver::isListening() const diff --git a/src/ioslaves/file/file_unix.cpp b/src/ioslaves/file/file_unix.cpp --- a/src/ioslaves/file/file_unix.cpp +++ b/src/ioslaves/file/file_unix.cpp @@ -84,6 +84,7 @@ PrivilegeOperationReturnValue FileProtocol::tryOpen(QFile &f, const QByteArray &path, int flags, int mode, int errcode) { const QString sockPath = socketPath(); + QFile::remove(sockPath); FdReceiver fdRecv(sockPath); if (!fdRecv.isListening()) { return PrivilegeOperationReturnValue::failure(errcode); diff --git a/src/ioslaves/file/sharefd_p.h b/src/ioslaves/file/sharefd_p.h --- a/src/ioslaves/file/sharefd_p.h +++ b/src/ioslaves/file/sharefd_p.h @@ -59,7 +59,6 @@ const size_t pathSize = finalPath.size(); if (pathSize > 5 && pathSize < sizeof(a.sun_path) - 1) { memcpy(a.sun_path, finalPath.c_str(), pathSize + 1); - ::unlink(finalPath.c_str()); } return a; }