Mercurial > pidgin.yaz
diff libpurple/protocols/jabber/google.c @ 26488:2d332d327a0e
Hide and GObjectify PurpleMediaCandidate.
author | Mike Ruprecht <maiku@soc.pidgin.im> |
---|---|
date | Fri, 03 Apr 2009 00:21:10 +0000 |
parents | 217574ec2a34 |
children | 4f14455a86d2 ae24e54a5014 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/google.c Thu Apr 02 04:23:14 2009 +0000 +++ b/libpurple/protocols/jabber/google.c Fri Apr 03 00:21:10 2009 +0000 @@ -110,13 +110,14 @@ for (;candidates;candidates = candidates->next) { JabberIq *iq; - char port[8]; - char pref[8]; + gchar *ip, *port, *pref, *username, *password; + PurpleMediaCandidateType type; xmlnode *sess; xmlnode *candidate; transport = (PurpleMediaCandidate*)(candidates->data); - if (transport->component_id != PURPLE_MEDIA_COMPONENT_RTP) + if (purple_media_candidate_get_component_id(transport) + != PURPLE_MEDIA_COMPONENT_RTP) continue; iq = jabber_iq_new(session->js, JABBER_IQ_SET); @@ -126,35 +127,49 @@ candidate = xmlnode_new("candidate"); - g_snprintf(port, sizeof(port), "%d", transport->port); - g_snprintf(pref, sizeof(pref), "%f", - transport->priority/1000.0); + ip = purple_media_candidate_get_ip(transport); + port = g_strdup_printf("%d", + purple_media_candidate_get_port(transport)); + pref = g_strdup_printf("%f", + purple_media_candidate_get_priority(transport) + /1000.0); + username = purple_media_candidate_get_username(transport); + password = purple_media_candidate_get_password(transport); + type = purple_media_candidate_get_candidate_type(transport); - xmlnode_set_attrib(candidate, "address", transport->ip); + xmlnode_set_attrib(candidate, "address", ip); xmlnode_set_attrib(candidate, "port", port); xmlnode_set_attrib(candidate, "name", "rtp"); - xmlnode_set_attrib(candidate, "username", transport->username); + xmlnode_set_attrib(candidate, "username", username); /* * As of this writing, Farsight 2 in Google compatibility * mode doesn't provide a password. The Gmail client * requires this to be set. */ xmlnode_set_attrib(candidate, "password", - transport->password != NULL ? - transport->password : ""); + password != NULL ? password : ""); xmlnode_set_attrib(candidate, "preference", pref); - xmlnode_set_attrib(candidate, "protocol", transport->proto == - PURPLE_MEDIA_NETWORK_PROTOCOL_UDP ? "udp" : "tcp"); - xmlnode_set_attrib(candidate, "type", transport->type == + xmlnode_set_attrib(candidate, "protocol", + purple_media_candidate_get_protocol(transport) + == PURPLE_MEDIA_NETWORK_PROTOCOL_UDP ? + "udp" : "tcp"); + xmlnode_set_attrib(candidate, "type", type == PURPLE_MEDIA_CANDIDATE_TYPE_HOST ? "local" : - transport->type == + type == PURPLE_MEDIA_CANDIDATE_TYPE_SRFLX ? "stun" : - transport->type == - PURPLE_MEDIA_CANDIDATE_TYPE_RELAY ? "relay" : NULL); + type == + PURPLE_MEDIA_CANDIDATE_TYPE_RELAY ? "relay" : + NULL); xmlnode_set_attrib(candidate, "generation", "0"); xmlnode_set_attrib(candidate, "network", "0"); xmlnode_insert_child(sess, candidate); + g_free(ip); + g_free(port); + g_free(pref); + g_free(username); + g_free(password); + jabber_iq_send(iq); } } @@ -455,9 +470,8 @@ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP, xmlnode_get_attrib(cand, "address"), atoi(xmlnode_get_attrib(cand, "port"))); - - info->username = g_strdup(xmlnode_get_attrib(cand, "username")); - info->password = g_strdup(xmlnode_get_attrib(cand, "password")); + g_object_set(info, "username", xmlnode_get_attrib(cand, "username"), + "password", xmlnode_get_attrib(cand, "password"), NULL); list = g_list_append(list, info); }