# HG changeset patch # User Sadrul Habib Chowdhury # Date 1196760738 0 # Node ID c7e81e9cc4768968d61d1eaf882e4cdf740629d8 # Parent 92ae7b2c95ed4fc0e6b1c28117886ab4e9c236d5# Parent 5bf56cc935a81a4b931dfe3e22e52b4be1479b46 merge of '291ef07a3b75f3cde5bcdd92767af92401228a7a' and '7c341c631158977d493bcc6bf4935163a3b7f0db' diff -r 92ae7b2c95ed -r c7e81e9cc476 libpurple/protocols/myspace/myspace.c --- a/libpurple/protocols/myspace/myspace.c Tue Dec 04 08:25:58 2007 +0000 +++ b/libpurple/protocols/myspace/myspace.c Tue Dec 04 09:32:18 2007 +0000 @@ -1369,7 +1369,9 @@ msim_msg_dump("msim_check_inbox_cb: reply=%s\n", reply); body = msim_msg_get_dictionary(reply, "body"); - g_return_if_fail(body != NULL); + + if (body == NULL) + return; old_inbox_status = session->inbox_status; @@ -1433,6 +1435,11 @@ session = (MsimSession *)data; + if (!MSIM_SESSION_VALID(session)) { + purple_debug_info("msim", "msim_check_inbox: session invalid, stopping the mail check.\n"); + return FALSE; + } + purple_debug_info("msim", "msim_check_inbox: checking mail\n"); g_return_val_if_fail(msim_send(session, "persist", MSIM_TYPE_INTEGER, 1, @@ -1645,7 +1652,7 @@ /* Check mail if they want to. */ if (purple_account_get_check_mail(session->account)) { - purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, + session->inbox_handle = purple_timeout_add(MSIM_MAIL_INTERVAL_CHECK, (GSourceFunc)msim_check_inbox, session); msim_check_inbox(session); } @@ -1947,8 +1954,8 @@ break; case MSIM_STATUS_CODE_IDLE: - /* will be handled below */ - purple_status_code = -1; + /* Treat idle as an available status. */ + purple_status_code = PURPLE_STATUS_AVAILABLE; break; default: diff -r 92ae7b2c95ed -r c7e81e9cc476 libpurple/protocols/myspace/session.c --- a/libpurple/protocols/myspace/session.c Tue Dec 04 08:25:58 2007 +0000 +++ b/libpurple/protocols/myspace/session.c Tue Dec 04 09:32:18 2007 +0000 @@ -63,6 +63,7 @@ session->next_rid = 1; session->last_comm = time(NULL); session->inbox_status = 0; + session->inbox_handle = 0; return session; } @@ -90,6 +91,11 @@ msim_msg_free(session->server_info); } + /* Stop checking the inbox at the end of the session. */ + if (session->inbox_handle) { + purple_timeout_remove(session->inbox_handle); + } + g_free(session); } diff -r 92ae7b2c95ed -r c7e81e9cc476 libpurple/protocols/myspace/session.h --- a/libpurple/protocols/myspace/session.h Tue Dec 04 08:25:58 2007 +0000 +++ b/libpurple/protocols/myspace/session.h Tue Dec 04 09:32:18 2007 +0000 @@ -45,6 +45,7 @@ guint next_rid; /**< Next request/response ID */ time_t last_comm; /**< Time received last communication */ guint inbox_status; /**< Bit field of inbox notifications */ + guint inbox_handle; /**< The handle for the mail check timer */ } MsimSession; /* Check if an MsimSession is valid */ diff -r 92ae7b2c95ed -r c7e81e9cc476 libpurple/protocols/oscar/family_feedbag.c --- a/libpurple/protocols/oscar/family_feedbag.c Tue Dec 04 08:25:58 2007 +0000 +++ b/libpurple/protocols/oscar/family_feedbag.c Tue Dec 04 09:32:18 2007 +0000 @@ -341,13 +341,9 @@ */ struct aim_ssi_item *aim_ssi_itemlist_exists(struct aim_ssi_item *list, const char *sn) { - struct aim_ssi_item *cur; - if (!list || !sn) + if (!sn) return NULL; - for (cur=list; cur; cur=cur->next) - if ((cur->type == AIM_SSI_TYPE_BUDDY) && (cur->name) && (!aim_sncmp(cur->name, sn))) - return cur; - return NULL; + return aim_ssi_itemlist_finditem(list, NULL, sn, AIM_SSI_TYPE_BUDDY); } /**