diff options
author | Jesse Noller <jnoller@gmail.com> | 2009-01-19 16:23:53 (GMT) |
---|---|---|
committer | Jesse Noller <jnoller@gmail.com> | 2009-01-19 16:23:53 (GMT) |
commit | 6214edd1bbf8aece44215b6a47fb2be4df73d42e (patch) | |
tree | 29c89e73cfb551883794d0c9922dd566b3864b60 /Modules/_multiprocessing | |
parent | 7aedf11e57bf38e992ebe6c0ae86167ae9b79412 (diff) | |
download | cpython-6214edd1bbf8aece44215b6a47fb2be4df73d42e.zip cpython-6214edd1bbf8aece44215b6a47fb2be4df73d42e.tar.gz cpython-6214edd1bbf8aece44215b6a47fb2be4df73d42e.tar.bz2 |
merge r68768 to py3k
Diffstat (limited to 'Modules/_multiprocessing')
-rw-r--r-- | Modules/_multiprocessing/connection.h | 2 | ||||
-rw-r--r-- | Modules/_multiprocessing/socket_connection.c | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/Modules/_multiprocessing/connection.h b/Modules/_multiprocessing/connection.h index 6e82345..105d59c 100644 --- a/Modules/_multiprocessing/connection.h +++ b/Modules/_multiprocessing/connection.h @@ -362,7 +362,7 @@ connection_poll(ConnectionObject *self, PyObject *args) } Py_BEGIN_ALLOW_THREADS - res = conn_poll(self, timeout); + res = conn_poll(self, timeout, _save); Py_END_ALLOW_THREADS switch (res) { diff --git a/Modules/_multiprocessing/socket_connection.c b/Modules/_multiprocessing/socket_connection.c index e5d2d15..ad4005b 100644 --- a/Modules/_multiprocessing/socket_connection.c +++ b/Modules/_multiprocessing/socket_connection.c @@ -153,11 +153,23 @@ conn_recv_string(ConnectionObject *conn, char *buffer, */ static int -conn_poll(ConnectionObject *conn, double timeout) +conn_poll(ConnectionObject *conn, double timeout, PyThreadState *_save) { int res; fd_set rfds; + /* + * Verify the handle, issue 3321. Not required for windows. + */ + #ifndef MS_WINDOWS + if (((int)conn->handle) < 0 || ((int)conn->handle) >= FD_SETSIZE) { + Py_BLOCK_THREADS + PyErr_SetString(PyExc_IOError, "handle out of range in select()"); + Py_UNBLOCK_THREADS + return MP_EXCEPTION_HAS_BEEN_SET; + } + #endif + FD_ZERO(&rfds); FD_SET((SOCKET)conn->handle, &rfds); |