Fixes: QtSingleApplication: remove socket instance before listening

RevBy:    Thorbjorn
Details:  calls the newly introduced QLocalServer::removeServer()
function before listening. The problem was: When the socket file was
left there after the application quit (e.g. because of not closing it or
when the app crashed), the first call to listen failed with "address
already in use" error. Before, listen() would delete that file in that
case, but that behavior changed and the "removeServer()" method
introduced instead.
This commit is contained in:
Peter Hartmann
2009-02-04 13:52:23 +01:00
parent 6f4a8be946
commit f5222230a4

View File

@@ -94,9 +94,9 @@ bool QtLocalPeer::isClient()
if (!lockFile.lock(QtLockedFile::WriteLock, false))
return true;
if (!QLocalServer::removeServer(socketName))
qWarning("QtSingleCoreApplication: could not cleanup socket");
bool res = server->listen(socketName);
if (!res && server->serverError() == QAbstractSocket::AddressInUseError)
res = server->listen(socketName); // ### Workaround 4.4.0tp bug
if (!res)
qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString()));
QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection()));