fix write()

This commit is contained in:
benoitc 2010-01-18 17:58:00 +01:00
parent b6e52bef8a
commit 6714b30ddc
2 changed files with 5 additions and 7 deletions

View File

@ -70,19 +70,18 @@ def read_partial(sock, length):
def write(sock, data): def write(sock, data):
buf = "" buf = ""
buf += data buf += data
dlen = len(data)
while buf: while buf:
try: try:
bytes = sock.send(buf) bytes = sock.send(buf)
if bytes < dlen: if bytes < len(buf):
buf = buf[bytes:] buf = buf[bytes:]
continue continue
return dlen return bytes
except socket.error, e: except socket.error, e:
if e[0] in (errno.EWOULDBLOCK, errno.EAGAIN): if e[0] in (errno.EWOULDBLOCK, errno.EAGAIN):
break break
elif e[0] in (errno.EPIPE,): elif e[0] in (errno.EPIPE,):
continue break
raise raise
def write_nonblock(sock, data): def write_nonblock(sock, data):

View File

@ -96,7 +96,7 @@ class Worker(object):
while self.alive: while self.alive:
try: try:
ret = select.select([self.socket], [], [], 15) ret = select.select([self.socket], [], [], 2.0)
if ret[0]: if ret[0]:
break break
except select.error, e: except select.error, e:
@ -125,8 +125,7 @@ class Worker(object):
spinner = (spinner+1) % 2 spinner = (spinner+1) % 2
self._fchmod(spinner) self._fchmod(spinner)
except socket.error, e: except socket.error, e:
if e[0] in [errno.EAGAIN, errno.ECONNABORTED, if e[0] in [errno.EAGAIN, errno.ECONNABORTED]:
errno.EWOULDBLOCK]:
break # Uh oh! break # Uh oh!
raise raise