mirror of
https://github.com/python/cpython.git
synced 2024-11-28 12:31:14 +08:00
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.
This commit is contained in:
parent
0072d5aa33
commit
42dd01add5
@ -575,13 +575,16 @@ class FakeSocket:
|
||||
if mode != 'r' and mode != 'rb':
|
||||
raise UnimplementedFileMode()
|
||||
|
||||
msgbuf = ""
|
||||
msgbuf = []
|
||||
while 1:
|
||||
try:
|
||||
msgbuf = msgbuf + self.__ssl.read()
|
||||
buf = self.__ssl.read()
|
||||
except socket.sslerror, msg:
|
||||
break
|
||||
return StringIO(msgbuf)
|
||||
if buf == '':
|
||||
break
|
||||
msgbuf.append(buf)
|
||||
return StringIO("".join(msgbuf))
|
||||
|
||||
def send(self, stuff, flags = 0):
|
||||
return self.__ssl.write(stuff)
|
||||
@ -809,6 +812,7 @@ def test():
|
||||
|
||||
if hasattr(socket, 'ssl'):
|
||||
host = 'sourceforge.net'
|
||||
selector = '/projects/python'
|
||||
hs = HTTPS()
|
||||
hs.connect(host)
|
||||
hs.putrequest('GET', selector)
|
||||
|
@ -2165,17 +2165,14 @@ static PyObject *SSL_SSLread(SSLObject *self, PyObject *args)
|
||||
res = SSL_get_error(self->ssl, count);
|
||||
|
||||
switch (res) {
|
||||
case 0: /* Good return value! */
|
||||
case SSL_ERROR_NONE:
|
||||
assert(count > 0);
|
||||
break;
|
||||
case 6:
|
||||
PyErr_SetString(SSLErrorObject, "EOF");
|
||||
Py_DECREF(buf);
|
||||
return NULL;
|
||||
case SSL_ERROR_ZERO_RETURN: /* normal EOF */
|
||||
assert(count == 0);
|
||||
break;
|
||||
case 5:
|
||||
default:
|
||||
return PyErr_SetFromErrno(SSLErrorObject);
|
||||
break;
|
||||
}
|
||||
|
||||
fflush(stderr);
|
||||
|
Loading…
Reference in New Issue
Block a user