[Python-checkins] cpython (merge 3.2 -> 3.3): Merge: #17443: Fix buffering in IMAP4_stream.
r.david.murray
python-checkins at python.org
Tue Mar 19 18:57:53 CET 2013
http://hg.python.org/cpython/rev/0baa65b3ef76
changeset: 82762:0baa65b3ef76
branch: 3.3
parent: 82759:eff77a3ee938
parent: 82761:c5aacf9d1cdc
user: R David Murray <rdmurray at bitdance.com>
date: Tue Mar 19 13:56:01 2013 -0400
summary:
Merge: #17443: Fix buffering in IMAP4_stream.
In Python2 Popen uses *FILE objects, which wind up buffering even though
subprocess defaults to no buffering. In Python3, subprocess streams really
are unbuffered by default, but the imaplib code assumes read is buffered. This
patch uses the default buffer size from the io module to get buffered streams
from Popen.
Much debugging work and patch by Diane Trout.
The imap protocol is too complicated to write a test for this simple
change with our current level of test infrastructure.
files:
Lib/imaplib.py | 3 +++
Misc/ACKS | 1 +
Misc/NEWS | 4 ++++
3 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -24,6 +24,8 @@
import binascii, errno, random, re, socket, subprocess, sys, time, calendar
from datetime import datetime, timezone, timedelta
+from io import DEFAULT_BUFFER_SIZE
+
try:
import ssl
HAVE_SSL = True
@@ -1244,6 +1246,7 @@
self.sock = None
self.file = None
self.process = subprocess.Popen(self.command,
+ bufsize=DEFAULT_BUFFER_SIZE,
stdin=subprocess.PIPE, stdout=subprocess.PIPE,
shell=True, close_fds=True)
self.writefile = self.process.stdin
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1216,6 +1216,7 @@
Matthias Troffaes
Tom Tromey
John Tromp
+Diane Trout
Jason Trowbridge
Brent Tubbs
Anthony Tuininga
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -193,6 +193,10 @@
Library
-------
+- Issue #17443: impalib.IMAP4_stream was using the default unbuffered IO
+ in subprocess, but the imap code assumes buffered IO. In Python2 this
+ worked by accident. IMAP4_stream now explicitly uses buffered IO.
+
- Issue #17476: Fixed regression relative to Python2 in undocumented pydoc
'allmethods'; it was missing unbound methods on the class.
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list