diff options
| author | xrg <> | 2009-11-20 20:01:04 +0530 |
|---|---|---|
| committer | Harry (Open ERP) <hmo@tinyerp.com> | 2009-11-20 20:01:04 +0530 |
| commit | dad1ff955b636ccbad687f2f3f731ee8f512bd6f (patch) | |
| tree | e3405d96ef59f72094e5e300db24fb713e2b8838 /bin/tiny_socket.py | |
| parent | b2a9a804ebf6c93ebe98751dd6b1008b8fe09306 (diff) | |
| parent | f566ea57a83bab87a8c7fa9743d190b4520c89e2 (diff) | |
[merge] merge from lp:~xrg/openobject-server/optimize-5.0 and removed some confilts
bzr revid: hmo@tinyerp.com-20091120143104-tb6136unkdw7yfy9
Diffstat (limited to 'bin/tiny_socket.py')
| -rw-r--r-- | bin/tiny_socket.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/bin/tiny_socket.py b/bin/tiny_socket.py index 746d6c22671..cb51aefc140 100644 --- a/bin/tiny_socket.py +++ b/bin/tiny_socket.py @@ -33,11 +33,13 @@ class Myexception(Exception): class mysocket: def __init__(self, sock=None): if sock is None: - self.sock = socket.socket( - socket.AF_INET, socket.SOCK_STREAM) + self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) else: self.sock = sock - self.sock.settimeout(120) + # self.sock.settimeout(120) + # prepare this socket for long operations: it may block for infinite + # time, but should exit as soon as the net is down + self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) def connect(self, host, port=False): if not port: protocol, buf = host.split('//') @@ -61,8 +63,8 @@ class mysocket: buf='' while len(buf) < 8: chunk = self.sock.recv(8 - len(buf)) - if chunk == '': - raise RuntimeError, "socket connection broken" + if not chunk: + raise socket.timeout buf += chunk size = int(buf) buf = self.sock.recv(1) @@ -73,8 +75,8 @@ class mysocket: msg = '' while len(msg) < size: chunk = self.sock.recv(size-len(msg)) - if chunk == '': - raise RuntimeError, "socket connection broken" + if not chunk: + raise socket.timeout msg = msg + chunk msgio = cStringIO.StringIO(msg) unpickler = cPickle.Unpickler(msgio) |
