diff --git a/src/common/proxy65_manager.py b/src/common/proxy65_manager.py
index 4e2fa1d1b95ece4bd3ea9c70faceada4db97e023..5f2a9f528edcb5a17a0e8ea021d095de1f0b3689 100644
--- a/src/common/proxy65_manager.py
+++ b/src/common/proxy65_manager.py
@@ -15,6 +15,7 @@
 ##
 import socket 
 import struct
+import errno
 
 import common.xmpp
 from common import gajim
@@ -246,16 +247,18 @@ class HostTester(Socks5, IdleObject):
 			self._recv=self._sock.recv
 		except Exception, ee:
 			(errnum, errstr) = ee
-			if errnum == 111:
-				self.on_failure()
-				return None
+			if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK): 
+				# still trying to connect
+				return
 			# win32 needs this
-			elif errnum != 10056 or self.state != 0:
-				return None
-			else: # socket is already connected
-				self._sock.setblocking(False)
-				self._send=self._sock.send
-				self._recv=self._sock.recv
+			if errnum not in (0, 10056, errno.EISCONN):
+				# connection failed
+				self.on_failure()
+				return
+			# socket is already connected
+			self._sock.setblocking(False)
+			self._send=self._sock.send
+			self._recv=self._sock.recv
 		self.buff = ''
 		self.state = 1 # connected
 		self.idlequeue.plug_idle(self, True, False)