Commit 6f631ec6 authored by Youness Alaoui's avatar Youness Alaoui

Let the turn usage tell us if a mapped address was also found

parent 6c558075
...@@ -205,6 +205,7 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -205,6 +205,7 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
StunUsageTurnCompatibility compatibility) StunUsageTurnCompatibility compatibility)
{ {
int val, code = -1; int val, code = -1;
StunUsageTurnReturn ret = STUN_USAGE_TURN_RETURN_RELAY_SUCCESS;
switch (stun_message_get_class (msg)) switch (stun_message_get_class (msg))
{ {
...@@ -250,15 +251,18 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -250,15 +251,18 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
stun_debug ("Received %u-bytes STUN message\n", stun_message_length (msg)); stun_debug ("Received %u-bytes STUN message\n", stun_message_length (msg));
if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_TD9) { if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_TD9) {
stun_message_find_xor_addr (msg, val = stun_message_find_xor_addr (msg,
STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, addr, addrlen); STUN_ATTRIBUTE_XOR_MAPPED_ADDRESS, addr, addrlen);
if (val == 0)
ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS;
val = stun_message_find_xor_addr (msg, val = stun_message_find_xor_addr (msg,
STUN_ATTRIBUTE_RELAY_ADDRESS, relay_addr, relay_addrlen); STUN_ATTRIBUTE_RELAY_ADDRESS, relay_addr, relay_addrlen);
if (val) { if (val) {
stun_debug (" No RELAYED-ADDRESS: %s\n", strerror (val)); stun_debug (" No RELAYED-ADDRESS: %s\n", strerror (val));
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
} else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_TD9) { } else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_GOOGLE) {
val = stun_message_find_addr (msg, val = stun_message_find_addr (msg,
STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen); STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen);
if (val) { if (val) {
...@@ -266,8 +270,12 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -266,8 +270,12 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
}else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_MSN) { }else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_MSN) {
stun_message_find_xor_addr (msg, val = stun_message_find_xor_addr (msg,
STUN_ATTRIBUTE_MSN_MAPPED_ADDRESS, addr, addrlen); STUN_ATTRIBUTE_MSN_MAPPED_ADDRESS, addr, addrlen);
if (val == 0)
ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS;
val = stun_message_find_addr (msg, val = stun_message_find_addr (msg,
STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen); STUN_ATTRIBUTE_MAPPED_ADDRESS, relay_addr, relay_addrlen);
if (val) { if (val) {
...@@ -277,6 +285,6 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -277,6 +285,6 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
} }
stun_debug (" Mapped address found!\n"); stun_debug (" Mapped address found!\n");
return STUN_USAGE_TURN_RETURN_SUCCESS; return ret;
} }
...@@ -63,7 +63,8 @@ typedef enum { ...@@ -63,7 +63,8 @@ typedef enum {
} StunUsageTurnCompatibility; } StunUsageTurnCompatibility;
typedef enum { typedef enum {
STUN_USAGE_TURN_RETURN_SUCCESS, STUN_USAGE_TURN_RETURN_RELAY_SUCCESS,
STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS,
STUN_USAGE_TURN_RETURN_ERROR, STUN_USAGE_TURN_RETURN_ERROR,
STUN_USAGE_TURN_RETURN_RETRY, STUN_USAGE_TURN_RETURN_RETRY,
STUN_USAGE_TURN_RETURN_ALTERNATE_SERVER, STUN_USAGE_TURN_RETURN_ALTERNATE_SERVER,
......
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