summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2007-08-04 03:25:17 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2007-08-04 03:25:17 (GMT)
commit0ee5eeb8ffb167d55a746c97c91558cf0e855c94 (patch)
tree54fc06fa1b35b7a354219541e37dec90dd1354bf
parent6252083f5fb107a8de87398d36da5efb5e20144c (diff)
downloadcpython-0ee5eeb8ffb167d55a746c97c91558cf0e855c94.zip
cpython-0ee5eeb8ffb167d55a746c97c91558cf0e855c94.tar.gz
cpython-0ee5eeb8ffb167d55a746c97c91558cf0e855c94.tar.bz2
Fix several more paths from the SSL code.
In particular, watch out for comparing b"" to "". They're not equal, but you can start at the code asking whether buf == "" for a long time before realizing that it will never be True.
-rw-r--r--Lib/httplib.py29
1 files changed, 14 insertions, 15 deletions
diff --git a/Lib/httplib.py b/Lib/httplib.py
index 020d5c5..76f7203 100644
--- a/Lib/httplib.py
+++ b/Lib/httplib.py
@@ -435,14 +435,13 @@ class HTTPResponse:
# do we have a Content-Length?
# NOTE: RFC 2616, S4.4, #3 says we ignore this if tr_enc is "chunked"
+ self.length = None
length = self.msg.getheader("content-length")
if length and not self.chunked:
try:
self.length = int(length)
except ValueError:
- self.length = None
- else:
- self.length = None
+ pass
# does the body have a fixed length? (of zero)
if (status == NO_CONTENT or status == NOT_MODIFIED or
@@ -453,9 +452,9 @@ class HTTPResponse:
# if the connection remains open, and we aren't using chunked, and
# a content-length was not provided, then assume that the connection
# WILL close.
- if not self.will_close and \
- not self.chunked and \
- self.length is None:
+ if (not self.will_close and
+ not self.chunked and
+ self.length is None):
self.will_close = 1
def _check_close(self):
@@ -998,11 +997,11 @@ class SSLFile(SharedSocketClient):
def __init__(self, sock, ssl, bufsize=None):
SharedSocketClient.__init__(self, sock)
self._ssl = ssl
- self._buf = ''
+ self._buf = b""
self._bufsize = bufsize or self.__class__.BUFSIZE
def _read(self):
- buf = ''
+ buf = b""
# put in a loop so that we retry on transient errors
while True:
try:
@@ -1033,13 +1032,13 @@ class SSLFile(SharedSocketClient):
avail = len(self._buf)
while size is None or avail < size:
s = self._read()
- if s == "":
+ if s == b"":
break
L.append(s)
avail += len(s)
- all = "".join(L)
+ all = b"".join(L)
if size is None:
- self._buf = ""
+ self._buf = b""
return all
else:
self._buf = all[size:]
@@ -1047,20 +1046,20 @@ class SSLFile(SharedSocketClient):
def readline(self):
L = [self._buf]
- self._buf = ''
+ self._buf = b""
while 1:
i = L[-1].find("\n")
if i >= 0:
break
s = self._read()
- if s == '':
+ if s == b"":
break
L.append(s)
if i == -1:
# loop exited because there is no more data
- return "".join(L)
+ return b"".join(L)
else:
- all = "".join(L)
+ all = b"".join(L)
# XXX could do enough bookkeeping not to do a 2nd search
i = all.find("\n") + 1
line = all[:i]