Commit 73d2deef authored by Marcus Lundblad's avatar Marcus Lundblad Committed by Youness Alaoui

Don't log pending permission messages more than once (when resending the message with

message integrity)
Added some debug output that shall be removed...
parent ecca7064
......@@ -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);
/* 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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment