diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2014-01-25 17:42:27 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2014-01-25 17:42:27 (GMT) |
commit | 1adbacfd1c80f4f724c5d515e48a518d0b1be2dd (patch) | |
tree | c2c0e80d7163597cd158aaad1626720b418b1fda /Lib/SimpleHTTPServer.py | |
parent | d8be9feb45baab60959d4076dc997062b307206f (diff) | |
download | cpython-1adbacfd1c80f4f724c5d515e48a518d0b1be2dd.zip cpython-1adbacfd1c80f4f724c5d515e48a518d0b1be2dd.tar.gz cpython-1adbacfd1c80f4f724c5d515e48a518d0b1be2dd.tar.bz2 |
Issue #20331: Fixed possible FD leaks in various modules:
SimpleHTTPServer, imghdr, mailcap, mimetypes, xml.etree.
Diffstat (limited to 'Lib/SimpleHTTPServer.py')
-rw-r--r-- | Lib/SimpleHTTPServer.py | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/Lib/SimpleHTTPServer.py b/Lib/SimpleHTTPServer.py index 1a17296..d497e1e 100644 --- a/Lib/SimpleHTTPServer.py +++ b/Lib/SimpleHTTPServer.py @@ -43,8 +43,10 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): """Serve a GET request.""" f = self.send_head() if f: - self.copyfile(f, self.wfile) - f.close() + try: + self.copyfile(f, self.wfile) + finally: + f.close() def do_HEAD(self): """Serve a HEAD request.""" @@ -88,13 +90,17 @@ class SimpleHTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler): except IOError: self.send_error(404, "File not found") return None - self.send_response(200) - self.send_header("Content-type", ctype) - fs = os.fstat(f.fileno()) - self.send_header("Content-Length", str(fs[6])) - self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) - self.end_headers() - return f + try: + self.send_response(200) + self.send_header("Content-type", ctype) + fs = os.fstat(f.fileno()) + self.send_header("Content-Length", str(fs[6])) + self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) + self.end_headers() + return f + except: + f.close() + raise def list_directory(self, path): """Helper to produce a directory listing (absent index.html). |