--- a/src/protocols/msn/slpcall.c Thu Dec 02 13:03:23 2004 +0000 +++ b/src/protocols/msn/slpcall.c Thu Dec 02 16:07:26 2004 +0000 @@ -189,11 +189,21 @@ gboolean msn_slp_call_timeout(gpointer data) { + MsnSlpCall *slpcall; + gaim_debug_info("msn", "slpcall timeout\n"); - msn_slp_call_destroy(data); + slpcall = data; - return FALSE; + if (!slpcall->pending && !slpcall->progress) + { + msn_slp_call_destroy(slpcall); + return FALSE; + } + + slpcall->progress = FALSE; + + return TRUE; } MsnSlpCall * @@ -241,14 +251,5 @@ } #endif - if (slpcall != NULL) - { - if (slpcall->timer) - gaim_timeout_remove(slpcall->timer); - - slpcall->timer = gaim_timeout_add(MSN_SLPCALL_TIMEOUT, - msn_slp_call_timeout, slpcall); - } - return slpcall; }