--- a/src/modules/misc.py Sun Aug 31 14:49:18 2008 -0700
+++ b/src/modules/misc.py Fri Aug 08 09:18:45 2008 -0500
@@ -300,7 +300,7 @@
sock = socket.socket(family, socktype, proto)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,
1)
- sock.bind((host, port))
+ sock.bind(sockaddr)
sock.close()
# Now try to connect to the specified port to see if it
@@ -312,13 +312,30 @@
# systems (such as certain firewalls).
sock.settimeout(1.0)
- sock.connect((host, port))
+ try:
+ sock.connect(sockaddr)
+ except socket.timeout:
+ # handle this at the next level
+ raise
+ except socket.error, e:
+ errnum = e[0]
+ if errnum != errno.EINVAL:
+ raise
+ # this BSD-based system has trouble with a
+ # non-blocking failed connect
+ sock.close()
+ sock = socket.socket(family, socktype, proto)
+ sock.connect(sockaddr)
+
sock.close()
# If we successfully connected...
raise socket.error(errno.EBUSY,
'Port already in use')
+ except socket.timeout, t:
+ return True, None
+
except socket.error, e:
errnum = e[0]
try: