diff options
Diffstat (limited to 'protocols/twitter/twitter_lib.c')
| -rw-r--r-- | protocols/twitter/twitter_lib.c | 35 | 
1 files changed, 18 insertions, 17 deletions
| diff --git a/protocols/twitter/twitter_lib.c b/protocols/twitter/twitter_lib.c index 00e3a2ee..d52c29ff 100644 --- a/protocols/twitter/twitter_lib.c +++ b/protocols/twitter/twitter_lib.c @@ -726,18 +726,7 @@ 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;  	} @@ -827,8 +816,14 @@ void twitter_get_home_timeline(struct im_connection *ic, gint64 next_cursor)  		args[5] = g_strdup_printf("%llu", (long long unsigned int) td->timeline_id);  	} -	twitter_http(ic, TWITTER_HOME_TIMELINE_URL, twitter_http_get_home_timeline, ic, 0, args, -		     td->timeline_id ? 6 : 4); +	if (twitter_http(ic, TWITTER_HOME_TIMELINE_URL, twitter_http_get_home_timeline, ic, 0, args, +		     td->timeline_id ? 6 : 4) == NULL) { +		if (++td->http_fails >= 5) +			imcb_error(ic, "Could not retrieve %s: %s", +			           TWITTER_HOME_TIMELINE_URL, "connection failed"); +		td->flags |= TWITTER_GOT_TIMELINE; +		twitter_flush_timeline(ic); +	}  	g_free(args[1]);  	if (td->timeline_id) { @@ -856,8 +851,14 @@ void twitter_get_mentions(struct im_connection *ic, gint64 next_cursor)  		args[5] = g_strdup_printf("%llu", (long long unsigned int) td->timeline_id);  	} -	twitter_http(ic, TWITTER_MENTIONS_URL, twitter_http_get_mentions, ic, 0, args, -		     td->timeline_id ? 6 : 4); +	if (twitter_http(ic, TWITTER_MENTIONS_URL, twitter_http_get_mentions, ic, 0, args, +		     td->timeline_id ? 6 : 4) == NULL) { +		if (++td->http_fails >= 5) +			imcb_error(ic, "Could not retrieve %s: %s", +			           TWITTER_MENTIONS_URL, "connection failed"); +		td->flags |= TWITTER_GOT_MENTIONS; +		twitter_flush_timeline(ic); +	}  	g_free(args[1]);  	if (td->timeline_id) { @@ -945,8 +946,8 @@ static void twitter_http_get_mentions(struct http_request *req)  	} else {  		// It didn't go well, output the error and return.  		if (++td->http_fails >= 5) -			imcb_error(ic, "Could not retrieve " TWITTER_MENTIONS_URL ": %s", -				   twitter_parse_error(req)); +			imcb_error(ic, "Could not retrieve %s: %s", +				   TWITTER_MENTIONS_URL, twitter_parse_error(req));  		goto end;  	} | 
