mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-03-15 00:29:19 +01:00
fix crash triggered by port scans closing socket
This commit is contained in:
parent
535eb62928
commit
534ad8dfed
@ -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
|
||||
|
||||
peer = sock.getpeername()
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user