Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Jajcus/pyxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacek Konieczny <jajcus@jajcus.net>2011-05-08 15:00:52 +0400
committerJacek Konieczny <jajcus@jajcus.net>2011-05-08 15:00:52 +0400
commiteb2e61c062654fe7b8318706e9c0b6e494d8b23e (patch)
treeb3ea11a213a499b9eca29cc0f3d2c5848f2f16e6
parentd00f12866504a34e144f61781d74b467e4484a11 (diff)
Check socket.send() result
Check socket.send() result and loop until all data has been sent. closes #37
-rw-r--r--pyxmpp/streambase.py4
-rw-r--r--pyxmpp/streamtls.py4
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