Commit 534ad8df authored by Mark Heiges's avatar Mark Heiges Committed by Brian May

fix crash triggered by port scans closing socket

parent 535eb629
......@@ -3,6 +3,7 @@ import sys
import platform
import re
import socket
import errno
import struct
import subprocess as ssubprocess
import shlex
......@@ -423,7 +424,14 @@ class Method(BaseMethod):
def get_tcp_dstip(self, sock):
pfile = self.firewall.pfile
try:
peer = sock.getpeername()
except socket.error:
_, e = sys.exc_info()[:2]
if e.args[0] == errno.EINVAL:
debug2("get_tcp_dstip error: sock.getpeername() %s\nsocket is probably closed.\n" % e)
return sock.getsockname()
proxy = sock.getsockname()
argv = (sock.family, socket.IPPROTO_TCP,
......
......@@ -96,7 +96,10 @@ def _try_peername(sock):
return '%s:%s' % (pn[0], pn[1])
except socket.error:
_, e = sys.exc_info()[:2]
if e.args[0] not in (errno.ENOTCONN, errno.ENOTSOCK):
if e.args[0] == errno.EINVAL:
debug2("_try_peername error: sock.getpeername() %s\nsocket is probably closed.\n" % e)
pass
elif e.args[0] not in (errno.ENOTCONN, errno.ENOTSOCK):
raise
except AttributeError:
pass
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment