? deadlock.patch Index: SearchManager.cpp =================================================================== RCS file: /cvsroot/linuxdcpp/linuxdcpp/client/SearchManager.cpp,v retrieving revision 1.8 diff -u -r1.8 SearchManager.cpp --- SearchManager.cpp 10 Dec 2006 21:27:09 -0000 1.8 +++ SearchManager.cpp 19 Dec 2006 21:12:59 -0000 @@ -112,9 +112,9 @@ stop = true; socket->disconnect(); port = 0; -#ifdef _WIN32 + join(); -#endif + stop = false; } } Index: Socket.cpp =================================================================== RCS file: /cvsroot/linuxdcpp/linuxdcpp/client/Socket.cpp,v retrieving revision 1.8 diff -u -r1.8 Socket.cpp --- Socket.cpp 10 Dec 2006 21:27:09 -0000 1.8 +++ Socket.cpp 19 Dec 2006 21:12:59 -0000 @@ -568,7 +568,7 @@ void Socket::shutdown() throw() { if(sock != INVALID_SOCKET) - ::shutdown(sock, 1); + ::shutdown(sock, 2); } void Socket::close() throw() {