Fix bug where streaming throws an exception after long use
authorJosh Roesslein <jroesslein@gmail.com>
Thu, 12 Apr 2018 02:39:23 +0000 (19:39 -0700)
committerJosh Roesslein <jroesslein@gmail.com>
Thu, 12 Apr 2018 02:39:23 +0000 (19:39 -0700)
When we go to read the next line this method sometimes is return None (dead socket?).
Guard against this with a check first before trying to strip the result.

Fixes #1026

tweepy/streaming.py

index 43aa82340be425279e8c5339cb35173d8b089f2f..0ab71aa8460aaa563882cc6d09d554993c6921a9 100644 (file)
@@ -313,11 +313,12 @@ class Stream(object):
         while self.running and not resp.raw.closed:
             length = 0
             while not resp.raw.closed:
-                line = buf.read_line().strip()
-                if not line:
+                line = buf.read_line()
+                stripped_line = line.strip() if line else line # line is sometimes None so we need to check here
+                if not stripped_line:
                     self.listener.keep_alive()  # keep-alive new lines are expected
-                elif line.strip().isdigit():
-                    length = int(line)
+                elif stripped_line.isdigit():
+                    length = int(stripped_line)
                     break
                 else:
                     raise TweepError('Expecting length, unexpected value found')