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
21ecb824
Commit
21ecb824
authored
Feb 04, 2010
by
Youness Alaoui
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix various gtk-doc warnings/errors and typos
parent
31f73110
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
39 additions
and
28 deletions
+39
-28
agent/agent.c
agent/agent.c
+2
-2
agent/agent.h
agent/agent.h
+1
-1
agent/component.h
agent/component.h
+3
-1
agent/pseudotcp.h
agent/pseudotcp.h
+7
-7
docs/reference/libnice/Makefile.am
docs/reference/libnice/Makefile.am
+4
-3
stun/sha1.c
stun/sha1.c
+12
-4
stun/stunmessage.h
stun/stunmessage.h
+6
-6
stun/tools/stund.c
stun/tools/stund.c
+1
-1
stun/usages/bind.c
stun/usages/bind.c
+1
-1
stun/usages/bind.h
stun/usages/bind.h
+2
-2
No files found.
agent/agent.c
View file @
21ecb824
...
@@ -436,7 +436,7 @@ nice_agent_class_init (NiceAgentClass *klass)
...
@@ -436,7 +436,7 @@ nice_agent_class_init (NiceAgentClass *klass)
* NiceAgent:upnp-timeout:
* NiceAgent:upnp-timeout:
*
*
* The maximum amount of time to wait for UPnP discovery to finish before
* The maximum amount of time to wait for UPnP discovery to finish before
* signaling the candidate-gathering-done signal
* signaling the
#NiceAgent::
candidate-gathering-done signal
*
*
* Since: 0.0.7
* Since: 0.0.7
*/
*/
...
@@ -551,7 +551,7 @@ nice_agent_class_init (NiceAgentClass *klass)
...
@@ -551,7 +551,7 @@ nice_agent_class_init (NiceAgentClass *klass)
* @foundation: The foundation of the new candidate
* @foundation: The foundation of the new candidate
*
*
* This signal is fired when the agent discovers a new candidate
* This signal is fired when the agent discovers a new candidate
* <para> See also: #NiceAgent::candidate
s
-gathering-done </para>
* <para> See also: #NiceAgent::candidate-gathering-done </para>
*/
*/
signals
[
SIGNAL_NEW_CANDIDATE
]
=
signals
[
SIGNAL_NEW_CANDIDATE
]
=
g_signal_new
(
g_signal_new
(
...
...
agent/agent.h
View file @
21ecb824
...
@@ -516,7 +516,7 @@ nice_agent_send (
...
@@ -516,7 +516,7 @@ nice_agent_send (
The caller owns the returned GSList as well as the candidates contained
The caller owns the returned GSList as well as the candidates contained
within it.
within it.
To get full results, the client should wait for the
To get full results, the client should wait for the
#NiceAgent::candidate
s
-gathering-done signal.
#NiceAgent::candidate-gathering-done signal.
</para>
</para>
</note>
</note>
*
*
...
...
agent/component.h
View file @
21ecb824
...
@@ -50,11 +50,13 @@ typedef struct _Component Component;
...
@@ -50,11 +50,13 @@ typedef struct _Component Component;
#include "stun/usages/timer.h"
#include "stun/usages/timer.h"
#include "pseudotcp.h"
#include "pseudotcp.h"
#include "stream.h"
#include "stream.h"
#include "socket.h"
G_BEGIN_DECLS
G_BEGIN_DECLS
/* (ICE §4.1.1.1, ID-19) ""For RTP-based media streams, the RTP itself has a component
/* (ICE §4.1.1.1, ID-19)
* ""For RTP-based media streams, the RTP itself has a component
* ID of 1, and RTCP a component ID of 2. If an agent is using RTCP it MUST
* ID of 1, and RTCP a component ID of 2. If an agent is using RTCP it MUST
* obtain a candidate for it. If an agent is using both RTP and RTCP, it
* obtain a candidate for it. If an agent is using both RTP and RTCP, it
* would end up with 2*K host candidates if an agent has K interfaces.""
* would end up with 2*K host candidates if an agent has K interfaces.""
...
...
agent/pseudotcp.h
View file @
21ecb824
...
@@ -142,7 +142,7 @@ typedef enum {
...
@@ -142,7 +142,7 @@ typedef enum {
*
*
* An enum representing the result value of the write operation requested by
* An enum representing the result value of the write operation requested by
* the #PseudoTcpSocket.
* the #PseudoTcpSocket.
* <para> See also:
#
PseudoTcpCallbacks:WritePacket </para>
* <para> See also:
%
PseudoTcpCallbacks:WritePacket </para>
*/
*/
typedef
enum
{
typedef
enum
{
WR_SUCCESS
,
WR_SUCCESS
,
...
@@ -204,7 +204,7 @@ PseudoTcpSocket *pseudo_tcp_socket_new (guint32 conversation,
...
@@ -204,7 +204,7 @@ PseudoTcpSocket *pseudo_tcp_socket_new (guint32 conversation,
*
*
* Connects the #PseudoTcpSocket to the peer with the same conversation id.
* Connects the #PseudoTcpSocket to the peer with the same conversation id.
* The connection will only be successful after the
* The connection will only be successful after the
*
#
PseudoTcpCallbacks:PseudoTcpOpened callback is called
*
%
PseudoTcpCallbacks:PseudoTcpOpened callback is called
*
*
* Returns: %TRUE on success, %FALSE on failure (not in %TCP_LISTEN state)
* Returns: %TRUE on success, %FALSE on failure (not in %TCP_LISTEN state)
* <para> See also: pseudo_tcp_socket_get_error() </para>
* <para> See also: pseudo_tcp_socket_get_error() </para>
...
@@ -222,12 +222,12 @@ gboolean pseudo_tcp_socket_connect(PseudoTcpSocket *self);
...
@@ -222,12 +222,12 @@ gboolean pseudo_tcp_socket_connect(PseudoTcpSocket *self);
*
*
<note>
<note>
<para>
<para>
Only call this on the
#
PseudoTcpCallbacks:PseudoTcpReadable callback.
Only call this on the
%
PseudoTcpCallbacks:PseudoTcpReadable callback.
</para>
</para>
<para>
<para>
This function should be called in a loop. If this function does not
This function should be called in a loop. If this function does not
return -1 with EWOULDBLOCK as the error, the
return -1 with EWOULDBLOCK as the error, the
#
PseudoTcpCallbacks:PseudoTcpReadable callback will not be called again.
%
PseudoTcpCallbacks:PseudoTcpReadable callback will not be called again.
</para>
</para>
</note>
</note>
*
*
...
@@ -248,7 +248,7 @@ gint pseudo_tcp_socket_recv(PseudoTcpSocket *self, char * buffer, size_t len);
...
@@ -248,7 +248,7 @@ gint pseudo_tcp_socket_recv(PseudoTcpSocket *self, char * buffer, size_t len);
<note>
<note>
<para>
<para>
If this function return -1 with EWOULDBLOCK as the error, or if the return
If this function return -1 with EWOULDBLOCK as the error, or if the return
value is lower than @len, then the
#
PseudoTcpCallbacks:PseudoTcpWritable
value is lower than @len, then the
%
PseudoTcpCallbacks:PseudoTcpWritable
callback will be called when the socket will become writable.
callback will be called when the socket will become writable.
</para>
</para>
</note>
</note>
...
@@ -263,14 +263,14 @@ gint pseudo_tcp_socket_send(PseudoTcpSocket *self, const char * buffer,
...
@@ -263,14 +263,14 @@ gint pseudo_tcp_socket_send(PseudoTcpSocket *self, const char * buffer,
/**
/**
* pseudo_tcp_socket_close:
* pseudo_tcp_socket_close:
* @self: The #PseudoTcpSocket object.
* @self: The #PseudoTcpSocket object.
* @force: %TRUE to close the socket forcefully, %F
alse
to close it gracefully
* @force: %TRUE to close the socket forcefully, %F
ALSE
to close it gracefully
*
*
* Close the socket. IF @force is set to %FALSE, the socket will finish sending
* Close the socket. IF @force is set to %FALSE, the socket will finish sending
* pending data before closing.
* pending data before closing.
*
*
<note>
<note>
<para>
<para>
The
#
PseudoTcpCallbacks:PseudoTcpClosed callback will not be called once
The
%
PseudoTcpCallbacks:PseudoTcpClosed callback will not be called once
the socket gets closed. It is only used for aborted connection.
the socket gets closed. It is only used for aborted connection.
Instead, the socket gets closed when the pseudo_tcp_socket_get_next_clock()
Instead, the socket gets closed when the pseudo_tcp_socket_get_next_clock()
function returns FALSE.
function returns FALSE.
...
...
docs/reference/libnice/Makefile.am
View file @
21ecb824
...
@@ -46,8 +46,9 @@ HFILE_GLOB=$(DOC_SOURCE_DIR)/agent/agent.h $(DOC_SOURCE_DIR)/agent/address.h \
...
@@ -46,8 +46,9 @@ HFILE_GLOB=$(DOC_SOURCE_DIR)/agent/agent.h $(DOC_SOURCE_DIR)/agent/address.h \
$(DOC_SOURCE_DIR)/stun/usages/bind.h
\
$(DOC_SOURCE_DIR)/stun/usages/bind.h
\
$(DOC_SOURCE_DIR)/stun/usages/ice.h
\
$(DOC_SOURCE_DIR)/stun/usages/ice.h
\
$(DOC_SOURCE_DIR)/stun/usages/timer.h
\
$(DOC_SOURCE_DIR)/stun/usages/timer.h
\
$(DOC_SOURCE_DIR)/stun/usages/turn.h
$(DOC_SOURCE_DIR)/stun/usages/turn.h
\
CFILE_GLOB
=
$(DOC_SOURCE_DIR)
/agent/agent.c
$(DOC_SOURCE_DIR)/agent/pseudotcp.h
\
CFILE_GLOB
=
$(DOC_SOURCE_DIR)
/agent/agent.c
$(DOC_SOURCE_DIR)
/agent/pseudotcp.c
# Header files to ignore when scanning.
# Header files to ignore when scanning.
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
...
...
stun/sha1.c
View file @
21ecb824
...
@@ -264,13 +264,15 @@ void SHA1Final(unsigned char digest[20], SHA1_CTX* context)
...
@@ -264,13 +264,15 @@ void SHA1Final(unsigned char digest[20], SHA1_CTX* context)
/**
/**
* hmac_sha1_vector
- HMAC-SHA1 over data vector (RFC 2104)
* hmac_sha1_vector
:
* @key: Key for HMAC operations
* @key: Key for HMAC operations
* @key_len: Length of the key in bytes
* @key_len: Length of the key in bytes
* @num_elem: Number of elements in the data vector
* @num_elem: Number of elements in the data vector
* @addr: Pointers to the data areas
* @addr: Pointers to the data areas
* @len: Lengths of the data blocks
* @len: Lengths of the data blocks
* @mac: Buffer for the hash (20 bytes)
* @mac: Buffer for the hash (20 bytes)
*
* HMAC-SHA1 over data vector (RFC 2104)
*/
*/
void
hmac_sha1_vector
(
const
uint8_t
*
key
,
size_t
key_len
,
size_t
num_elem
,
void
hmac_sha1_vector
(
const
uint8_t
*
key
,
size_t
key_len
,
size_t
num_elem
,
const
uint8_t
*
addr
[],
const
size_t
*
len
,
uint8_t
*
mac
)
const
uint8_t
*
addr
[],
const
size_t
*
len
,
uint8_t
*
mac
)
...
@@ -336,12 +338,14 @@ void hmac_sha1_vector(const uint8_t *key, size_t key_len, size_t num_elem,
...
@@ -336,12 +338,14 @@ void hmac_sha1_vector(const uint8_t *key, size_t key_len, size_t num_elem,
/**
/**
* hmac_sha1
- HMAC-SHA1 over data buffer (RFC 2104)
* hmac_sha1
:
* @key: Key for HMAC operations
* @key: Key for HMAC operations
* @key_len: Length of the key in bytes
* @key_len: Length of the key in bytes
* @data: Pointers to the data area
* @data: Pointers to the data area
* @data_len: Length of the data area
* @data_len: Length of the data area
* @mac: Buffer for the hash (20 bytes)
* @mac: Buffer for the hash (20 bytes)
*
* HMAC-SHA1 over data buffer (RFC 2104)
*/
*/
void
hmac_sha1
(
const
uint8_t
*
key
,
size_t
key_len
,
void
hmac_sha1
(
const
uint8_t
*
key
,
size_t
key_len
,
const
uint8_t
*
data
,
size_t
data_len
,
uint8_t
*
mac
)
const
uint8_t
*
data
,
size_t
data_len
,
uint8_t
*
mac
)
...
@@ -351,7 +355,7 @@ void hmac_sha1(const uint8_t *key, size_t key_len,
...
@@ -351,7 +355,7 @@ void hmac_sha1(const uint8_t *key, size_t key_len,
/**
/**
* sha1_prf
- SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1)
* sha1_prf
:
* @key: Key for PRF
* @key: Key for PRF
* @key_len: Length of the key in bytes
* @key_len: Length of the key in bytes
* @label: A unique label for each purpose of the PRF
* @label: A unique label for each purpose of the PRF
...
@@ -360,6 +364,8 @@ void hmac_sha1(const uint8_t *key, size_t key_len,
...
@@ -360,6 +364,8 @@ void hmac_sha1(const uint8_t *key, size_t key_len,
* @buf: Buffer for the generated pseudo-random key
* @buf: Buffer for the generated pseudo-random key
* @buf_len: Number of bytes of key to generate
* @buf_len: Number of bytes of key to generate
*
*
* SHA1-based Pseudo-Random Function (PRF) (IEEE 802.11i, 8.5.1.1)
*
* This function is used to derive new, cryptographically separate keys from a
* This function is used to derive new, cryptographically separate keys from a
* given key (e.g., PMK in IEEE 802.11i).
* given key (e.g., PMK in IEEE 802.11i).
*/
*/
...
@@ -396,11 +402,13 @@ void sha1_prf(const uint8_t *key, size_t key_len, const char *label,
...
@@ -396,11 +402,13 @@ void sha1_prf(const uint8_t *key, size_t key_len, const char *label,
}
}
/**
/**
* sha1_vector
- SHA-1 hash for data vector
* sha1_vector
:
* @num_elem: Number of elements in the data vector
* @num_elem: Number of elements in the data vector
* @addr: Pointers to the data areas
* @addr: Pointers to the data areas
* @len: Lengths of the data blocks
* @len: Lengths of the data blocks
* @mac: Buffer for the hash
* @mac: Buffer for the hash
*
* SHA-1 hash for data vector
*/
*/
void
sha1_vector
(
size_t
num_elem
,
const
uint8_t
*
addr
[],
const
size_t
*
len
,
void
sha1_vector
(
size_t
num_elem
,
const
uint8_t
*
addr
[],
const
size_t
*
len
,
uint8_t
*
mac
)
uint8_t
*
mac
)
...
...
stun/stunmessage.h
View file @
21ecb824
...
@@ -599,7 +599,7 @@ StunMessageReturn stun_message_find_string (const StunMessage *msg,
...
@@ -599,7 +599,7 @@ StunMessageReturn stun_message_find_string (const StunMessage *msg,
* Returns: A #StunMessageReturn value.
* Returns: A #StunMessageReturn value.
* %STUN_MESSAGE_RETURN_INVALID is returned if the attribute payload size is
* %STUN_MESSAGE_RETURN_INVALID is returned if the attribute payload size is
* wrong or if the @addrlen is too small
* wrong or if the @addrlen is too small
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS
S
if the address family is unknown.
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS if the address family is unknown.
*/
*/
StunMessageReturn
stun_message_find_addr
(
const
StunMessage
*
msg
,
StunMessageReturn
stun_message_find_addr
(
const
StunMessage
*
msg
,
StunAttribute
type
,
struct
sockaddr
*
addr
,
socklen_t
*
addrlen
);
StunAttribute
type
,
struct
sockaddr
*
addr
,
socklen_t
*
addrlen
);
...
@@ -618,7 +618,7 @@ StunMessageReturn stun_message_find_addr (const StunMessage *msg,
...
@@ -618,7 +618,7 @@ StunMessageReturn stun_message_find_addr (const StunMessage *msg,
* Returns: A #StunMessageReturn value.
* Returns: A #StunMessageReturn value.
* %STUN_MESSAGE_RETURN_INVALID is returned if the attribute payload size is
* %STUN_MESSAGE_RETURN_INVALID is returned if the attribute payload size is
* wrong or if the @addrlen is too small
* wrong or if the @addrlen is too small
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS
S
if the address family is unknown.
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS if the address family is unknown.
*/
*/
StunMessageReturn
stun_message_find_xor_addr
(
const
StunMessage
*
msg
,
StunMessageReturn
stun_message_find_xor_addr
(
const
StunMessage
*
msg
,
StunAttribute
type
,
struct
sockaddr
*
addr
,
socklen_t
*
addrlen
);
StunAttribute
type
,
struct
sockaddr
*
addr
,
socklen_t
*
addrlen
);
...
@@ -638,7 +638,7 @@ StunMessageReturn stun_message_find_xor_addr (const StunMessage *msg,
...
@@ -638,7 +638,7 @@ StunMessageReturn stun_message_find_xor_addr (const StunMessage *msg,
* Returns: A #StunMessageReturn value.
* Returns: A #StunMessageReturn value.
* %STUN_MESSAGE_RETURN_INVALID is returned if the attribute payload size is
* %STUN_MESSAGE_RETURN_INVALID is returned if the attribute payload size is
* wrong or if the @addrlen is too small
* wrong or if the @addrlen is too small
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS
S
if the address family is unknown.
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS if the address family is unknown.
*/
*/
StunMessageReturn
stun_message_find_xor_addr_full
(
const
StunMessage
*
msg
,
StunMessageReturn
stun_message_find_xor_addr_full
(
const
StunMessage
*
msg
,
StunAttribute
type
,
struct
sockaddr
*
addr
,
StunAttribute
type
,
struct
sockaddr
*
addr
,
...
@@ -749,7 +749,7 @@ StunMessageReturn stun_message_append_string (StunMessage *msg,
...
@@ -749,7 +749,7 @@ StunMessageReturn stun_message_append_string (StunMessage *msg,
*
*
* Returns: A #StunMessageReturn value.
* Returns: A #StunMessageReturn value.
* %STUN_MESSAGE_RETURN_INVALID is returned if the @addrlen is too small
* %STUN_MESSAGE_RETURN_INVALID is returned if the @addrlen is too small
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS
S
if the address family is unknown.
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS if the address family is unknown.
*/
*/
StunMessageReturn
stun_message_append_addr
(
StunMessage
*
msg
,
StunMessageReturn
stun_message_append_addr
(
StunMessage
*
msg
,
StunAttribute
type
,
const
struct
sockaddr
*
addr
,
socklen_t
addrlen
);
StunAttribute
type
,
const
struct
sockaddr
*
addr
,
socklen_t
addrlen
);
...
@@ -765,7 +765,7 @@ StunMessageReturn stun_message_append_addr (StunMessage * msg,
...
@@ -765,7 +765,7 @@ StunMessageReturn stun_message_append_addr (StunMessage * msg,
*
*
* Returns: A #StunMessageReturn value.
* Returns: A #StunMessageReturn value.
* %STUN_MESSAGE_RETURN_INVALID is returned if the @addrlen is too small
* %STUN_MESSAGE_RETURN_INVALID is returned if the @addrlen is too small
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS
S
if the address family is unknown.
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS if the address family is unknown.
*/
*/
StunMessageReturn
stun_message_append_xor_addr
(
StunMessage
*
msg
,
StunMessageReturn
stun_message_append_xor_addr
(
StunMessage
*
msg
,
StunAttribute
type
,
const
struct
sockaddr
*
addr
,
socklen_t
addrlen
);
StunAttribute
type
,
const
struct
sockaddr
*
addr
,
socklen_t
addrlen
);
...
@@ -782,7 +782,7 @@ StunMessageReturn stun_message_append_xor_addr (StunMessage * msg,
...
@@ -782,7 +782,7 @@ StunMessageReturn stun_message_append_xor_addr (StunMessage * msg,
*
*
* Returns: A #StunMessageReturn value.
* Returns: A #StunMessageReturn value.
* %STUN_MESSAGE_RETURN_INVALID is returned if the @addrlen is too small
* %STUN_MESSAGE_RETURN_INVALID is returned if the @addrlen is too small
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS
S
if the address family is unknown.
* %STUN_MESSAGE_RETURN_UNSUPPORTED_ADDRESS if the address family is unknown.
*/
*/
StunMessageReturn
stun_message_append_xor_addr_full
(
StunMessage
*
msg
,
StunMessageReturn
stun_message_append_xor_addr_full
(
StunMessage
*
msg
,
StunAttribute
type
,
const
struct
sockaddr
*
addr
,
socklen_t
addrlen
,
StunAttribute
type
,
const
struct
sockaddr
*
addr
,
socklen_t
addrlen
,
...
...
stun/tools/stund.c
View file @
21ecb824
...
@@ -78,7 +78,7 @@ static const uint16_t known_attributes[] = {
...
@@ -78,7 +78,7 @@ static const uint16_t known_attributes[] = {
0
0
};
};
/*
*
/*
* Creates a listening socket
* Creates a listening socket
*/
*/
int
listen_socket
(
int
fam
,
int
type
,
int
proto
,
unsigned
int
port
)
int
listen_socket
(
int
fam
,
int
type
,
int
proto
,
unsigned
int
port
)
...
...
stun/usages/bind.c
View file @
21ecb824
...
@@ -394,7 +394,7 @@ static int stun_trans_fd (const StunTransport *tr)
...
@@ -394,7 +394,7 @@ static int stun_trans_fd (const StunTransport *tr)
}
}
/*
*
/*
* Waits for a response or timeout to occur.
* Waits for a response or timeout to occur.
*
*
* @return ETIMEDOUT if the transaction has timed out, or 0 if an incoming
* @return ETIMEDOUT if the transaction has timed out, or 0 if an incoming
...
...
stun/usages/bind.h
View file @
21ecb824
...
@@ -149,8 +149,8 @@ size_t stun_usage_bind_keepalive (StunAgent *agent, StunMessage *msg,
...
@@ -149,8 +149,8 @@ size_t stun_usage_bind_keepalive (StunAgent *agent, StunMessage *msg,
* @addrlen: The length of @addr
* @addrlen: The length of @addr
*
*
* This is a convenience function that will do a synchronous Binding request to
* This is a convenience function that will do a synchronous Binding request to
* a server and wait for its answer. It will
use the #StunUsageTran
s and
* a server and wait for its answer. It will
create the socket transport
s and
*
#StunUsageTimer usages
to send the request and handle the response.
*
use the #StunTimer usage
to send the request and handle the response.
* Returns: A #StunUsageBindReturn.
* Returns: A #StunUsageBindReturn.
* Possible return values are #STUN_USAGE_BIND_RETURN_SUCCESS,
* Possible return values are #STUN_USAGE_BIND_RETURN_SUCCESS,
* #STUN_USAGE_BIND_RETURN_ERROR and #STUN_USAGE_BIND_RETURN_TIMEOUT
* #STUN_USAGE_BIND_RETURN_ERROR and #STUN_USAGE_BIND_RETURN_TIMEOUT
...
...
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