summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraylu <raylu@mixpanel.com>2013-01-11 17:14:13 +0400
committerSergey Shepelev <temotor@gmail.com>2013-01-12 03:55:18 +0400
commit675a2df36b91ec6b8b54b527786d2af312f6e74e (patch)
tree4edd5be264066729728d25e1b7e0ccad97b32f42
parentc8418a10e4c750e7df6bc036d872f1395d21cc24 (diff)
downloadeventlet-675a2df36b91ec6b8b54b527786d2af312f6e74e.tar.gz
ssl: socket.sendall(): trampoline if sent 0 bytes; fixes CPU burn
https://bitbucket.org/which_linden/eventlet/issue/134/greenssl-performance-issues
-rw-r--r--eventlet/green/ssl.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py
index 88c47a3..6848c1d 100644
--- a/eventlet/green/ssl.py
+++ b/eventlet/green/ssl.py
@@ -130,6 +130,8 @@ class GreenSSLSocket(__ssl.SSLSocket):
while (count < amount):
v = self.send(data[count:])
count += v
+ if v == 0:
+ trampoline(self, write=True, timeout_exc=timeout_exc('timed out'))
return amount
else:
while True: