summaryrefslogtreecommitdiffstats
path: root/Modules/socketmodule.c
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2017-10-18 07:13:09 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2017-10-18 07:13:09 (GMT)
commit59af94fa61bf90adbe624508e909b5d6ef6e8464 (patch)
tree74ee9a80276bed8eb99229acf2fb071a1d341400 /Modules/socketmodule.c
parentec12df1e6e4d03a0d22956355308df695a8dff36 (diff)
downloadcpython-59af94fa61bf90adbe624508e909b5d6ef6e8464.zip
cpython-59af94fa61bf90adbe624508e909b5d6ef6e8464.tar.gz
cpython-59af94fa61bf90adbe624508e909b5d6ef6e8464.tar.bz2
bpo-31806: Use _PyTime_ROUND_TIMEOUT for the timeout argument parsing in more functions (#4026)
Fix timeout rounding in time.sleep(), threading.Lock.acquire() and socket.socket.settimeout() to round correctly negative timeouts between -1.0 and 0.0. The functions now block waiting for events as expected. Previously, the call was incorrectly non-blocking.
Diffstat (limited to 'Modules/socketmodule.c')
-rw-r--r--Modules/socketmodule.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 5df9d01..0758f9b 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -2539,7 +2539,7 @@ socket_parse_timeout(_PyTime_t *timeout, PyObject *timeout_obj)
}
if (_PyTime_FromSecondsObject(timeout,
- timeout_obj, _PyTime_ROUND_CEILING) < 0)
+ timeout_obj, _PyTime_ROUND_TIMEOUT) < 0)
return -1;
if (*timeout < 0) {
@@ -2548,10 +2548,10 @@ socket_parse_timeout(_PyTime_t *timeout, PyObject *timeout_obj)
}
#ifdef MS_WINDOWS
- overflow |= (_PyTime_AsTimeval(*timeout, &tv, _PyTime_ROUND_CEILING) < 0);
+ overflow |= (_PyTime_AsTimeval(*timeout, &tv, _PyTime_ROUND_TIMEOUT) < 0);
#endif
#ifndef HAVE_POLL
- ms = _PyTime_AsMilliseconds(*timeout, _PyTime_ROUND_CEILING);
+ ms = _PyTime_AsMilliseconds(*timeout, _PyTime_ROUND_TIMEOUT);
overflow |= (ms > INT_MAX);
#endif
if (overflow) {