Commit 9eaa6d5c authored by Youness Alaoui's avatar Youness Alaoui Committed by Olivier Crête

Wrap socket_send in udp-turn to avoid if/else on reliable everywhere

parent df4bf34b
...@@ -530,6 +530,30 @@ priv_clear_permissions (UdpTurnPriv *priv) ...@@ -530,6 +530,30 @@ priv_clear_permissions (UdpTurnPriv *priv)
priv->permissions = NULL; priv->permissions = NULL;
} }
static gint
_socket_send_messages_wrapped (NiceSocket *sock, const NiceAddress *to,
const NiceOutputMessage *messages, guint n_messages, gboolean reliable)
{
if (reliable)
return nice_socket_send_messages_reliable (sock, to, messages, n_messages);
else
return nice_socket_send_messages (sock, to, messages, n_messages);
}
static gssize
_socket_send_wrapped (NiceSocket *sock, const NiceAddress *to,
guint len, const gchar *buf, gboolean reliable)
{
GOutputVector local_buf = { buf, len };
NiceOutputMessage local_message = { &local_buf, 1};
gint ret;
ret = _socket_send_messages_wrapped (sock, to, &local_message, 1, reliable);
if (ret == 1)
return len;
return ret;
}
static void static void
socket_enqueue_data(UdpTurnPriv *priv, const NiceAddress *to, socket_enqueue_data(UdpTurnPriv *priv, const NiceAddress *to,
guint len, const gchar *buf, gboolean reliable) guint len, const gchar *buf, gboolean reliable)
...@@ -560,12 +584,8 @@ socket_dequeue_all_data (UdpTurnPriv *priv, const NiceAddress *to) ...@@ -560,12 +584,8 @@ socket_dequeue_all_data (UdpTurnPriv *priv, const NiceAddress *to)
(SendData *) g_queue_pop_head(send_queue); (SendData *) g_queue_pop_head(send_queue);
nice_debug ("dequeuing data"); nice_debug ("dequeuing data");
if (data->reliable) _socket_send_wrapped (priv->base_socket, &priv->server_addr,
nice_socket_send_reliable (priv->base_socket, &priv->server_addr, data->data_len, data->data, data->reliable);
data->data_len, data->data);
else
nice_socket_send (priv->base_socket, &priv->server_addr, data->data_len,
data->data);
g_free (data->data); g_free (data->data);
g_slice_free (SendData, data); g_slice_free (SendData, data);
...@@ -640,12 +660,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to, ...@@ -640,12 +660,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
goto error; goto error;
} }
} else { } else {
if (reliable) ret = _socket_send_messages_wrapped (priv->base_socket,
ret = nice_socket_send_messages_reliable (priv->base_socket, &priv->server_addr, message, 1, reliable);
&priv->server_addr, message, 1);
else
ret = nice_socket_send_messages (priv->base_socket, &priv->server_addr,
message, 1);
if (ret == 1) if (ret == 1)
return output_message_get_size (message); return output_message_get_size (message);
...@@ -743,12 +759,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to, ...@@ -743,12 +759,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
GOutputVector local_buf = { buffer, msg_len }; GOutputVector local_buf = { buffer, msg_len };
NiceOutputMessage local_message = {&local_buf, 1}; NiceOutputMessage local_message = {&local_buf, 1};
if (reliable) ret = _socket_send_messages_wrapped (priv->base_socket,
ret = nice_socket_send_messages_reliable (priv->base_socket, &priv->server_addr, &local_message, 1, reliable);
&priv->server_addr, &local_message, 1);
else
ret = nice_socket_send_messages (priv->base_socket, &priv->server_addr,
&local_message, 1);
if (ret == 1) if (ret == 1)
return msg_len; return msg_len;
...@@ -757,10 +769,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to, ...@@ -757,10 +769,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
} }
/* Error condition pass through to the base socket. */ /* Error condition pass through to the base socket. */
if (reliable) ret = _socket_send_messages_wrapped (priv->base_socket, to, message, 1,
ret = nice_socket_send_messages_reliable (priv->base_socket, to, message, 1); reliable);
else
ret = nice_socket_send_messages (priv->base_socket, to, message, 1);
if (ret == 1) if (ret == 1)
return output_message_get_size (message); return output_message_get_size (message);
return ret; return ret;
...@@ -1460,9 +1470,9 @@ priv_retransmissions_tick_unlocked (UdpTurnPriv *priv) ...@@ -1460,9 +1470,9 @@ priv_retransmissions_tick_unlocked (UdpTurnPriv *priv)
} }
case STUN_USAGE_TIMER_RETURN_RETRANSMIT: case STUN_USAGE_TIMER_RETURN_RETRANSMIT:
/* Retransmit */ /* Retransmit */
nice_socket_send (priv->base_socket, &priv->server_addr, _socket_send_wrapped (priv->base_socket, &priv->server_addr,
stun_message_length (&priv->current_binding_msg->message), stun_message_length (&priv->current_binding_msg->message),
(gchar *)priv->current_binding_msg->buffer); (gchar *)priv->current_binding_msg->buffer, FALSE);
ret = TRUE; ret = TRUE;
break; break;
case STUN_USAGE_TIMER_RETURN_SUCCESS: case STUN_USAGE_TIMER_RETURN_SUCCESS:
...@@ -1525,9 +1535,9 @@ priv_retransmissions_create_permission_tick_unlocked (UdpTurnPriv *priv, GList * ...@@ -1525,9 +1535,9 @@ priv_retransmissions_create_permission_tick_unlocked (UdpTurnPriv *priv, GList *
} }
case STUN_USAGE_TIMER_RETURN_RETRANSMIT: case STUN_USAGE_TIMER_RETURN_RETRANSMIT:
/* Retransmit */ /* Retransmit */
nice_socket_send (priv->base_socket, &priv->server_addr, _socket_send_wrapped (priv->base_socket, &priv->server_addr,
stun_message_length (&current_create_permission_msg->message), stun_message_length (&current_create_permission_msg->message),
(gchar *)current_create_permission_msg->buffer); (gchar *)current_create_permission_msg->buffer, FALSE);
ret = TRUE; ret = TRUE;
break; break;
case STUN_USAGE_TIMER_RETURN_SUCCESS: case STUN_USAGE_TIMER_RETURN_SUCCESS:
...@@ -1657,15 +1667,15 @@ priv_send_turn_message (UdpTurnPriv *priv, TURNMessage *msg) ...@@ -1657,15 +1667,15 @@ priv_send_turn_message (UdpTurnPriv *priv, TURNMessage *msg)
} }
if (nice_socket_is_reliable (priv->base_socket)) { if (nice_socket_is_reliable (priv->base_socket)) {
nice_socket_send_reliable (priv->base_socket, &priv->server_addr, _socket_send_wrapped (priv->base_socket, &priv->server_addr,
stun_len, (gchar *)msg->buffer); stun_len, (gchar *)msg->buffer, TRUE);
stun_timer_start_reliable (&msg->timer, stun_timer_start_reliable (&msg->timer,
STUN_TIMER_DEFAULT_RELIABLE_TIMEOUT); STUN_TIMER_DEFAULT_RELIABLE_TIMEOUT);
} else { } else {
if (nice_socket_send_reliable (priv->base_socket, &priv->server_addr, if (_socket_send_wrapped (priv->base_socket, &priv->server_addr,
stun_len, (gchar *)msg->buffer) < 0) stun_len, (gchar *)msg->buffer, TRUE) < 0)
nice_socket_send (priv->base_socket, &priv->server_addr, _socket_send_wrapped (priv->base_socket, &priv->server_addr,
stun_len, (gchar *)msg->buffer); stun_len, (gchar *)msg->buffer, FALSE);
stun_timer_start (&msg->timer, STUN_TIMER_DEFAULT_TIMEOUT, stun_timer_start (&msg->timer, STUN_TIMER_DEFAULT_TIMEOUT,
STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS); STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS);
} }
...@@ -1719,14 +1729,14 @@ priv_send_create_permission(UdpTurnPriv *priv, StunMessage *resp, ...@@ -1719,14 +1729,14 @@ priv_send_create_permission(UdpTurnPriv *priv, StunMessage *resp,
if (msg_buf_len > 0) { if (msg_buf_len > 0) {
if (nice_socket_is_reliable (priv->base_socket)) { if (nice_socket_is_reliable (priv->base_socket)) {
res = nice_socket_send_reliable (priv->base_socket, &priv->server_addr, res = _socket_send_wrapped (priv->base_socket, &priv->server_addr,
msg_buf_len, (gchar *) msg->buffer); msg_buf_len, (gchar *) msg->buffer, TRUE);
} else { } else {
res = nice_socket_send_reliable (priv->base_socket, &priv->server_addr, res = _socket_send_wrapped (priv->base_socket, &priv->server_addr,
msg_buf_len, (gchar *) msg->buffer); msg_buf_len, (gchar *) msg->buffer, TRUE);
if (res < 0) if (res < 0)
res = nice_socket_send (priv->base_socket, &priv->server_addr, res = _socket_send_wrapped (priv->base_socket, &priv->server_addr,
msg_buf_len, (gchar *) msg->buffer); msg_buf_len, (gchar *) msg->buffer, FALSE);
} }
if (nice_socket_is_reliable (priv->base_socket)) { if (nice_socket_is_reliable (priv->base_socket)) {
......
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