mirror of https://github.com/python/cpython.git
Fix SF bug #637789: Handle Proxy-Connection header.
Also, remove unused local variable noted by pychecker.
This commit is contained in:
parent
33635aaf93
commit
22b3a49d3c
|
@ -169,7 +169,6 @@ def readheaders(self):
|
||||||
# for http and/or for repeating headers
|
# for http and/or for repeating headers
|
||||||
# It's a continuation line.
|
# It's a continuation line.
|
||||||
list.append(line)
|
list.append(line)
|
||||||
x = self.dict[headerseen] + "\n " + line.strip()
|
|
||||||
self.addcontinue(headerseen, line.strip())
|
self.addcontinue(headerseen, line.strip())
|
||||||
continue
|
continue
|
||||||
elif self.iscomment(line):
|
elif self.iscomment(line):
|
||||||
|
@ -311,20 +310,7 @@ def begin(self):
|
||||||
self.chunked = 0
|
self.chunked = 0
|
||||||
|
|
||||||
# will the connection close at the end of the response?
|
# will the connection close at the end of the response?
|
||||||
conn = self.msg.getheader('connection')
|
self.will_close = self._check_close()
|
||||||
if conn:
|
|
||||||
conn = conn.lower()
|
|
||||||
# a "Connection: close" will always close the connection. if we
|
|
||||||
# don't see that and this is not HTTP/1.1, then the connection will
|
|
||||||
# close unless we see a Keep-Alive header.
|
|
||||||
self.will_close = conn.find('close') != -1 or \
|
|
||||||
( self.version != 11 and \
|
|
||||||
not self.msg.getheader('keep-alive') )
|
|
||||||
else:
|
|
||||||
# for HTTP/1.1, the connection will always remain open
|
|
||||||
# otherwise, it will remain open IFF we see a Keep-Alive header
|
|
||||||
self.will_close = self.version != 11 and \
|
|
||||||
not self.msg.getheader('keep-alive')
|
|
||||||
|
|
||||||
# do we have a Content-Length?
|
# do we have a Content-Length?
|
||||||
# NOTE: RFC 2616, S4.4, #3 says we ignore this if tr_enc is "chunked"
|
# NOTE: RFC 2616, S4.4, #3 says we ignore this if tr_enc is "chunked"
|
||||||
|
@ -351,6 +337,30 @@ def begin(self):
|
||||||
self.length is None:
|
self.length is None:
|
||||||
self.will_close = 1
|
self.will_close = 1
|
||||||
|
|
||||||
|
def _check_close(self):
|
||||||
|
if self.version == 11:
|
||||||
|
# An HTTP/1.1 proxy is assumed to stay open unless
|
||||||
|
# explicitly closed.
|
||||||
|
conn = self.msg.getheader('connection')
|
||||||
|
if conn and conn.lower().find("close") >= 0:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
# An HTTP/1.0 response with a Connection header is probably
|
||||||
|
# the result of a confused proxy. Ignore it.
|
||||||
|
|
||||||
|
# For older HTTP, Keep-Alive indiciates persistent connection.
|
||||||
|
if self.msg.getheader('keep-alive'):
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Proxy-Connection is a netscape hack.
|
||||||
|
pconn = self.msg.getheader('proxy-connection')
|
||||||
|
if pconn and pconn.lower().find("keep-alive") >= 0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
# otherwise, assume it will close
|
||||||
|
return True
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
if self.fp:
|
if self.fp:
|
||||||
self.fp.close()
|
self.fp.close()
|
||||||
|
|
Loading…
Reference in New Issue