---- Python.org/Lib/test/test_socket_ssl.py.org 2005-12-14 23:04:19.000000000 +0100
-+++ Python/Lib/test/test_socket_ssl.py 2005-12-14 23:06:07.000000000 +0100
+diff -ur Python-2.4.3.org/Lib/test/test_socket_ssl.py Python-2.4.3/Lib/test/test_socket_ssl.py
+--- Python-2.4.3.org/Lib/test/test_socket_ssl.py 2003-07-01 16:49:32.000000000 +0200
++++ Python-2.4.3/Lib/test/test_socket_ssl.py 2006-03-30 22:23:37.724691000 +0200
@@ -27,6 +27,19 @@
buf = f.read()
f.close()
if __name__ == "__main__":
test_main()
---- Python.opg/Modules/_ssl.c.org 2005-12-15 18:17:03.000000000 +0100
-+++ Python/Modules/_ssl.c 2005-12-15 18:18:42.000000000 +0100
-@@ -455,6 +455,7 @@
+diff -ur Python-2.4.3.org/Modules/_ssl.c Python-2.4.3/Modules/_ssl.c
+--- Python-2.4.3.org/Modules/_ssl.c 2006-02-13 01:37:09.000000000 +0100
++++ Python-2.4.3/Modules/_ssl.c 2006-03-30 22:25:51.753067250 +0200
+@@ -468,6 +468,7 @@
int len = 1024;
int sockstate;
int err;
if (!PyArg_ParseTuple(args, "|i:read", &len))
return NULL;
-@@ -462,11 +463,17 @@
+@@ -475,14 +476,20 @@
if (!(buf = PyString_FromStringAndSize((char *) 0, len)))
return NULL;
- PyErr_SetString(PySSLErrorObject, "The read operation timed out");
- Py_DECREF(buf);
- return NULL;
+- } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
+- PyErr_SetString(PySSLErrorObject, "Underlying socket too large for select().");
+- return NULL;
+ Py_BEGIN_ALLOW_THREADS
+ pending = SSL_pending(self->ssl);
+ Py_END_ALLOW_THREADS
+ PyErr_SetString(PySSLErrorObject, "The read operation timed out");
+ Py_DECREF(buf);
+ return NULL;
++ } else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
++ PyErr_SetString(PySSLErrorObject, "Underlying socket too large for select().");
++ return NULL;
+ }
}
do {
err = 0;
-