aboutsummaryrefslogtreecommitdiffstats
path: root/netlib
diff options
context:
space:
mode:
Diffstat (limited to 'netlib')
-rw-r--r--netlib/tcp.py12
-rw-r--r--netlib/wsgi.py3
2 files changed, 11 insertions, 4 deletions
diff --git a/netlib/tcp.py b/netlib/tcp.py
index c8ffefdf..aa923fdd 100644
--- a/netlib/tcp.py
+++ b/netlib/tcp.py
@@ -61,7 +61,10 @@ class TCPClient:
if sni:
self.connection.set_tlsext_host_name(sni)
self.connection.set_connect_state()
- self.connection.do_handshake()
+ try:
+ self.connection.do_handshake()
+ except SSL.Error, v:
+ raise NetLibError("SSL handshake error: %s"%str(v))
self.cert = self.connection.get_peer_certificate()
self.rfile = FileLike(self.connection)
self.wfile = FileLike(self.connection)
@@ -82,7 +85,7 @@ class BaseHandler:
The instantiator is expected to call the handle() and finish() methods.
"""
rbufsize = -1
- wbufsize = 0
+ wbufsize = -1
def __init__(self, connection, client_address, server):
self.connection = connection
self.rfile = self.connection.makefile('rb', self.rbufsize)
@@ -100,7 +103,10 @@ class BaseHandler:
self.connection = SSL.Connection(ctx, self.connection)
self.connection.set_accept_state()
# SNI callback happens during do_handshake()
- self.connection.do_handshake()
+ try:
+ self.connection.do_handshake()
+ except SSL.Error, v:
+ raise NetLibError("SSL handshake error: %s"%str(v))
self.rfile = FileLike(self.connection)
self.wfile = FileLike(self.connection)
diff --git a/netlib/wsgi.py b/netlib/wsgi.py
index 755bea5a..6fe6b6b3 100644
--- a/netlib/wsgi.py
+++ b/netlib/wsgi.py
@@ -104,7 +104,8 @@ class WSGIAdaptor:
soc.write(str(h))
soc.write("\r\n")
state["headers_sent"] = True
- soc.write(data)
+ if data:
+ soc.write(data)
soc.flush()
def start_response(status, headers, exc_info=None):