Issue839496: SimpleHTTPServer should open all files in binary mode.
Forward-port of 38255 (2005/01/15!) This was already fixed in 2.4, but never merged into trunk... py3k is already right, thanks to the bytes/str distinction! Should be backported to 2.5.
This commit is contained in:
parent
aaca978103
commit
0f7cddc308
|
@ -79,12 +79,11 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||||
else:
|
else:
|
||||||
return self.list_directory(path)
|
return self.list_directory(path)
|
||||||
ctype = self.guess_type(path)
|
ctype = self.guess_type(path)
|
||||||
if ctype.startswith('text/'):
|
|
||||||
mode = 'r'
|
|
||||||
else:
|
|
||||||
mode = 'rb'
|
|
||||||
try:
|
try:
|
||||||
f = open(path, mode)
|
# Always read in binary mode. Opening files in text mode may cause
|
||||||
|
# newline translations, making the actual size of the content
|
||||||
|
# transmitted *less* than the content-length!
|
||||||
|
f = open(path, 'rb')
|
||||||
except IOError:
|
except IOError:
|
||||||
self.send_error(404, "File not found")
|
self.send_error(404, "File not found")
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -36,6 +36,12 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #839496: SimpleHTTPServer used to open text files in text mode. This is
|
||||||
|
both unnecessary (HTTP allows text content to be sent in several forms) and
|
||||||
|
wrong because the actual transmitted size could differ with the
|
||||||
|
content-length. The problem had been corrected in the 2.4 branch, but never
|
||||||
|
merged into trunk.
|
||||||
|
|
||||||
- Issue #2663: add filtering capability to shutil.copytree().
|
- Issue #2663: add filtering capability to shutil.copytree().
|
||||||
|
|
||||||
- Issue #1622: Correct interpretation of various ZIP header fields.
|
- Issue #1622: Correct interpretation of various ZIP header fields.
|
||||||
|
|
Loading…
Reference in New Issue