aboutsummaryrefslogtreecommitdiffstats
path: root/protocols/twitter
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/twitter')
-rw-r--r--protocols/twitter/twitter.h1
-rw-r--r--protocols/twitter/twitter_lib.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/protocols/twitter/twitter.h b/protocols/twitter/twitter.h
index 14e43824..47dbeb29 100644
--- a/protocols/twitter/twitter.h
+++ b/protocols/twitter/twitter.h
@@ -38,6 +38,7 @@ typedef enum
TWITTER_DOING_TIMELINE = 0x10000,
TWITTER_GOT_TIMELINE = 0x20000,
TWITTER_GOT_MENTIONS = 0x40000,
+ TWITTER_DOING_TIMELINE_SLOW = 0x80000,
} twitter_flags_t;
struct twitter_log_data;
diff --git a/protocols/twitter/twitter_lib.c b/protocols/twitter/twitter_lib.c
index 4c680930..00e3a2ee 100644
--- a/protocols/twitter/twitter_lib.c
+++ b/protocols/twitter/twitter_lib.c
@@ -726,7 +726,18 @@ void twitter_get_timeline(struct im_connection *ic, gint64 next_cursor)
struct twitter_data *td = ic->proto_data;
gboolean include_mentions = set_getbool(&ic->acc->set, "fetch_mentions");
+ if ((td->flags & 0xf0000) == (TWITTER_DOING_TIMELINE | TWITTER_DOING_TIMELINE_SLOW)) {
+ imcb_log(ic, "Connection seems to have stalled again.\n"
+ "This is a known bug, if you see this happen a lot "
+ "please generate some traffic dumps.");
+ td->flags &= ~0xf0000;
+ }
+
if (td->flags & TWITTER_DOING_TIMELINE) {
+ /* This shouldn't normally happen at all but I'm currently hunting a bug
+ where it does. Instead of having users suffer under it, have a work-
+ around with a warning. */
+ td->flags |= TWITTER_DOING_TIMELINE_SLOW;
return;
}