Index: django/core/servers/basehttp.py
===================================================================
--- django/core/servers/basehttp.py	(revision 10680)
+++ django/core/servers/basehttp.py	(working copy)
@@ -313,7 +313,7 @@
         in the event loop to iterate over the data, and to call
         'self.close()' once the response is finished.
         """
-        if not self.result_is_file() and not self.sendfile():
+        if not self.result_is_file() or not self.sendfile():
             for data in self.result:
                 self.write(data)
             self.finish_content()

Property changes on: tests/regressiontests/bug9659
___________________________________________________________________
Name: svn:ignore
   + *.pyc
*.pyo


Index: tests/regressiontests/bug9659/__init__.py
===================================================================
Index: tests/regressiontests/bug9659/tests.py
===================================================================
--- tests/regressiontests/bug9659/tests.py	(revision 0)
+++ tests/regressiontests/bug9659/tests.py	(revision 0)
@@ -0,0 +1,51 @@
+from unittest import TestCase
+from StringIO import StringIO
+
+from django.core.servers.basehttp import ServerHandler
+
+
+class DummyHandler(object):
+
+    def log_request(*args, **kwargs):
+        pass
+
+
+class FileWrapperHandler(ServerHandler):
+
+    def __init__(self, *args, **kwargs):
+        ServerHandler.__init__(self, *args, **kwargs)
+        self.request_handler = DummyHandler()
+        self._used_sendfile = False
+
+    def sendfile(self):
+        self._used_sendfile = True
+        return True
+
+
+def hello_file(environ, start_response):
+    start_response('200 OK', [('Content-Type', 'text/plain')])
+    return environ['wsgi.file_wrapper'](StringIO('foo'))
+
+
+def hello_world(environ, start_response):
+    start_response('200 OK', [('Content-Type', 'text/plain')])
+    return ['Hello World!']
+
+
+class Bug9659Test(TestCase):
+    """
+    Test that the file wrapper works.
+    """
+
+    def test_bug_9659(self):
+        env = {'SERVER_PROTOCOL': 'HTTP/1.0'}
+        err = StringIO()
+        handler = FileWrapperHandler(None, StringIO(), err, env)
+        handler.run(hello_file)
+        self.assert_(handler._used_sendfile)
+
+        handler = FileWrapperHandler(None, StringIO(), err, env)
+        handler.run(hello_world)
+        self.assert_(not handler._used_sendfile)
+        self.assertEqual(handler.stdout.getvalue().splitlines()[-1],
+                         'Hello World!')
Index: tests/regressiontests/bug9659/models.py
===================================================================
