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:
|
||||
return self.list_directory(path)
|
||||
ctype = self.guess_type(path)
|
||||
if ctype.startswith('text/'):
|
||||
mode = 'r'
|
||||
else:
|
||||
mode = 'rb'
|
||||
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:
|
||||
self.send_error(404, "File not found")
|
||||
return None
|
||||
|
|
|
@ -36,6 +36,12 @@ Core and Builtins
|
|||
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 #1622: Correct interpretation of various ZIP header fields.
|
||||
|
|
Loading…
Reference in New Issue