Commit 00fb529f authored by Youness Alaoui's avatar Youness Alaoui

Porting stun usage turn to use the new StunMessageReturn API

parent ea0d08e1
...@@ -78,20 +78,22 @@ size_t stun_usage_turn_create (StunAgent *agent, StunMessage *msg, ...@@ -78,20 +78,22 @@ size_t stun_usage_turn_create (StunAgent *agent, StunMessage *msg,
if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_DRAFT9) { if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_DRAFT9) {
if (stun_message_append32 (msg, STUN_ATTRIBUTE_REQUESTED_TRANSPORT, if (stun_message_append32 (msg, STUN_ATTRIBUTE_REQUESTED_TRANSPORT,
TURN_REQUESTED_TRANSPORT_UDP) != 0) TURN_REQUESTED_TRANSPORT_UDP) != STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
if (bandwidth >= 0) { if (bandwidth >= 0) {
if (stun_message_append32 (msg, STUN_ATTRIBUTE_BANDWIDTH, bandwidth) != 0) if (stun_message_append32 (msg, STUN_ATTRIBUTE_BANDWIDTH, bandwidth) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
} else { } else {
if (stun_message_append32 (msg, STUN_ATTRIBUTE_MAGIC_COOKIE, if (stun_message_append32 (msg, STUN_ATTRIBUTE_MAGIC_COOKIE,
TURN_MAGIC_COOKIE) != 0) TURN_MAGIC_COOKIE) != STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
if (lifetime >= 0) { if (lifetime >= 0) {
if (stun_message_append32 (msg, STUN_ATTRIBUTE_LIFETIME, lifetime) != 0) if (stun_message_append32 (msg, STUN_ATTRIBUTE_LIFETIME, lifetime) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
...@@ -111,7 +113,7 @@ size_t stun_usage_turn_create (StunAgent *agent, StunMessage *msg, ...@@ -111,7 +113,7 @@ size_t stun_usage_turn_create (StunAgent *agent, StunMessage *msg,
} }
if (stun_message_append32 (msg, STUN_ATTRIBUTE_REQUESTED_PORT_PROPS, if (stun_message_append32 (msg, STUN_ATTRIBUTE_REQUESTED_PORT_PROPS,
req) != 0) req) != STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
...@@ -124,26 +126,28 @@ size_t stun_usage_turn_create (StunAgent *agent, StunMessage *msg, ...@@ -124,26 +126,28 @@ size_t stun_usage_turn_create (StunAgent *agent, StunMessage *msg,
realm = (uint8_t *) stun_message_find (previous_response, realm = (uint8_t *) stun_message_find (previous_response,
STUN_ATTRIBUTE_REALM, &len); STUN_ATTRIBUTE_REALM, &len);
if (realm != NULL) { if (realm != NULL) {
if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_REALM, realm, len) != 0) if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_REALM, realm, len) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
nonce = (uint8_t *) stun_message_find (previous_response, nonce = (uint8_t *) stun_message_find (previous_response,
STUN_ATTRIBUTE_NONCE, &len); STUN_ATTRIBUTE_NONCE, &len);
if (nonce != NULL) { if (nonce != NULL) {
if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_NONCE, nonce, len) != 0) if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_NONCE, nonce, len) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
if (stun_message_find64 (previous_response, STUN_ATTRIBUTE_RESERVATION_TOKEN, if (stun_message_find64 (previous_response, STUN_ATTRIBUTE_RESERVATION_TOKEN,
&reservation) == 0) { &reservation) == STUN_MESSAGE_RETURN_SUCCESS) {
if (stun_message_append64 (msg, STUN_ATTRIBUTE_RESERVATION_TOKEN, if (stun_message_append64 (msg, STUN_ATTRIBUTE_RESERVATION_TOKEN,
reservation) != 0) reservation) != STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
} }
if (username != NULL && username_len > 0) { if (username != NULL && username_len > 0) {
if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_USERNAME, if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_USERNAME,
username, username_len) != 0) username, username_len) != STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
...@@ -166,7 +170,8 @@ size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg, ...@@ -166,7 +170,8 @@ size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg,
stun_agent_init_request (agent, msg, buffer, buffer_len, STUN_REFRESH); stun_agent_init_request (agent, msg, buffer, buffer_len, STUN_REFRESH);
if (lifetime >= 0) { if (lifetime >= 0) {
if (stun_message_append32 (msg, STUN_ATTRIBUTE_LIFETIME, lifetime) != 0) if (stun_message_append32 (msg, STUN_ATTRIBUTE_LIFETIME, lifetime) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
...@@ -178,13 +183,15 @@ size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg, ...@@ -178,13 +183,15 @@ size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg,
realm = (uint8_t *) stun_message_find (previous_response, realm = (uint8_t *) stun_message_find (previous_response,
STUN_ATTRIBUTE_REALM, &len); STUN_ATTRIBUTE_REALM, &len);
if (realm != NULL) { if (realm != NULL) {
if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_REALM, realm, len) != 0) if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_REALM, realm, len) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
nonce = (uint8_t *) stun_message_find (previous_response, nonce = (uint8_t *) stun_message_find (previous_response,
STUN_ATTRIBUTE_NONCE, &len); STUN_ATTRIBUTE_NONCE, &len);
if (nonce != NULL) { if (nonce != NULL) {
if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_NONCE, nonce, len) != 0) if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_NONCE, nonce, len) !=
STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
} }
...@@ -192,7 +199,7 @@ size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg, ...@@ -192,7 +199,7 @@ size_t stun_usage_turn_create_refresh (StunAgent *agent, StunMessage *msg,
if (username != NULL && username_len > 0) { if (username != NULL && username_len > 0) {
if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_USERNAME, if (stun_message_append_bytes (msg, STUN_ATTRIBUTE_USERNAME,
username, username_len) != 0) username, username_len) != STUN_MESSAGE_RETURN_SUCCESS)
return 0; return 0;
} }
...@@ -223,7 +230,7 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -223,7 +230,7 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
break; break;
case STUN_ERROR: case STUN_ERROR:
if (stun_message_find_error (msg, &code) != 0) { if (stun_message_find_error (msg, &code) != STUN_MESSAGE_RETURN_SUCCESS) {
/* missing ERROR-CODE: ignore message */ /* missing ERROR-CODE: ignore message */
return STUN_USAGE_TURN_RETURN_RETRY; return STUN_USAGE_TURN_RETURN_RETRY;
} }
...@@ -236,12 +243,14 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -236,12 +243,14 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
if ((code / 100) == 3) { if ((code / 100) == 3) {
if (alternate_server && alternate_server_len) { if (alternate_server && alternate_server_len) {
if (stun_message_find_addr (msg, STUN_ATTRIBUTE_ALTERNATE_SERVER, if (stun_message_find_addr (msg, STUN_ATTRIBUTE_ALTERNATE_SERVER,
alternate_server, alternate_server_len)) { alternate_server, alternate_server_len) !=
STUN_MESSAGE_RETURN_SUCCESS) {
stun_debug (" Unexpectedly missing ALTERNATE-SERVER attribute\n"); stun_debug (" Unexpectedly missing ALTERNATE-SERVER attribute\n");
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
} else { } else {
if (!stun_message_has_attribute (msg, STUN_ATTRIBUTE_ALTERNATE_SERVER)) { if (!stun_message_has_attribute (msg,
STUN_ATTRIBUTE_ALTERNATE_SERVER)) {
stun_debug (" Unexpectedly missing ALTERNATE-SERVER attribute\n"); stun_debug (" Unexpectedly missing ALTERNATE-SERVER attribute\n");
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
...@@ -260,32 +269,32 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg, ...@@ -260,32 +269,32 @@ StunUsageTurnReturn stun_usage_turn_process (StunMessage *msg,
val = 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) if (val == STUN_MESSAGE_RETURN_SUCCESS)
ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS; 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_MESSAGE_RETURN_SUCCESS) {
stun_debug (" No RELAYED-ADDRESS: %s\n", strerror (val)); stun_debug (" No RELAYED-ADDRESS: %d\n", val);
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
} else if (compatibility == STUN_USAGE_TURN_COMPATIBILITY_GOOGLE) { } 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 != STUN_MESSAGE_RETURN_SUCCESS) {
stun_debug (" No MAPPED-ADDRESS: %s\n", strerror (val)); stun_debug (" No MAPPED-ADDRESS: %d\n", val);
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) {
val = stun_message_find_addr (msg, val = stun_message_find_addr (msg,
STUN_ATTRIBUTE_MSN_MAPPED_ADDRESS, addr, addrlen); STUN_ATTRIBUTE_MSN_MAPPED_ADDRESS, addr, addrlen);
if (val == 0) if (val == STUN_MESSAGE_RETURN_SUCCESS)
ret = STUN_USAGE_TURN_RETURN_MAPPED_SUCCESS; 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 != STUN_MESSAGE_RETURN_SUCCESS) {
stun_debug (" No MAPPED-ADDRESS: %s\n", strerror (val)); stun_debug (" No MAPPED-ADDRESS: %d\n", val);
return STUN_USAGE_TURN_RETURN_ERROR; return STUN_USAGE_TURN_RETURN_ERROR;
} }
} }
...@@ -324,7 +333,7 @@ StunUsageTurnReturn stun_usage_turn_refresh_process (StunMessage *msg, ...@@ -324,7 +333,7 @@ StunUsageTurnReturn stun_usage_turn_refresh_process (StunMessage *msg,
break; break;
case STUN_ERROR: case STUN_ERROR:
if (stun_message_find_error (msg, &code) != 0) { if (stun_message_find_error (msg, &code) != STUN_MESSAGE_RETURN_SUCCESS) {
/* missing ERROR-CODE: ignore message */ /* missing ERROR-CODE: ignore message */
return STUN_USAGE_TURN_RETURN_RETRY; return STUN_USAGE_TURN_RETURN_RETRY;
} }
......
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