Check that the response is not closed each time around the loop.
authorDan Fairs <dan@fezconsulting.com>
Sat, 4 Feb 2012 16:22:34 +0000 (16:22 +0000)
committerDan Fairs <dan@fezconsulting.com>
Sat, 4 Feb 2012 16:22:34 +0000 (16:22 +0000)
tweepy/streaming.py

index 60b043c2dd25d16d60ff6b360c9c48072c6c78cc..6f8b4a69f86152142a71495442425b52d92aaf9c 100644 (file)
@@ -141,25 +141,22 @@ class Stream(object):
                 self.running = False
 
     def _read_loop(self, resp):
-        while self.running:
-            if resp.isclosed():
-                break
+        buf = ''
+        while self.running and not resp.isclosed():
+            c = resp.read(self.buffer_size)
+            idx = c.rfind('\n')
+            if idx > -1:
+                # There is an index. Store the tail part for later,
+                # and process the head part as messages. We use idx + 1
+                # as we dont' actually want to store the newline.
+                data = buf + c[:idx]
+                buf = c[idx + 1:]
+                self._data(data)
+            else:
+                # No newline found, so we add this to our accumulated
+                # buffer
+                buf += c
 
-            buf = ''
-            while True:
-                c = resp.read(self.buffer_size)
-                idx = c.rfind('\n')
-                if idx > -1:
-                    # There is an index. Store the tail part for later,
-                    # and process the head part as messages. We use idx + 1
-                    # as we dont' actually want to store the newline.
-                    data = buf + c[:idx]
-                    buf = c[idx + 1:]
-                    self._data(data)
-                else:
-                    # No newline found, so we add this to our accumulated
-                    # buffer
-                    buf += c
 
     def _start(self, async):
         self.running = True