mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-05-13 12:34:34 +02: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 platform
|
||||||
import re
|
import re
|
||||||
import socket
|
import socket
|
||||||
|
import errno
|
||||||
import struct
|
import struct
|
||||||
import subprocess as ssubprocess
|
import subprocess as ssubprocess
|
||||||
import shlex
|
import shlex
|
||||||
@ -423,7 +424,14 @@ class Method(BaseMethod):
|
|||||||
def get_tcp_dstip(self, sock):
|
def get_tcp_dstip(self, sock):
|
||||||
pfile = self.firewall.pfile
|
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()
|
proxy = sock.getsockname()
|
||||||
|
|
||||||
argv = (sock.family, socket.IPPROTO_TCP,
|
argv = (sock.family, socket.IPPROTO_TCP,
|
||||||
|
@ -96,7 +96,10 @@ def _try_peername(sock):
|
|||||||
return '%s:%s' % (pn[0], pn[1])
|
return '%s:%s' % (pn[0], pn[1])
|
||||||
except socket.error:
|
except socket.error:
|
||||||
_, e = sys.exc_info()[:2]
|
_, 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
|
raise
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
Loading…
Reference in New Issue
Block a user