summaryrefslogtreecommitdiff
path: root/socket
diff options
context:
space:
mode:
authorMarcus Lundblad <ml@update.uu.se>2010-10-25 23:26:50 +0200
committerYouness Alaoui <youness.alaoui@collabora.co.uk>2010-12-14 20:53:04 -0500
commit73d2deef48a7aff59ed58df3146ab60055a1f31b (patch)
tree123236f97c54b765fae390649b3895d9507cd49c /socket
parentecca706440e081b1a17dd79be8a3f3e8429001e9 (diff)
downloadlibnice-73d2deef48a7aff59ed58df3146ab60055a1f31b.tar.gz
Don't log pending permission messages more than once (when resending the message with
message integrity) Added some debug output that shall be removed...
Diffstat (limited to 'socket')
-rw-r--r--socket/turn.c57
1 files changed, 43 insertions, 14 deletions
diff --git a/socket/turn.c b/socket/turn.c
index 6c289a4..153c86d 100644
--- a/socket/turn.c
+++ b/socket/turn.c
@@ -514,8 +514,16 @@ socket_send (NiceSocket *sock, const NiceAddress *to,
if (priv->compatibility == NICE_TURN_SOCKET_COMPATIBILITY_RFC5766) {
if (!priv_has_permission_for_peer (priv, to) &&
!priv_has_sent_permission_for_peer (priv, to)) {
+ nice_debug ("installed permissions: %d\n", g_list_length (priv->permissions));
+ nice_debug ("sent permissions: %d\n", g_list_length (priv->sent_permissions));
+ nice_debug ("permission: %d\n",
+ priv_has_permission_for_peer (priv, to));
+ nice_debug ("has sent permission: %d\n",
+ priv_has_sent_permission_for_peer (priv, to));
nice_debug ("no permission installed for peer");
priv_send_create_permission (priv, NULL, 0, NULL, 0, to);
+ nice_debug ("has sent permission: %d\n",
+ priv_has_sent_permission_for_peer (priv, to));
}
}
@@ -846,17 +854,32 @@ nice_turn_socket_parse_recv (NiceSocket *sock, NiceSocket **from_sock,
/* we now have a permission installed for this peer */
GList *iter;
+ nice_debug ("have %d sent permissions pending\n",
+ g_list_length (priv->sent_permissions));
+
for (iter = priv->sent_permissions ; iter ; iter = g_list_next (iter)) {
NiceAddress *address = (NiceAddress *) iter->data;
-
+
if (nice_address_equal (address, to)) {
nice_address_free ((NiceAddress *) iter->data);
priv->sent_permissions =
- g_list_remove_link (priv->sent_permissions, iter);
- break;
+ g_list_delete_link (priv->sent_permissions, iter);
}
}
+ for (iter = priv->sent_permissions ; iter ; iter = g_list_next (iter)) {
+ NiceAddress *address = (NiceAddress *) iter->data;
+ gchar addr[NICE_ADDRESS_STRING_LEN];
+
+ nice_address_to_string (address, addr);
+ nice_debug ("pending permission left for %s\n", addr);
+ }
+
+ nice_debug ("sent permissions left: %d\n",
+ g_list_length (priv->sent_permissions));
+
+ exit (0);
+
priv->permissions =
g_list_append (priv->permissions, to);
@@ -1026,7 +1049,7 @@ priv_retransmissions_create_permission_tick_unlocked (TurnPriv *priv)
NiceAddress *to = nice_address_new ();
struct sockaddr addr;
socklen_t addr_len = sizeof(addr);
- GList *sent_permission;
+ GList *iter;
stun_message_id (&priv->current_create_permission_msg->message, id);
stun_agent_forget_transaction (&priv->agent, id);
@@ -1034,9 +1057,17 @@ priv_retransmissions_create_permission_tick_unlocked (TurnPriv *priv)
STUN_ATTRIBUTE_XOR_PEER_ADDRESS, &addr,
&addr_len);
nice_address_set_from_sockaddr (to, &addr);
- sent_permission =
- g_list_find_custom (priv->sent_permissions, to,
- (GCompareFunc) nice_address_equal);
+
+ for (iter = priv->sent_permissions ; iter ; iter = g_list_next (iter)) {
+ NiceAddress *address = (NiceAddress *) iter->data;
+
+ if (nice_address_equal (address, to)) {
+ nice_address_free (address);
+ priv->sent_permissions =
+ g_list_delete_link (priv->sent_permissions, iter);
+ break;
+ }
+ }
g_free (priv->current_create_permission_msg);
priv->current_create_permission_msg = NULL;
@@ -1047,12 +1078,6 @@ priv_retransmissions_create_permission_tick_unlocked (TurnPriv *priv)
fail eventually anyway */
priv->permissions = g_list_append (priv->permissions, to);
- if (sent_permission) {
- nice_address_free ((NiceAddress *) sent_permission->data);
- priv->sent_permissions =
- g_list_delete_link (priv->sent_permissions, sent_permission);
- }
-
socket_dequeue_all_data (priv, to);
break;
@@ -1199,7 +1224,11 @@ priv_send_create_permission(TurnPriv *priv, uint8_t *realm, gsize realm_len,
nice_address_to_string (to, addr_str);
nice_debug("creating CreatePermission message for %s", addr_str);
- priv->sent_permissions = g_list_append (priv->sent_permissions, to);
+
+ /* register this peer as being pening a permission (if not already pending) */
+ if (!priv_has_sent_permission_for_peer (priv, to)) {
+ priv->sent_permissions = g_list_append (priv->sent_permissions, to);
+ }
nice_address_copy_to_sockaddr (peer, &addr);