From ac72782e61a8e08381cb66005295a4c24ed37f33 Mon Sep 17 00:00:00 2001
From: Aymeric Augustin <aymeric.augustin@m4x.org>
Date: Sun, 30 Dec 2012 15:08:06 +0100
Subject: [PATCH] [1.5.x] Fixed #16241 -- Ensured the WSGI iterable's close()
 is always called.

Thanks Graham Dumpleton for the report.

Backport of a53c474.
---
 django/core/servers/basehttp.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index 7387d13199..68ca0c1079 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -109,6 +109,17 @@ class ServerHandler(simple_server.ServerHandler, object):
         super(ServerHandler, self).error_output(environ, start_response)
         return ['\n'.join(traceback.format_exception(*sys.exc_info()))]
 
+    # Backport of http://hg.python.org/cpython/rev/d5af1b235dab. See #16241.
+    # This can be removed when support for Python <= 2.7.3 is deprecated.
+    def finish_response(self):
+        try:
+            if not self.result_is_file() or not self.sendfile():
+                for data in self.result:
+                    self.write(data)
+                self.finish_content()
+        finally:
+            self.close()
+
 
 class WSGIServer(simple_server.WSGIServer, object):
     """BaseHTTPServer that implements the Python WSGI protocol"""