# HG changeset patch # User Elliott Sales de Andrade # Date 1273277281 0 # Node ID a6642358155b1f9cf5c075643cf0b5348c2ab79b # Parent 0b22c840f4f419250dd34bd6d93e875311a5a8c1 We can't both remove a timeout and return FALSE in its callback. diff -r 0b22c840f4f4 -r a6642358155b libpurple/protocols/msn/directconn.c --- a/libpurple/protocols/msn/directconn.c Fri May 07 20:04:42 2010 +0000 +++ b/libpurple/protocols/msn/directconn.c Sat May 08 00:08:01 2010 +0000 @@ -825,10 +825,7 @@ g_return_val_if_fail(dc != NULL, FALSE); - if (dc->connect_timeout_handle != 0) { - purple_timeout_remove(dc->connect_timeout_handle); - dc->connect_timeout_handle = 0; - } + dc->connect_timeout_handle = 0; if (dc->connect_data != NULL) { purple_proxy_connect_cancel(dc->connect_data); @@ -859,14 +856,15 @@ } else { /* - * Both internal and external connection attempts are failed. + * Both internal and external connection attempts failed. * Fall back to p2p transfer. */ - MsnSlpCall *slpcall = dc->slpcall; + MsnSlpCall *slpcall = dc->slpcall; msn_dc_destroy(dc); - /* Start p2p file transfer */ - msn_slpcall_session_init(slpcall); + /* Start p2p file transfer, if possible */ + if (slpcall) + msn_slpcall_session_init(slpcall); } return FALSE;