mirror of
https://github.com/sshuttle/sshuttle.git
synced 2025-02-07 14:10:08 +01:00
If we get EPIPE on uwrite(), don't close, just do nowrite().
EPIPE doesn't mean the whole socket is dead, it just means we can't write to it. Maybe there's still data waiting to be read, though.
This commit is contained in:
parent
b7f1530aef
commit
38bb7f3c21
11
ssnet.py
11
ssnet.py
@ -163,9 +163,14 @@ class SockWrapper:
|
|||||||
try:
|
try:
|
||||||
return _nb_clean(os.write, self.wsock.fileno(), buf)
|
return _nb_clean(os.write, self.wsock.fileno(), buf)
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
# unexpected error... stream is dead
|
if e.errno == errno.EPIPE:
|
||||||
self.seterr('uwrite: %s' % e)
|
debug1('%r: uwrite: got EPIPE\n' % self)
|
||||||
return 0
|
self.nowrite()
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
# unexpected error... stream is dead
|
||||||
|
self.seterr('uwrite: %s' % e)
|
||||||
|
return 0
|
||||||
|
|
||||||
def write(self, buf):
|
def write(self, buf):
|
||||||
assert(buf)
|
assert(buf)
|
||||||
|
Loading…
Reference in New Issue
Block a user