# HG changeset patch # User Mike Ruprecht # Date 1237449949 0 # Node ID 5631378c68c834669f5d5fc73604eb6966f82b68 # Parent 1ac93927e7f5abc56bc77378944ef3cc6ea776d4 Make RawUdp candidates know if they have been sent to the remote client. diff -r 1ac93927e7f5 -r 5631378c68c8 libpurple/protocols/jabber/jingle/rawudp.c --- a/libpurple/protocols/jabber/jingle/rawudp.c Thu Mar 19 07:38:24 2009 +0000 +++ b/libpurple/protocols/jabber/jingle/rawudp.c Thu Mar 19 08:05:49 2009 +0000 @@ -59,6 +59,8 @@ new_candidate->id = g_strdup(candidate->id); new_candidate->ip = g_strdup(candidate->ip); new_candidate->port = candidate->port; + + new_candidate->rem_known = candidate->rem_known; return new_candidate; } @@ -91,6 +93,8 @@ candidate->id = g_strdup(id); candidate->ip = g_strdup(ip); candidate->port = port; + + candidate->rem_known = FALSE; return candidate; } @@ -280,6 +284,7 @@ atoi(xmlnode_get_attrib(candidate, "component")), xmlnode_get_attrib(candidate, "ip"), atoi(xmlnode_get_attrib(candidate, "port"))); + rawudp_candidate->rem_known = TRUE; jingle_rawudp_add_remote_candidate(JINGLE_RAWUDP(transport), rawudp_candidate); } @@ -289,6 +294,7 @@ rawudp_candidate = g_boxed_copy(JINGLE_TYPE_RAWUDP_CANDIDATE, rawudp_candidate); rawudp_candidate->component = 2; rawudp_candidate->port = rawudp_candidate->port + 1; + rawudp_candidate->rem_known = TRUE; jingle_rawudp_add_remote_candidate(JINGLE_RAWUDP(transport), rawudp_candidate); } @@ -308,11 +314,17 @@ for (; iter; iter = g_list_next(iter)) { JingleRawUdpCandidate *candidate = iter->data; + xmlnode *xmltransport; + gchar *generation, *component, *port; - xmlnode *xmltransport = xmlnode_new_child(node, "candidate"); - gchar *generation = g_strdup_printf("%d", candidate->generation); - gchar *component = g_strdup_printf("%d", candidate->component); - gchar *port = g_strdup_printf("%d", candidate->port); + if (candidate->rem_known == TRUE) + continue; + candidate->rem_known = TRUE; + + xmltransport = xmlnode_new_child(node, "candidate"); + generation = g_strdup_printf("%d", candidate->generation); + component = g_strdup_printf("%d", candidate->component); + port = g_strdup_printf("%d", candidate->port); xmlnode_set_attrib(xmltransport, "generation", generation); xmlnode_set_attrib(xmltransport, "component", component);