From eb2e61c062654fe7b8318706e9c0b6e494d8b23e Mon Sep 17 00:00:00 2001 From: Jacek Konieczny Date: Sun, 8 May 2011 13:00:52 +0200 Subject: Check socket.send() result Check socket.send() result and loop until all data has been sent. closes #37 --- pyxmpp/streambase.py | 4 +++- pyxmpp/streamtls.py | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pyxmpp/streambase.py b/pyxmpp/streambase.py index df7ea12..252feaf 100644 --- a/pyxmpp/streambase.py +++ b/pyxmpp/streambase.py @@ -522,7 +522,9 @@ class StreamBase(StanzaProcessor,xmlextra.StreamHandler): """Same as `Stream.write_raw` but assume `self.lock` is acquired.""" logging.getLogger("pyxmpp.Stream.out").debug("OUT: %r",data) try: - self.socket.send(data) + while data: + sent = self.socket.send(data) + data = data[sent:] except (IOError,OSError,socket.error),e: raise FatalStreamError("IO Error: "+str(e)) diff --git a/pyxmpp/streamtls.py b/pyxmpp/streamtls.py index 17be764..c136846 100644 --- a/pyxmpp/streamtls.py +++ b/pyxmpp/streamtls.py @@ -148,7 +148,9 @@ class StreamTLSMixIn: try: while self.socket: try: - self.socket.send(data) + while data: + sent = self.socket.send(data) + data = data[sent:] except SSLError, err: if err.args[0] == ssl.SSL_ERROR_WANT_WRITE: continue -- cgit v1.2.3