Commit b9835c16 authored by Youness Alaoui's avatar Youness Alaoui

Porting stun usage bind to use the new StunUsageTransReturn API

parent 3541521a
...@@ -170,7 +170,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -170,7 +170,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
uint8_t buf[STUN_MAX_MESSAGE_SIZE]; uint8_t buf[STUN_MAX_MESSAGE_SIZE];
StunValidationStatus valid; StunValidationStatus valid;
size_t len; size_t len;
ssize_t ret; StunUsageTransReturn ret;
int val; int val;
struct sockaddr_storage alternate_server; struct sockaddr_storage alternate_server;
socklen_t alternate_server_len = sizeof (alternate_server); socklen_t alternate_server_len = sizeof (alternate_server);
...@@ -182,8 +182,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -182,8 +182,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
len = stun_usage_bind_create (&agent, &req, req_buf, sizeof(req_buf)); len = stun_usage_bind_create (&agent, &req, req_buf, sizeof(req_buf));
ret = stun_trans_create (&trans, SOCK_DGRAM, 0, srv, srvlen); ret = stun_trans_create (&trans, SOCK_DGRAM, 0, srv, srvlen);
if (ret) { if (ret != STUN_USAGE_TRANS_RETURN_SUCCESS) {
errno = ret;
stun_debug ("STUN transaction failed: couldn't create transport.\n"); stun_debug ("STUN transaction failed: couldn't create transport.\n");
return STUN_USAGE_BIND_RETURN_ERROR; return STUN_USAGE_BIND_RETURN_ERROR;
} }
...@@ -203,7 +202,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -203,7 +202,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
for (;;) { for (;;) {
unsigned delay = stun_timer_remainder (&timer); unsigned delay = stun_timer_remainder (&timer);
ret = stun_trans_poll (&trans, delay); ret = stun_trans_poll (&trans, delay);
if (ret == EAGAIN) { if (ret == STUN_USAGE_TRANS_RETURN_RETRY) {
switch (stun_timer_refresh (&timer)) { switch (stun_timer_refresh (&timer)) {
case STUN_USAGE_TIMER_RETURN_TIMEOUT: case STUN_USAGE_TIMER_RETURN_TIMEOUT:
stun_debug ("STUN transaction failed: time out.\n"); stun_debug ("STUN transaction failed: time out.\n");
...@@ -216,7 +215,6 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -216,7 +215,6 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
stun_debug ("STUN transaction failed: couldn't resend request.\n"); stun_debug ("STUN transaction failed: couldn't resend request.\n");
return STUN_USAGE_BIND_RETURN_ERROR; return STUN_USAGE_BIND_RETURN_ERROR;
} }
ret = EAGAIN;
continue; continue;
case STUN_USAGE_TIMER_RETURN_SUCCESS: case STUN_USAGE_TIMER_RETURN_SUCCESS:
break; break;
...@@ -233,7 +231,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -233,7 +231,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
return STUN_USAGE_BIND_RETURN_ERROR; return STUN_USAGE_BIND_RETURN_ERROR;
if (valid != STUN_VALIDATION_SUCCESS) { if (valid != STUN_VALIDATION_SUCCESS) {
ret = EAGAIN; ret = STUN_USAGE_TRANS_RETURN_RETRY;
} else { } else {
bind_ret = stun_usage_bind_process (&msg, addr, addrlen, bind_ret = stun_usage_bind_process (&msg, addr, addrlen,
(struct sockaddr *) &alternate_server, &alternate_server_len); (struct sockaddr *) &alternate_server, &alternate_server_len);
...@@ -243,8 +241,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -243,8 +241,7 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
ret = stun_trans_create (&trans, SOCK_DGRAM, 0, ret = stun_trans_create (&trans, SOCK_DGRAM, 0,
(struct sockaddr *) &alternate_server, alternate_server_len); (struct sockaddr *) &alternate_server, alternate_server_len);
if (ret) { if (ret != STUN_USAGE_TRANS_RETURN_SUCCESS) {
errno = ret;
return STUN_USAGE_BIND_RETURN_ERROR; return STUN_USAGE_BIND_RETURN_ERROR;
} }
...@@ -253,15 +250,15 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv, ...@@ -253,15 +250,15 @@ StunUsageBindReturn stun_usage_bind_run (const struct sockaddr *srv,
return STUN_USAGE_BIND_RETURN_ERROR; return STUN_USAGE_BIND_RETURN_ERROR;
stun_timer_start (&timer); stun_timer_start (&timer);
ret = EAGAIN; ret = STUN_USAGE_TRANS_RETURN_RETRY;
} else if (bind_ret == STUN_USAGE_BIND_RETURN_RETRY) { } else if (bind_ret == STUN_USAGE_BIND_RETURN_RETRY) {
ret = EAGAIN; ret = STUN_USAGE_TRANS_RETURN_RETRY;
} else { } else {
return bind_ret; return bind_ret;
} }
} }
} }
while (ret == EAGAIN); while (ret == STUN_USAGE_TRANS_RETURN_RETRY);
return STUN_USAGE_BIND_RETURN_SUCCESS; return STUN_USAGE_BIND_RETURN_SUCCESS;
} }
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