Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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);
}
Пример #4
0
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;
}
Пример #5
0
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);
}
Пример #6
0
/**
 * 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);
}
Пример #7
0
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);
    }
}
Пример #8
0
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;
}
Пример #9
0
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);
}
Пример #10
0
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);
}
Пример #11
0
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");
    }
}
Пример #12
0
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);
}
Пример #13
0
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);
}