[Python-bugs-list] [ python-Bugs-579107 ] https broken by recent httplib changes
noreply@sourceforge.net
noreply@sourceforge.net
Tue, 09 Jul 2002 05:35:20 -0700
Bugs item #579107, was opened at 2002-07-09 07:35
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=579107&group_id=5470
Category: Python Library
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Kevin Jacobs (jacobs99)
Assigned to: Nobody/Anonymous (nobody)
Summary: https broken by recent httplib changes
Initial Comment:
Here is code that has worked previously, but does not in
the current CVS:
import urllib
def get(url):
return urllib.urlopen(url).read()
u = get('http://dbserv2.theopalgroup.com/mediumfile')
hlen = len(u)
u = get('https://dbserv2.theopalgroup.com/mediumfile')
slen = len(u)
print "HTTP len = %d, HTTPS len = %d" % (hlen,slen)
Here are the results of running this code for various
python versions:
> python2.0 testhttps.py
HTTP len = 37140, HTTPS len = 37140
> python2.1 testhttps.py
HTTP len = 37140, HTTPS len = 37140
> python2.2 testhttps.py
HTTP len = 37140, HTTPS len = 37140
> python2.3 testhttps.py
HTTP len = 37140, HTTPS len = 0
Clearly, there is something wrong with rhe HTTPS
connection in Python 2.3.
With my proposed patch, the output is now as expected:
> python2.3+patch testhttps.py
HTTP len = 37140, HTTPS len = 37140
However, there are some unresolved issues with
the patch, so I hope that someone more familiar
with httplib will help out. Basically, the problem
stems from non-obvious semantics of
HTTPResponse and HTTPConnection with regard to
closing the active connection.
I've marked several locations in the diff where these
classes close connections and I am not convinced
that it is proper to do so. One of these locations
fixes the problem I demonstrate above. i.e., the
SSL read fails because the socket has already
been closed, and no data is returned.
The exception caused by trying to read from a closed
connection is trapped, so the caller sees no error, and
recieves no bytes (i.e., EOF).
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=579107&group_id=5470