skytools.connect_database: avoid tuning keepalive on unix socket
authorMarko Kreen <markokr@gmail.com>
Thu, 3 Dec 2009 14:44:37 +0000 (16:44 +0200)
committerMarko Kreen <markokr@gmail.com>
Thu, 3 Dec 2009 14:44:37 +0000 (16:44 +0200)
python/skytools/psycopgwrapper.py

index 6aa5835b7162041838bca5e2e87b6f40cd72b3bf..3445201f522f4d28c356400cdbc93c6a097754e1 100644 (file)
@@ -125,11 +125,13 @@ def connect_database(connstr, keepalive = True,
     if keepalive and hasattr(socket, 'SO_KEEPALIVE'):
         fd = db.cursor().fileno()
         s = socket.fromfd(fd, socket.AF_INET, socket.SOCK_STREAM)
-        s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
-        if hasattr(socket, 'TCP_KEEPCNT'):
-            s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, tcp_keepidle)
-            s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, tcp_keepcnt)
-            s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, tcp_keepintvl)
+        # avoid unix sockets
+        if type(s.getsockname()) == type(()):
+            s.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
+            if hasattr(socket, 'TCP_KEEPCNT'):
+                s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, tcp_keepidle)
+                s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, tcp_keepcnt)
+                s.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, tcp_keepintvl)
 
     # fill .server_version on older psycopg
     if not hasattr(db, 'server_version'):