From 321d8a3574ca9165e882eae1035d4924d786af95 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Sun, 25 Aug 2013 19:09:17 +0200 Subject: Handle failure of getpeercred more gracefully --- pynslcd/pynslcd.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'pynslcd') diff --git a/pynslcd/pynslcd.py b/pynslcd/pynslcd.py index 5058d18..a5ae63b 100755 --- a/pynslcd/pynslcd.py +++ b/pynslcd/pynslcd.py @@ -178,10 +178,13 @@ def getpeercred(fd): """Return uid, gid and pid of calling application.""" import struct import socket - SO_PEERCRED = getattr(socket, 'SO_PEERCRED', 17) - creds = fd.getsockopt(socket.SOL_SOCKET, SO_PEERCRED, struct.calcsize('3i')) - pid, uid, gid = struct.unpack('3i', creds) - return uid, gid, pid + try: + SO_PEERCRED = getattr(socket, 'SO_PEERCRED', 17) + creds = fd.getsockopt(socket.SOL_SOCKET, SO_PEERCRED, struct.calcsize('3i')) + pid, uid, gid = struct.unpack('3i', creds) + return uid, gid, pid + except socket.error: + return None, None, None handlers = {} @@ -210,11 +213,8 @@ def acceptconnection(session): # indicate new connection to logging module (generates unique id) log_newsession() # log connection - try: - uid, gid, pid = getpeercred(conn) - logging.debug('connection from pid=%r uid=%r gid=%r', pid, uid, gid) - except: - raise # FIXME: handle exception gracefully + uid, gid, pid = getpeercred(conn) + logging.debug('connection from pid=%r uid=%r gid=%r', pid, uid, gid) # create a stream object fp = TIOStream(conn) # read request -- cgit v1.2.3