Mercurial > pidgin
changeset 26125:a773b465935e
Remove static sessions variable from google.c.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Wed, 25 Feb 2009 04:59:22 +0000 |
parents | f10034e0321b |
children | 23816d2e380f |
files | libpurple/protocols/jabber/google.c |
diffstat | 1 files changed, 20 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/google.c Wed Feb 25 03:48:34 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Wed Feb 25 04:59:22 2009 +0000 @@ -57,19 +57,6 @@ char *remote_jid; } GoogleSession; -GHashTable *sessions = NULL; - -static guint -google_session_id_hash(gconstpointer key) -{ - GoogleSessionId *id = (GoogleSessionId*)key; - - guint id_hash = g_str_hash(id->id); - guint init_hash = g_str_hash(id->initiator); - - return 23 * id_hash + init_hash; -} - static gboolean google_session_id_equal(gconstpointer a, gconstpointer b) { @@ -82,8 +69,6 @@ static void google_session_destroy(GoogleSession *session) { - if (sessions != NULL) - g_hash_table_remove(sessions, &(session->id)); g_free(session->id.id); g_free(session->id.initiator); g_free(session->remote_jid); @@ -310,6 +295,8 @@ purple_media_manager_get(), js->gc, "fsrtpconference", session->remote_jid, TRUE); + purple_media_set_prpl_data(session->media, session); + params = jabber_google_session_get_params(js, &num_params); if (purple_media_add_stream(session->media, "google-voice", @@ -327,10 +314,6 @@ g_signal_connect(G_OBJECT(session->media), "state-changed", G_CALLBACK(google_session_state_changed_cb), session); - if (sessions == NULL) - sessions = g_hash_table_new(google_session_id_hash, - google_session_id_equal); - g_hash_table_insert(sessions, &(session->id), session); g_free(params); return session->media; @@ -355,6 +338,8 @@ session->media = purple_media_manager_create_media(purple_media_manager_get(), js->gc, "fsrtpconference", session->remote_jid, FALSE); + purple_media_set_prpl_data(session->media, session); + params = jabber_google_session_get_params(js, &num_params); if (purple_media_add_stream(session->media, "google-voice", session->remote_jid, @@ -501,12 +486,14 @@ jabber_google_session_parse(JabberStream *js, xmlnode *packet) { #ifdef USE_VV - GoogleSession *session; + GoogleSession *session = NULL; GoogleSessionId id; xmlnode *session_node; xmlnode *desc_node; + GList *iter = NULL; + if (strcmp(xmlnode_get_attrib(packet, "type"), "set")) return; @@ -522,9 +509,19 @@ if (!id.initiator) return; - if (sessions == NULL) - sessions = g_hash_table_new(google_session_id_hash, google_session_id_equal); - session = (GoogleSession*)g_hash_table_lookup(sessions, &id); + iter = purple_media_manager_get_media_by_connection( + purple_media_manager_get(), js->gc); + for (; iter; iter = g_list_delete_link(iter, iter)) { + GoogleSession *gsession = + purple_media_get_prpl_data(iter->data); + if (google_session_id_equal(&(gsession->id), &id)) { + session = gsession; + break; + } + } + if (iter != NULL) { + g_list_free(iter); + } if (session) { google_session_parse_iq(js, session, packet); @@ -543,7 +540,6 @@ session->state = UNINIT; session->js = js; session->remote_jid = g_strdup(session->id.initiator); - g_hash_table_insert(sessions, &(session->id), session); google_session_parse_iq(js, session, packet); #else