diff options
Diffstat (limited to 'protocols')
| -rw-r--r-- | protocols/account.c | 15 | ||||
| -rw-r--r-- | protocols/nogaim.c | 1 | ||||
| -rw-r--r-- | protocols/nogaim.h | 1 | ||||
| -rw-r--r-- | protocols/twitter/twitter.c | 4 | 
4 files changed, 21 insertions, 0 deletions
| diff --git a/protocols/account.c b/protocols/account.c index 50b7be8e..819bdc10 100644 --- a/protocols/account.c +++ b/protocols/account.c @@ -338,6 +338,8 @@ void account_del( bee_t *bee, account_t *acc )  		}  } +static gboolean account_on_timeout( gpointer d, gint fd, b_input_condition cond ); +  void account_on( bee_t *bee, account_t *a )  {  	if( a->ic ) @@ -350,6 +352,9 @@ void account_on( bee_t *bee, account_t *a )  	a->reconnect = 0;  	a->prpl->login( a ); +	 +	if( !( a->ic->flags & OPT_SLOW_LOGIN ) ) +		a->ic->keepalive = b_timeout_add( 120000, account_on_timeout, a->ic );  }  void account_off( bee_t *bee, account_t *a ) @@ -363,6 +368,16 @@ void account_off( bee_t *bee, account_t *a )  	}  } +static gboolean account_on_timeout( gpointer d, gint fd, b_input_condition cond ) +{ +	struct im_connection *ic = d; +	 +	imcb_error( ic, "Connection timeout" ); +	imc_logout( ic, TRUE ); +	 +	return FALSE; +} +  struct account_reconnect_delay  {  	int start; diff --git a/protocols/nogaim.c b/protocols/nogaim.c index aa3ad5bb..8fb85ea7 100644 --- a/protocols/nogaim.c +++ b/protocols/nogaim.c @@ -276,6 +276,7 @@ void imcb_connected( struct im_connection *ic )  	imcb_log( ic, "Logged in" ); +	b_event_remove( ic->keepalive );  	ic->keepalive = b_timeout_add( 60000, send_keepalive, ic );  	ic->flags |= OPT_LOGGED_IN; diff --git a/protocols/nogaim.h b/protocols/nogaim.h index ab75ac1c..62d49e30 100644 --- a/protocols/nogaim.h +++ b/protocols/nogaim.h @@ -63,6 +63,7 @@  #define OPT_MOBILE      0x00000008  #define OPT_DOES_HTML   0x00000010  #define OPT_LOCALBUDDY  0x00000020 /* For nicks local to one groupchat */ +#define OPT_SLOW_LOGIN  0x00000040 /* I.e. Twitter Oauth @ login time */  #define OPT_TYPING      0x00000100 /* Some pieces of code make assumptions */  #define OPT_THINKING    0x00000200 /* about these values... Stupid me! */  #define OPT_NOOTR       0x00001000 /* protocol not suitable for OTR */ diff --git a/protocols/twitter/twitter.c b/protocols/twitter/twitter.c index 083246b1..2f28f746 100644 --- a/protocols/twitter/twitter.c +++ b/protocols/twitter/twitter.c @@ -107,6 +107,10 @@ static void twitter_oauth_start( struct im_connection *ic )  	imcb_log( ic, "Requesting OAuth request token" );  	td->oauth_info = oauth_request_token( &twitter_oauth, twitter_oauth_callback, ic ); +	 +	/* We need help from the user to complete OAuth login, so don't time +	   out on this login. */ +	ic->flags |= OPT_SLOW_LOGIN;  }  static gboolean twitter_oauth_callback( struct oauth_info *info ) | 
