Commit d26f84fd authored by Youness Alaoui's avatar Youness Alaoui

make udp relay socket modify the agent's socketptr. Also make sure we try to...

make udp relay socket modify the agent's socketptr. Also make sure we try to parse with the socket from the same stream and component
parent 0f9d0a98
...@@ -1333,9 +1333,10 @@ _nice_agent_recv ( ...@@ -1333,9 +1333,10 @@ _nice_agent_recv (
#endif #endif
for (i = component->local_candidates; i; i = i->next) { for (i = component->local_candidates; i; i = i->next) {
NiceCandidate *cand = i->data; NiceCandidate *cand = i->data;
if (cand->type == NICE_CANDIDATE_TYPE_RELAYED) { if (cand->type == NICE_CANDIDATE_TYPE_RELAYED &&
len = nice_udp_turn_socket_parse_recv (cand->sockptr, &from, len, buf, &from, buf, len); cand->stream_id == stream->id && cand->component_id == component->id) {
socket = cand->sockptr; len = nice_udp_turn_socket_parse_recv (cand->sockptr, &socket,
&from, len, buf, &from, buf, len);
} }
} }
} }
......
...@@ -364,6 +364,7 @@ nice_udp_turn_socket_set_peer (NiceSocket *sock, NiceAddress *peer) ...@@ -364,6 +364,7 @@ nice_udp_turn_socket_set_peer (NiceSocket *sock, NiceAddress *peer)
gint gint
nice_udp_turn_socket_parse_recv ( nice_udp_turn_socket_parse_recv (
NiceSocket *sock, NiceSocket *sock,
NiceSocket **from_sock,
NiceAddress *from, NiceAddress *from,
guint len, guint len,
gchar *buf, gchar *buf,
...@@ -502,6 +503,7 @@ nice_udp_turn_socket_parse_recv ( ...@@ -502,6 +503,7 @@ nice_udp_turn_socket_parse_recv (
nice_address_set_from_sockaddr (from, (struct sockaddr *)&sa); nice_address_set_from_sockaddr (from, (struct sockaddr *)&sa);
*from_sock = sock;
memmove (buf, data, len > data_len ? data_len : len); memmove (buf, data, len > data_len ? data_len : len);
return len > data_len ? data_len : len; return len > data_len ? data_len : len;
} else { } else {
...@@ -528,9 +530,11 @@ nice_udp_turn_socket_parse_recv ( ...@@ -528,9 +530,11 @@ nice_udp_turn_socket_parse_recv (
if (binding) { if (binding) {
*from = binding->peer; *from = binding->peer;
*from_sock = sock;
} else { } else {
*from = *recv_from; *from = *recv_from;
} }
memmove (buf, recv_buf, len > recv_len ? recv_len : len); memmove (buf, recv_buf, len > recv_len ? recv_len : len);
return len > recv_len ? recv_len : len; return len > recv_len ? recv_len : len;
...@@ -562,12 +566,13 @@ socket_recv ( ...@@ -562,12 +566,13 @@ socket_recv (
uint8_t recv_buf[STUN_MAX_MESSAGE_SIZE]; uint8_t recv_buf[STUN_MAX_MESSAGE_SIZE];
gint recv_len; gint recv_len;
NiceAddress recv_from; NiceAddress recv_from;
NiceSocket *dummy;;
recv_len = nice_socket_recv (priv->base_socket, &recv_from, recv_len = nice_socket_recv (priv->base_socket, &recv_from,
sizeof(recv_buf), (gchar *) recv_buf); sizeof(recv_buf), (gchar *) recv_buf);
return nice_udp_turn_socket_parse_recv (sock, from, len, buf, &recv_from, return nice_udp_turn_socket_parse_recv (sock, &dummy, from, len, buf,
(gchar *) recv_buf, (guint) recv_len); &recv_from, (gchar *) recv_buf, (guint) recv_len);
} }
static gboolean static gboolean
......
...@@ -52,6 +52,7 @@ typedef enum { ...@@ -52,6 +52,7 @@ typedef enum {
gint gint
nice_udp_turn_socket_parse_recv ( nice_udp_turn_socket_parse_recv (
NiceSocket *sock, NiceSocket *sock,
NiceSocket **from_sock,
NiceAddress *from, NiceAddress *from,
guint len, guint len,
gchar *buf, gchar *buf,
......
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