--- a/src/protocols/msn/slpmsg.c Sat Dec 11 00:06:06 2004 +0000 +++ b/src/protocols/msn/slpmsg.c Sat Dec 11 20:01:58 2004 +0000 @@ -33,8 +33,13 @@ msn_slpmsg_new(MsnSlpLink *slplink) { MsnSlpMessage *slpmsg; + slpmsg = g_new0(MsnSlpMessage, 1); +#ifdef MSN_DEBUG_SLPMSG + gaim_debug_info("msn", "slpmsg new (%p)\n", slpmsg); +#endif + slpmsg->slplink = slplink; slplink->slp_msgs = @@ -47,6 +52,13 @@ msn_slpmsg_destroy(MsnSlpMessage *slpmsg) { MsnSlpLink *slplink; + GList *cur; + + g_return_if_fail(slpmsg != NULL); + +#ifdef MSN_DEBUG_SLPMSG + gaim_debug_info("msn", "slpmsg destroy (%p)\n", slpmsg); +#endif slplink = slpmsg->slplink; @@ -56,42 +68,31 @@ if (slpmsg->buffer != NULL) g_free(slpmsg->buffer); -#ifdef DEBUG_SLP +#ifdef MSN_DEBUG_SLP /* if (slpmsg->info != NULL) g_free(slpmsg->info); */ #endif - if (slpmsg->msg != NULL) + for (cur = slpmsg->msgs; cur != NULL; cur = cur->next) { /* Something is pointing to this slpmsg, so we should remove that * pointer to prevent a crash. */ /* Ex: a user goes offline and after that we receive an ACK */ - gaim_debug_info("msn", "Unlink slpmsg callbacks.\n"); - - slpmsg->msg->ack_cb = NULL; - slpmsg->msg->ack_data = NULL; - -#if 0 - MsnTransaction *trans; - - trans = slpmsg->msg->trans; + MsnMessage *msg = cur->data; - if (trans != NULL) - { - if (trans->callbacks != NULL && trans->has_custom_callbacks) - g_hash_table_destroy(trans->callbacks); - - trans->callbacks = NULL; - trans->data = NULL; - } +#ifdef MSN_DEBUG_SLPMSG + gaim_debug_info("msn", "Unlink slpmsg callbacks.\n"); #endif + + msg->ack_cb = NULL; + msg->nak_cb = NULL; + msg->ack_data = NULL; } - slplink->slp_msgs = - g_list_remove(slplink->slp_msgs, slpmsg); + slplink->slp_msgs = g_list_remove(slplink->slp_msgs, slpmsg); g_free(slpmsg); } @@ -119,7 +120,7 @@ slpmsg->size = st.st_size; } -#ifdef DEBUG_SLP +#ifdef MSN_DEBUG_SLP const void msn_slpmsg_show(MsnMessage *msg) { @@ -203,6 +204,7 @@ msn_slpmsg_set_body(slpmsg, body, body_len); slpmsg->sip = TRUE; + slpmsg->slpcall = slpcall; g_free(body);