diff options
author | Jacek Konieczny <jajcus@jajcus.net> | 2011-05-08 15:00:52 +0400 |
---|---|---|
committer | Jacek Konieczny <jajcus@jajcus.net> | 2011-05-08 15:00:52 +0400 |
commit | eb2e61c062654fe7b8318706e9c0b6e494d8b23e (patch) | |
tree | b3ea11a213a499b9eca29cc0f3d2c5848f2f16e6 /pyxmpp | |
parent | d00f12866504a34e144f61781d74b467e4484a11 (diff) |
Check socket.send() result
Check socket.send() result and loop until all data has been sent.
closes #37
Diffstat (limited to 'pyxmpp')
-rw-r--r-- | pyxmpp/streambase.py | 4 | ||||
-rw-r--r-- | 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 |