[Python-checkins] r86997 - in python/branches/py3k: Lib/test/test_ssl.py Misc/NEWS Modules/_ssl.c Modules/socketmodule.c Modules/socketmodule.h
antoine.pitrou
python-checkins at python.org
Fri Dec 3 20:59:41 CET 2010
Author: antoine.pitrou
Date: Fri Dec 3 20:59:41 2010
New Revision: 86997
Log:
Issue #10272: The ssl module now raises socket.timeout instead of a generic
SSLError on socket timeouts.
Modified:
python/branches/py3k/Lib/test/test_ssl.py
python/branches/py3k/Misc/NEWS
python/branches/py3k/Modules/_ssl.c
python/branches/py3k/Modules/socketmodule.c
python/branches/py3k/Modules/socketmodule.h
Modified: python/branches/py3k/Lib/test/test_ssl.py
==============================================================================
--- python/branches/py3k/Lib/test/test_ssl.py (original)
+++ python/branches/py3k/Lib/test/test_ssl.py Fri Dec 3 20:59:41 2010
@@ -1499,7 +1499,7 @@
c.settimeout(0.2)
c.connect((host, port))
# Will attempt handshake and time out
- self.assertRaisesRegex(ssl.SSLError, "timed out",
+ self.assertRaisesRegex(socket.timeout, "timed out",
ssl.wrap_socket, c)
finally:
c.close()
@@ -1508,7 +1508,7 @@
c = ssl.wrap_socket(c)
c.settimeout(0.2)
# Will attempt handshake and time out
- self.assertRaisesRegex(ssl.SSLError, "timed out",
+ self.assertRaisesRegex(socket.timeout, "timed out",
c.connect, (host, port))
finally:
c.close()
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Fri Dec 3 20:59:41 2010
@@ -35,6 +35,9 @@
Library
-------
+- Issue #10272: The ssl module now raises socket.timeout instead of a generic
+ SSLError on socket timeouts.
+
- Issue #10528: Allow translators to reorder placeholders in localizable
messages from argparse.
Modified: python/branches/py3k/Modules/_ssl.c
==============================================================================
--- python/branches/py3k/Modules/_ssl.c (original)
+++ python/branches/py3k/Modules/_ssl.c Fri Dec 3 20:59:41 2010
@@ -370,7 +370,7 @@
sockstate = SOCKET_OPERATION_OK;
}
if (sockstate == SOCKET_HAS_TIMED_OUT) {
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
ERRSTR("The handshake operation timed out"));
goto error;
} else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
@@ -1075,7 +1075,7 @@
sockstate = check_socket_and_wait_for_timeout(sock, 1);
if (sockstate == SOCKET_HAS_TIMED_OUT) {
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
"The write operation timed out");
goto error;
} else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
@@ -1104,7 +1104,7 @@
sockstate = SOCKET_OPERATION_OK;
}
if (sockstate == SOCKET_HAS_TIMED_OUT) {
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
"The write operation timed out");
goto error;
} else if (sockstate == SOCKET_HAS_BEEN_CLOSED) {
@@ -1211,7 +1211,7 @@
if (!count) {
sockstate = check_socket_and_wait_for_timeout(sock, 0);
if (sockstate == SOCKET_HAS_TIMED_OUT) {
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
"The read operation timed out");
goto error;
} else if (sockstate == SOCKET_TOO_LARGE_FOR_SELECT) {
@@ -1245,7 +1245,7 @@
sockstate = SOCKET_OPERATION_OK;
}
if (sockstate == SOCKET_HAS_TIMED_OUT) {
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
"The read operation timed out");
goto error;
} else if (sockstate == SOCKET_IS_NONBLOCKING) {
@@ -1340,10 +1340,10 @@
break;
if (sockstate == SOCKET_HAS_TIMED_OUT) {
if (ssl_err == SSL_ERROR_WANT_READ)
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
"The read operation timed out");
else
- PyErr_SetString(PySSLErrorObject,
+ PyErr_SetString(PySocketModule.timeout_error,
"The write operation timed out");
goto error;
}
Modified: python/branches/py3k/Modules/socketmodule.c
==============================================================================
--- python/branches/py3k/Modules/socketmodule.c (original)
+++ python/branches/py3k/Modules/socketmodule.c Fri Dec 3 20:59:41 2010
@@ -4358,6 +4358,7 @@
PySocketModule_APIObject PySocketModuleAPI =
{
&sock_type,
+ NULL,
NULL
};
@@ -4425,6 +4426,7 @@
socket_error, NULL);
if (socket_timeout == NULL)
return NULL;
+ PySocketModuleAPI.timeout_error = socket_timeout;
Py_INCREF(socket_timeout);
PyModule_AddObject(m, "timeout", socket_timeout);
Py_INCREF((PyObject *)&sock_type);
Modified: python/branches/py3k/Modules/socketmodule.h
==============================================================================
--- python/branches/py3k/Modules/socketmodule.h (original)
+++ python/branches/py3k/Modules/socketmodule.h Fri Dec 3 20:59:41 2010
@@ -196,6 +196,7 @@
typedef struct {
PyTypeObject *Sock_Type;
PyObject *error;
+ PyObject *timeout_error;
} PySocketModule_APIObject;
#define PySocketModule_ImportModuleAndAPI() PyCapsule_Import(PySocket_CAPSULE_NAME, 1)
More information about the Python-checkins
mailing list