diff options
Diffstat (limited to 'protocols/account.c')
| -rw-r--r-- | protocols/account.c | 15 | 
1 files changed, 15 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; | 
