Index: AUTHORS
===================================================================
--- AUTHORS	(revision 7294)
+++ AUTHORS	(working copy)
@@ -373,7 +373,9 @@
     ymasuda@ethercube.com
     Jarek Zgoda <jarek.zgoda@gmail.com>
     Cheng Zhang
+    John DeRosa <stugots@qwest.net>
 
+
 A big THANK YOU goes to:
 
     Rob Curley and Ralph Gage for letting us open-source Django.
Index: django/http/__init__.py
===================================================================
--- django/http/__init__.py	(revision 7294)
+++ django/http/__init__.py	(working copy)
@@ -257,21 +257,24 @@
     status_code = 200
 
     def __init__(self, content='', mimetype=None, status=None,
-            content_type=None):
+                 content_type=None):
         from django.conf import settings
+
         self._charset = settings.DEFAULT_CHARSET
+        
         if mimetype:
             content_type = mimetype     # For backwards compatibility
         if not content_type:
             content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE,
                     settings.DEFAULT_CHARSET)
-        if not isinstance(content, basestring) and hasattr(content, '__iter__'):
-            self._container = content
-            self._is_string = False
-        else:
-            self._container = [content]
-            self._is_string = True
+
+        # Note - We expect content to be an iterable container, or a string.
+        self._container = [''.join(content)]
+        if hasattr(content, 'close'):
+            content.close()
+        
         self.cookies = SimpleCookie()
+
         if status:
             self.status_code = status
 
@@ -283,8 +286,8 @@
     def __str__(self):
         """Full HTTP message, including headers."""
         return '\n'.join(['%s: %s' % (key, value)
-            for key, value in self._headers.values()]) \
-            + '\n\n' + self.content
+                         for key, value in self._headers.values()]) \
+               + '\n\n' + self.content
 
     def _convert_to_ascii(self, *values):
         """Converts all values to ascii strings."""
@@ -347,8 +350,7 @@
         return smart_str(''.join(self._container), self._charset)
 
     def _set_content(self, value):
-        self._container = [value]
-        self._is_string = True
+        self._container = [''.join(value)]
 
     content = property(_get_content, _set_content)
 
@@ -363,22 +365,21 @@
         return str(chunk)
 
     def close(self):
-        if hasattr(self._container, 'close'):
-            self._container.close()
+        """This became a noop in the patch for ticket
+        http://code.djangoproject.com/ticket/6527.  It's here for backwards-
+        compatibility.
+        """
+        pass
 
     # The remaining methods partially implement the file-like object interface.
     # See http://docs.python.org/lib/bltin-file-objects.html
     def write(self, content):
-        if not self._is_string:
-            raise Exception("This %s instance is not writable" % self.__class__)
         self._container.append(content)
 
     def flush(self):
         pass
 
     def tell(self):
-        if not self._is_string:
-            raise Exception("This %s instance cannot tell its position" % self.__class__)
         return sum([len(chunk) for chunk in self._container])
 
 class HttpResponseRedirect(HttpResponse):
Index: docs/request_response.txt
===================================================================
--- docs/request_response.txt	(revision 7294)
+++ docs/request_response.txt	(working copy)
@@ -369,12 +369,10 @@
 ~~~~~~~~~~~~~~~~~
 
 Finally, you can pass ``HttpResponse`` an iterator rather than passing it
-hard-coded strings. If you use this technique, follow these guidelines:
+hard-coded strings. If you use this technique, note the following:
 
     * The iterator should return strings.
-    * If an ``HttpResponse`` has been initialized with an iterator as its
-      content, you can't use the ``HttpResponse`` instance as a file-like
-      object. Doing so will raise ``Exception``.
+    * ``HttpResponse.__init__()`` will read and store the iterator's contents.
 
 Methods
 -------
Index: tests/regressiontests/httpwrappers/helloworld.txt
===================================================================
--- tests/regressiontests/httpwrappers/helloworld.txt	(revision 0)
+++ tests/regressiontests/httpwrappers/helloworld.txt	(revision 0)
@@ -0,0 +1 @@
+Hello world.

Property changes on: tests\regressiontests\httpwrappers\helloworld.txt
___________________________________________________________________
Name: svn:eol-style
   + native

Index: tests/regressiontests/httpwrappers/tests.py
===================================================================
--- tests/regressiontests/httpwrappers/tests.py	(revision 7294)
+++ tests/regressiontests/httpwrappers/tests.py	(working copy)
@@ -427,6 +427,44 @@
 ...
 UnicodeEncodeError: ..., HTTP response headers must be in US-ASCII format
  
+######################################
+# HttpResponse with iterable content #
+######################################
+
+>>> from django.http import HttpResponse
+>>> response = HttpResponse(file('regressiontests/httpwrappers/helloworld.txt','r'))
+>>> print response
+Content-Type: text/html; charset=utf-8
+<BLANKLINE>
+Hello world.
+<BLANKLINE>
+
+>>> print response
+Content-Type: text/html; charset=utf-8
+<BLANKLINE>
+Hello world.
+<BLANKLINE>
+
+>>> print response
+Content-Type: text/html; charset=utf-8
+<BLANKLINE>
+Hello world.
+<BLANKLINE>
+
+>>> response = HttpResponse("abc")
+>>> print response
+Content-Type: text/html; charset=utf-8
+<BLANKLINE>
+abc
+>>> print response
+Content-Type: text/html; charset=utf-8
+<BLANKLINE>
+abc
+>>> print response
+Content-Type: text/html; charset=utf-8
+<BLANKLINE>
+abc
+
 """
 
 from django.http import QueryDict, HttpResponse
