Commit de3c25ec authored by Jeremy Hylton's avatar Jeremy Hylton

An ssl-wrapped socket now returns '' on EOF, just like a regular

socket -- as suggested by Clarence Gardner.

Fix httplib to comply with the new ssl-socket interface.
parent 0058961f
...@@ -575,13 +575,16 @@ class FakeSocket: ...@@ -575,13 +575,16 @@ class FakeSocket:
if mode != 'r' and mode != 'rb': if mode != 'r' and mode != 'rb':
raise UnimplementedFileMode() raise UnimplementedFileMode()
msgbuf = "" msgbuf = []
while 1: while 1:
try: try:
msgbuf = msgbuf + self.__ssl.read() buf = self.__ssl.read()
except socket.sslerror, msg: except socket.sslerror, msg:
break break
return StringIO(msgbuf) if buf == '':
break
msgbuf.append(buf)
return StringIO("".join(msgbuf))
def send(self, stuff, flags = 0): def send(self, stuff, flags = 0):
return self.__ssl.write(stuff) return self.__ssl.write(stuff)
...@@ -809,6 +812,7 @@ def test(): ...@@ -809,6 +812,7 @@ def test():
if hasattr(socket, 'ssl'): if hasattr(socket, 'ssl'):
host = 'sourceforge.net' host = 'sourceforge.net'
selector = '/projects/python'
hs = HTTPS() hs = HTTPS()
hs.connect(host) hs.connect(host)
hs.putrequest('GET', selector) hs.putrequest('GET', selector)
......
...@@ -2165,17 +2165,14 @@ static PyObject *SSL_SSLread(SSLObject *self, PyObject *args) ...@@ -2165,17 +2165,14 @@ static PyObject *SSL_SSLread(SSLObject *self, PyObject *args)
res = SSL_get_error(self->ssl, count); res = SSL_get_error(self->ssl, count);
switch (res) { switch (res) {
case 0: /* Good return value! */ case SSL_ERROR_NONE:
assert(count > 0);
break; break;
case 6: case SSL_ERROR_ZERO_RETURN: /* normal EOF */
PyErr_SetString(SSLErrorObject, "EOF"); assert(count == 0);
Py_DECREF(buf);
return NULL;
break; break;
case 5:
default: default:
return PyErr_SetFromErrno(SSLErrorObject); return PyErr_SetFromErrno(SSLErrorObject);
break;
} }
fflush(stderr); fflush(stderr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment