Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
libnice
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
libnice
Commits
9eaa6d5c
Commit
9eaa6d5c
authored
Apr 18, 2014
by
Youness Alaoui
Committed by
Olivier Crête
May 17, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Wrap socket_send in udp-turn to avoid if/else on reliable everywhere
parent
df4bf34b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
38 deletions
+48
-38
socket/udp-turn.c
socket/udp-turn.c
+48
-38
No files found.
socket/udp-turn.c
View file @
9eaa6d5c
...
...
@@ -530,6 +530,30 @@ priv_clear_permissions (UdpTurnPriv *priv)
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
socket_enqueue_data
(
UdpTurnPriv
*
priv
,
const
NiceAddress
*
to
,
guint
len
,
const
gchar
*
buf
,
gboolean
reliable
)
...
...
@@ -560,12 +584,8 @@ socket_dequeue_all_data (UdpTurnPriv *priv, const NiceAddress *to)
(
SendData
*
)
g_queue_pop_head
(
send_queue
);
nice_debug
(
"dequeuing data"
);
if
(
data
->
reliable
)
nice_socket_send_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
data
->
data_len
,
data
->
data
);
else
nice_socket_send
(
priv
->
base_socket
,
&
priv
->
server_addr
,
data
->
data_len
,
data
->
data
);
_socket_send_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
data
->
data_len
,
data
->
data
,
data
->
reliable
);
g_free
(
data
->
data
);
g_slice_free
(
SendData
,
data
);
...
...
@@ -640,12 +660,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
goto
error
;
}
}
else
{
if
(
reliable
)
ret
=
nice_socket_send_messages_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
message
,
1
);
else
ret
=
nice_socket_send_messages
(
priv
->
base_socket
,
&
priv
->
server_addr
,
message
,
1
);
ret
=
_socket_send_messages_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
message
,
1
,
reliable
);
if
(
ret
==
1
)
return
output_message_get_size
(
message
);
...
...
@@ -743,12 +759,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
GOutputVector
local_buf
=
{
buffer
,
msg_len
};
NiceOutputMessage
local_message
=
{
&
local_buf
,
1
};
if
(
reliable
)
ret
=
nice_socket_send_messages_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
&
local_message
,
1
);
else
ret
=
nice_socket_send_messages
(
priv
->
base_socket
,
&
priv
->
server_addr
,
&
local_message
,
1
);
ret
=
_socket_send_messages_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
&
local_message
,
1
,
reliable
);
if
(
ret
==
1
)
return
msg_len
;
...
...
@@ -757,10 +769,8 @@ socket_send_message (NiceSocket *sock, const NiceAddress *to,
}
/* Error condition pass through to the base socket. */
if
(
reliable
)
ret
=
nice_socket_send_messages_reliable
(
priv
->
base_socket
,
to
,
message
,
1
);
else
ret
=
nice_socket_send_messages
(
priv
->
base_socket
,
to
,
message
,
1
);
ret
=
_socket_send_messages_wrapped
(
priv
->
base_socket
,
to
,
message
,
1
,
reliable
);
if
(
ret
==
1
)
return
output_message_get_size
(
message
);
return
ret
;
...
...
@@ -1460,9 +1470,9 @@ priv_retransmissions_tick_unlocked (UdpTurnPriv *priv)
}
case
STUN_USAGE_TIMER_RETURN_RETRANSMIT
:
/* Retransmit */
nice_socket_sen
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
_socket_send_wrappe
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_message_length
(
&
priv
->
current_binding_msg
->
message
),
(
gchar
*
)
priv
->
current_binding_msg
->
buffer
);
(
gchar
*
)
priv
->
current_binding_msg
->
buffer
,
FALSE
);
ret
=
TRUE
;
break
;
case
STUN_USAGE_TIMER_RETURN_SUCCESS
:
...
...
@@ -1525,9 +1535,9 @@ priv_retransmissions_create_permission_tick_unlocked (UdpTurnPriv *priv, GList *
}
case
STUN_USAGE_TIMER_RETURN_RETRANSMIT
:
/* Retransmit */
nice_socket_sen
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
_socket_send_wrappe
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_message_length
(
&
current_create_permission_msg
->
message
),
(
gchar
*
)
current_create_permission_msg
->
buffer
);
(
gchar
*
)
current_create_permission_msg
->
buffer
,
FALSE
);
ret
=
TRUE
;
break
;
case
STUN_USAGE_TIMER_RETURN_SUCCESS
:
...
...
@@ -1657,15 +1667,15 @@ priv_send_turn_message (UdpTurnPriv *priv, TURNMessage *msg)
}
if
(
nice_socket_is_reliable
(
priv
->
base_socket
))
{
nice_socket_send_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_len
,
(
gchar
*
)
msg
->
buffer
);
_socket_send_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_len
,
(
gchar
*
)
msg
->
buffer
,
TRUE
);
stun_timer_start_reliable
(
&
msg
->
timer
,
STUN_TIMER_DEFAULT_RELIABLE_TIMEOUT
);
}
else
{
if
(
nice_socket_send_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_len
,
(
gchar
*
)
msg
->
buffer
)
<
0
)
nice_socket_sen
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_len
,
(
gchar
*
)
msg
->
buffer
);
if
(
_socket_send_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_len
,
(
gchar
*
)
msg
->
buffer
,
TRUE
)
<
0
)
_socket_send_wrappe
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
stun_len
,
(
gchar
*
)
msg
->
buffer
,
FALSE
);
stun_timer_start
(
&
msg
->
timer
,
STUN_TIMER_DEFAULT_TIMEOUT
,
STUN_TIMER_DEFAULT_MAX_RETRANSMISSIONS
);
}
...
...
@@ -1719,14 +1729,14 @@ priv_send_create_permission(UdpTurnPriv *priv, StunMessage *resp,
if
(
msg_buf_len
>
0
)
{
if
(
nice_socket_is_reliable
(
priv
->
base_socket
))
{
res
=
nice_socket_send_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
msg_buf_len
,
(
gchar
*
)
msg
->
buffer
);
res
=
_socket_send_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
msg_buf_len
,
(
gchar
*
)
msg
->
buffer
,
TRUE
);
}
else
{
res
=
nice_socket_send_reliable
(
priv
->
base_socket
,
&
priv
->
server_addr
,
msg_buf_len
,
(
gchar
*
)
msg
->
buffer
);
res
=
_socket_send_wrapped
(
priv
->
base_socket
,
&
priv
->
server_addr
,
msg_buf_len
,
(
gchar
*
)
msg
->
buffer
,
TRUE
);
if
(
res
<
0
)
res
=
nice_socket_sen
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
msg_buf_len
,
(
gchar
*
)
msg
->
buffer
);
res
=
_socket_send_wrappe
d
(
priv
->
base_socket
,
&
priv
->
server_addr
,
msg_buf_len
,
(
gchar
*
)
msg
->
buffer
,
FALSE
);
}
if
(
nice_socket_is_reliable
(
priv
->
base_socket
))
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment