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) { @@ -37,6 +38,7 @@ } const SocketAddress addr(path.toStdString()); + ::unlink(m_path.toLocal8Bit().constData()); if (bind(m_socketDes, addr.address(), addr.length()) != 0 || listen(m_socketDes, 5) != 0) { std::cerr << "bind/listen error:" << strerror(errno) << std::endl; ::close(m_socketDes); 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; }