forked from pool/python-eventlet
68 lines
2.4 KiB
Diff
68 lines
2.4 KiB
Diff
![]() |
From a28a275393d3c3ae3c3a5341cc4764fad21be3e5 Mon Sep 17 00:00:00 2001
|
||
|
From: Sergey Shepelev <temotor@gmail.com>
|
||
|
Date: Mon, 27 Aug 2018 00:22:35 +0500
|
||
|
Subject: [PATCH 1/3] ssl: connect used non-monotonic time.time() for timeout
|
||
|
(#520)
|
||
|
|
||
|
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
|
||
|
---
|
||
|
eventlet/green/ssl.py | 10 +++++-----
|
||
|
1 file 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):
|
||
|
--
|
||
|
2.21.0
|
||
|
|