diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2013-08-25 19:09:17 +0200 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2013-08-25 19:20:02 +0200 |
commit | 321d8a3574ca9165e882eae1035d4924d786af95 (patch) | |
tree | bee9ea8efba61e174e0cf8f77af082ea3c21c638 /pynslcd | |
parent | f18729e714c291257181023d65c0393cd022ca85 (diff) |
Handle failure of getpeercred more gracefully
Diffstat (limited to 'pynslcd')
-rwxr-xr-x | pynslcd/pynslcd.py | 18 |
1 files changed, 9 insertions, 9 deletions
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 |