static void jabber_google_relay_fetch_cb(PurpleUtilFetchUrlData *url_data, gpointer user_data, const gchar *url_text, gsize len, const gchar *error_message) { JabberGoogleRelayCallbackData *data = (JabberGoogleRelayCallbackData *) user_data; GoogleSession *session = data->session; JabberStream *js = session->js; JabberGoogleRelayCallback *cb = data->cb; gchar *relay_ip = NULL; guint relay_udp = 0; guint relay_tcp = 0; guint relay_ssltcp = 0; gchar *relay_username = NULL; gchar *relay_password = NULL; g_free(data); if (url_data) { jabber_google_relay_remove_url_data(js, url_data); } purple_debug_info("jabber", "got response on HTTP request to relay server\n"); if (url_text && len > 0) { purple_debug_info("jabber", "got Google relay request response:\n%s\n", url_text); jabber_google_relay_parse_response(url_text, &relay_ip, &relay_udp, &relay_tcp, &relay_ssltcp, &relay_username, &relay_password); } if (cb) cb(session, relay_ip, relay_udp, relay_tcp, relay_ssltcp, relay_username, relay_password); g_free(relay_ip); g_free(relay_username); g_free(relay_password); }
static void jabber_google_relay_fetch_cb(PurpleHttpConnection *http_conn, PurpleHttpResponse *response, gpointer user_data) { JabberGoogleRelayCallbackData *data = (JabberGoogleRelayCallbackData *) user_data; GoogleSession *session = data->session; JabberGoogleRelayCallback *cb = data->cb; gchar *relay_ip = NULL; guint relay_udp = 0; guint relay_tcp = 0; guint relay_ssltcp = 0; gchar *relay_username = NULL; gchar *relay_password = NULL; g_free(data); purple_debug_info("jabber", "got response on HTTP request to relay server\n"); if (purple_http_response_is_successful(response)) { const gchar *got_data = purple_http_response_get_data(response, NULL); purple_debug_info("jabber", "got Google relay request response:\n%s\n", got_data); jabber_google_relay_parse_response(got_data, &relay_ip, &relay_udp, &relay_tcp, &relay_ssltcp, &relay_username, &relay_password); } if (cb) cb(session, relay_ip, relay_udp, relay_tcp, relay_ssltcp, relay_username, relay_password); g_free(relay_ip); g_free(relay_username); g_free(relay_password); }