diff options
| author | Kashirin Alex <kashirin.alex@gmail.com> | 2018-08-26 16:47:29 +0500 |
|---|---|---|
| committer | Sergey Shepelev <temotor@gmail.com> | 2018-08-26 21:48:44 +0500 |
| commit | b9ff8e53c2b5a61e4dd28aaaebaa4c73fef246cb (patch) | |
| tree | bf01bb8a1494d4c2e77e2226a31bec3cba4d8530 | |
| parent | 96fccf3dd88fb60368c5d1ab49d8b9eb85e99502 (diff) | |
| download | eventlet-ssl-connect-monotonic-time.tar.gz | |
ssl: connect used non-monotonic time.time() for timeoutssl-connect-monotonic-time
Origin: https://github.com/eventlet/eventlet/pull/517
Related:
https://github.com/eventlet/eventlet/pull/388
https://github.com/eventlet/eventlet/pull/303
https://github.com/eventlet/eventlet/issues/270
https://github.com/eventlet/eventlet/issues/132
| -rw-r--r-- | eventlet/green/ssl.py | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/eventlet/green/ssl.py b/eventlet/green/ssl.py index 53ee9a3..577afba 100644 --- a/eventlet/green/ssl.py +++ b/eventlet/green/ssl.py @@ -6,9 +6,8 @@ slurp_properties(__ssl, globals(), srckeys=dir(__ssl)) import errno import functools import sys -import time -from eventlet import greenio +from eventlet import greenio, hubs from eventlet.greenio import ( set_nonblocking, GreenSocket, CONNECT_ERR, CONNECT_SUCCESS, ) @@ -264,6 +263,7 @@ class GreenSSLSocket(_original_sslsocket): if self.act_non_blocking: return real_connect(self, addr) else: + clock = hubs.get_hub().clock # *NOTE: gross, copied code from greenio because it's not factored # well enough to reuse if self.gettimeout() is None: @@ -278,7 +278,7 @@ class GreenSSLSocket(_original_sslsocket): else: raise else: - end = time.time() + self.gettimeout() + end = clock() + self.gettimeout() while True: try: real_connect(self, addr) @@ -286,12 +286,12 @@ class GreenSSLSocket(_original_sslsocket): if get_errno(exc) in CONNECT_ERR: trampoline( self, write=True, - timeout=end - time.time(), timeout_exc=timeout_exc('timed out')) + timeout=end - clock(), timeout_exc=timeout_exc('timed out')) elif get_errno(exc) in CONNECT_SUCCESS: return else: raise - if time.time() >= end: + if clock() >= end: raise timeout_exc('timed out') def connect(self, addr): |
