void flist_web_request_cancel(FListWebRequestData *req_data) { g_return_if_fail(req_data != NULL); purple_util_fetch_url_cancel(req_data->url_data); g_hash_table_remove(requests, req_data); purple_timeout_remove(req_data->timer); g_free(req_data); }
void mb_conn_data_free(MbConnData * conn_data) { purple_debug_info(MB_NET, "%s: conn_data = %p\n", __FUNCTION__, conn_data); if(conn_data->fetch_url_data) { purple_util_fetch_url_cancel(conn_data->fetch_url_data); } if(conn_data->host) { purple_debug_info(MB_NET, "freeing host name\n"); g_free(conn_data->host); } purple_debug_info(MB_NET, "freeing HTTP data->response\n"); if(conn_data->response) mb_http_data_free(conn_data->response); purple_debug_info(MB_NET, "freeing HTTP data->request\n"); if(conn_data->request) mb_http_data_free(conn_data->request); purple_debug_info(MB_NET, "unregistering conn_data from MbAccount\n"); if(conn_data->ma->conn_data_list) { GSList * list = g_slist_find(conn_data->ma->conn_data_list, conn_data); if(list) { conn_data->ma->conn_data_list = g_slist_delete_link(conn_data->ma->conn_data_list, list); } } purple_debug_info(MB_NET, "freeing self at %p\n", conn_data); g_free(conn_data); }
void purple_upnp_cancel_port_mapping(UPnPMappingAddRemove *ar) { GSList *l; /* Remove ar from discovery_callbacks if present; it was inserted after a cb. * The same cb may be in the list multiple times, so be careful to remove * the one associated with ar. */ l = discovery_callbacks; while (l) { GSList *next = l->next; if (next && (next->data == ar)) { discovery_callbacks = g_slist_delete_link(discovery_callbacks, next); next = l->next; discovery_callbacks = g_slist_delete_link(discovery_callbacks, l); } l = next; } if (ar->tima > 0) purple_timeout_remove(ar->tima); if (ar->gfud) purple_util_fetch_url_cancel(ar->gfud); g_free(ar); }
void flist_fetch_icon_cancel_all(FListAccount *fla) { GSList *req; req = fla->icon_requests; while(req) { FListFetchIcon *fli = req->data; g_free(fli->character); if(fli->convo) { /* POSSIBLE WARNING: We do not cancel writing the custom smiley. */ g_free(fli->convo); } if(fli->smiley) g_free(fli->smiley); purple_util_fetch_url_cancel(fli->url_data); g_free(fli); req = g_slist_next(req); } g_slist_free(fla->icon_requests); fla->icon_requests = NULL; req = fla->icon_request_queue; while(req) { g_free(req->data); req = g_slist_next(req); } fla->icon_request_queue = NULL; }
static void twitter_conv_icon_free(TwitterConvIcon * conv_icon) { if (!conv_icon) return; purple_debug_info(PLUGIN_ID, "Freeing icon for %s\n", conv_icon->username); if (conv_icon->requested) { if (conv_icon->fetch_data) { purple_util_fetch_url_cancel(conv_icon->fetch_data); } conv_icon->fetch_data = NULL; conv_icon->requested = FALSE; } if (conv_icon->request_list) remove_marks_func(conv_icon, NULL); conv_icon->request_list = NULL; if (conv_icon->pixbuf) { g_object_unref(G_OBJECT(conv_icon->pixbuf)); } conv_icon->pixbuf = NULL; if (conv_icon->icon_url) g_free(conv_icon->icon_url); conv_icon->icon_url = NULL; g_free(conv_icon->username); conv_icon->username = NULL; g_free(conv_icon); }
/** * Logoff and deallocate a session. * * @param od Session to kill */ void oscar_data_destroy(OscarData *od) { aim_cleansnacs(od, -1); /* Only used when connecting with clientLogin */ if (od->url_data != NULL) purple_util_fetch_url_cancel(od->url_data); while (od->requesticon) { g_free(od->requesticon->data); od->requesticon = g_slist_delete_link(od->requesticon, od->requesticon); } g_free(od->email); g_free(od->newp); g_free(od->oldp); if (od->getblisttimer > 0) purple_timeout_remove(od->getblisttimer); while (od->oscar_connections != NULL) flap_connection_destroy(od->oscar_connections->data, OSCAR_DISCONNECT_DONE, NULL); while (od->peer_connections != NULL) peer_connection_destroy(od->peer_connections->data, OSCAR_DISCONNECT_LOCAL_CLOSED, NULL); aim__shutdownmodules(od); g_hash_table_destroy(od->buddyinfo); g_hash_table_destroy(od->handlerlist); g_free(od); }
void twitter_conv_icon_got_user_icon(PurpleAccount * account, const char *user_name, const gchar * url, time_t icon_time) { /* look local icon cache for the requested icon */ PurpleConnection *gc = purple_account_get_connection(account); TwitterConnectionData *twitter = gc->proto_data; TwitterConvIcon *conv_icon = NULL; GHashTable *hash = twitter->icons; if (!hash) return; /* since this function is called after mark_icon_for_user(), data * must exist here. */ conv_icon = twitter_conv_icon_find(account, user_name); if (!conv_icon) { conv_icon = twitter_conv_icon_new(account, user_name); g_hash_table_insert(hash, g_strdup(purple_normalize(account, user_name)), conv_icon); conv_icon->mtime = icon_time; } else { //A new icon is one posted with a tweet later than the current saved icon time //and with a different url gboolean new_icon = !conv_icon->icon_url || (strcmp(url, conv_icon->icon_url) && icon_time > conv_icon->mtime); purple_debug_info(PLUGIN_ID, "Have icon %s (%lld) for user %s, looking for %s (%lld)\n", conv_icon->icon_url, (long long int) conv_icon->mtime, user_name, url, (long long int) icon_time); if (icon_time > conv_icon->mtime) conv_icon->mtime = icon_time; //Return if the image is cached already and it's the same one if (conv_icon->pixbuf && !new_icon) return; /* Return if user's icon has been requested already. */ if (conv_icon->requested && !new_icon) return; //If we're already requesting, but it's a different url, cancel the fetch if (conv_icon->fetch_data) purple_util_fetch_url_cancel(conv_icon->fetch_data); conv_icon_clear(conv_icon); } conv_icon->icon_url = g_strdup(url); //For buddies, we don't want to retrieve the icon here, we'll //let the twitter_buddy fetch the icon and let us know when it's done if (purple_find_buddy(account, user_name)) return; conv_icon->requested = TRUE; /* Create the URL for an user's icon. */ if (url) { BuddyIconContext *ctx = twitter_buddy_icon_context_new(account, user_name, url); purple_debug_info(PLUGIN_ID, "requesting %s for %s\n", url, user_name); conv_icon->fetch_data = purple_util_fetch_url_request_len_with_account(account, url, TRUE, NULL, FALSE, NULL, TRUE, -1, got_page_cb, ctx); } }
gboolean flist_web_request_timeout(gpointer data) { FListWebRequestData *req_data = data; g_return_val_if_fail(req_data != NULL, FALSE); purple_util_fetch_url_cancel(req_data->url_data); req_data->cb(req_data, req_data->user_data, NULL, "Web Request timed out."); g_hash_table_remove(requests, req_data); g_free(req_data); return FALSE; }
void msn_session_destroy(MsnSession *session) { g_return_if_fail(session != NULL); session->destroying = TRUE; while (session->url_datas) { purple_util_fetch_url_cancel(session->url_datas->data); session->url_datas = g_slist_delete_link(session->url_datas, session->url_datas); } if (session->connected) msn_session_disconnect(session); if (session->soap_cleanup_handle) purple_timeout_remove(session->soap_cleanup_handle); if (session->soap_table != NULL) g_hash_table_destroy(session->soap_table); while (session->slplinks != NULL) msn_slplink_unref(session->slplinks->data); while (session->switches != NULL) msn_switchboard_destroy(session->switches->data); if (session->oim != NULL) msn_oim_destroy(session->oim); if (session->nexus != NULL) msn_nexus_destroy(session->nexus); if (session->user != NULL) msn_user_unref(session->user); if (session->notification != NULL) msn_notification_destroy(session->notification); msn_userlist_destroy(session->userlist); g_free(session->psm); g_free(session->guid); g_free(session->abch_cachekey); #if 0 g_free(session->blocked_text); #endif g_free(session->passport_info.sid); g_free(session->passport_info.mspauth); g_free(session->passport_info.client_ip); g_free(session->passport_info.mail_url); g_free(session); }
void purple_fbapi_request_destroy(PurpleFbApiCall *apicall) { apicalls = g_slist_remove(apicalls, apicall); if (apicall->url_data != NULL) purple_util_fetch_url_cancel(apicall->url_data); if (apicall->user_data != NULL && apicall->user_data_destroy_func != NULL) apicall->user_data_destroy_func(apicall->user_data); g_free(apicall->request); g_free(apicall); }
static void cancel_fetch_func(gpointer key, gpointer value, gpointer user_data) { icon_data *data = (icon_data *)value; if(!data) return; if(data->requested) { purple_util_fetch_url_cancel(data->fetch_data); data->fetch_data = NULL; data->requested = FALSE; } if(data->request_list) { twitter_debug("somehow, request_list != NULL\n"); } }
void twitter_requestor_free(TwitterRequestor * r) { GList *l; purple_debug_info(purple_account_get_protocol_id(r->account), "Freeing requestor\n"); if (r->pending_requests) { TwitterRequestErrorData *error_data; error_data = g_new0(TwitterRequestErrorData, 1); error_data->type = TWITTER_REQUEST_ERROR_CANCELED; error_data->message = NULL; for (l = r->pending_requests; l; l = l->next) { TwitterSendRequestData *request_data = l->data; //TODO: move this to a ->cancel function if (request_data->request_id) { purple_util_fetch_url_cancel(request_data->request_id); //TODO: created a ->free callback twitter_requestor_on_error(request_data->requestor, error_data, request_data->error_func, request_data->user_data); } g_free(request_data); } g_list_free(r->pending_requests); g_free(error_data); } g_free(r); }
static void skypeweb_close(PurpleConnection *pc) { SkypeWebAccount *sa; GSList *buddies; g_return_if_fail(pc != NULL); sa = purple_connection_get_protocol_data(pc); g_return_if_fail(sa != NULL); purple_timeout_remove(sa->authcheck_timeout); purple_timeout_remove(sa->poll_timeout); purple_timeout_remove(sa->watchdog_timeout); skypeweb_logout(sa); purple_signal_disconnect(purple_conversations_get_handle(), "conversation-updated", pc, PURPLE_CALLBACK(skypeweb_mark_conv_seen)); purple_debug_info("skypeweb", "destroying %d waiting connections\n", g_queue_get_length(sa->waiting_conns)); while (!g_queue_is_empty(sa->waiting_conns)) skypeweb_connection_destroy(g_queue_pop_tail(sa->waiting_conns)); g_queue_free(sa->waiting_conns); purple_debug_info("skypeweb", "destroying %d incomplete connections\n", g_slist_length(sa->conns)); while (sa->conns != NULL) skypeweb_connection_destroy(sa->conns->data); while (sa->dns_queries != NULL) { PurpleDnsQueryData *dns_query = sa->dns_queries->data; purple_debug_info("skypeweb", "canceling dns query for %s\n", purple_dnsquery_get_host(dns_query)); sa->dns_queries = g_slist_remove(sa->dns_queries, dns_query); purple_dnsquery_destroy(dns_query); } while (sa->url_datas) { purple_util_fetch_url_cancel(sa->url_datas->data); sa->url_datas = g_slist_delete_link(sa->url_datas, sa->url_datas); } buddies = purple_find_buddies(sa->account, NULL); while (buddies != NULL) { PurpleBuddy *buddy = buddies->data; skypeweb_buddy_free(buddy); purple_buddy_set_protocol_data(buddy, NULL); buddies = g_slist_delete_link(buddies, buddies); } g_hash_table_destroy(sa->sent_messages_hash); g_hash_table_destroy(sa->cookie_table); g_hash_table_destroy(sa->hostname_ip_cache); g_free(sa->messages_host); g_free(sa->skype_token); g_free(sa->registration_token); g_free(sa->endpoint); g_free(sa->username); g_free(sa); }