diff --git a/src/shared/qtsingleapplication/qtlocalpeer.cpp b/src/shared/qtsingleapplication/qtlocalpeer.cpp
index 4b68c67c3dd8b99c2bd6644056d15f49ac1d4651..452d43545a30d859f859baa085fce1b26572638b 100644
--- a/src/shared/qtsingleapplication/qtlocalpeer.cpp
+++ b/src/shared/qtsingleapplication/qtlocalpeer.cpp
@@ -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()));