[Python-checkins] r47215 - in python/trunk: Lib/telnetlib.py Misc/NEWS
martin.v.loewis
python-checkins at python.org
Mon Jul 3 15:01:36 CEST 2006
Author: martin.v.loewis
Date: Mon Jul 3 15:01:35 2006
New Revision: 47215
Modified:
python/trunk/Lib/telnetlib.py
python/trunk/Misc/NEWS
Log:
Patch #825417: Fix timeout processing in expect,
read_until. Will backport to 2.4.
Modified: python/trunk/Lib/telnetlib.py
==============================================================================
--- python/trunk/Lib/telnetlib.py (original)
+++ python/trunk/Lib/telnetlib.py Mon Jul 3 15:01:35 2006
@@ -311,6 +311,8 @@
s_args = s_reply
if timeout is not None:
s_args = s_args + (timeout,)
+ from time import time
+ time_start = time()
while not self.eof and select.select(*s_args) == s_reply:
i = max(0, len(self.cookedq)-n)
self.fill_rawq()
@@ -321,6 +323,11 @@
buf = self.cookedq[:i]
self.cookedq = self.cookedq[i:]
return buf
+ if timeout is not None:
+ elapsed = time() - time_start
+ if elapsed >= timeout:
+ break
+ s_args = s_reply + (timeout-elapsed,)
return self.read_very_lazy()
def read_all(self):
@@ -601,6 +608,9 @@
if not hasattr(list[i], "search"):
if not re: import re
list[i] = re.compile(list[i])
+ if timeout is not None:
+ from time import time
+ time_start = time()
while 1:
self.process_rawq()
for i in indices:
@@ -613,7 +623,11 @@
if self.eof:
break
if timeout is not None:
- r, w, x = select.select([self.fileno()], [], [], timeout)
+ elapsed = time() - time_start
+ if elapsed >= timeout:
+ break
+ s_args = ([self.fileno()], [], [], timeout-elapsed)
+ r, w, x = select.select(*s_args)
if not r:
break
self.fill_rawq()
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Mon Jul 3 15:01:35 2006
@@ -22,6 +22,9 @@
Library
-------
+- Bug #822974: Honor timeout in telnetlib.{expect,read_until}
+ even if some data are received.
+
- Bug #1267547: Put proper recursive setup.py call into the
spec file generated by bdist_rpm.
More information about the Python-checkins
mailing list