summaryrefslogtreecommitdiff
path: root/stun/tests
diff options
context:
space:
mode:
authorYouness Alaoui <kakaroto@kakaroto.(none)>2008-08-06 19:16:30 -0400
committerYouness Alaoui <kakaroto@kakaroto.(none)>2008-08-06 19:16:30 -0400
commit36cad3fda7d32683b63423e706389f4b81db5363 (patch)
treee9ab4dce523bda9ac3681bafa491f464f83e927b /stun/tests
parent37c40e29b790bfd038481bfba41c75dfffe6ca1e (diff)
downloadlibnice-36cad3fda7d32683b63423e706389f4b81db5363.tar.gz
Finish the test-turn to finally work correctly with the numb server
Diffstat (limited to 'stun/tests')
-rw-r--r--stun/tests/test-turn.c51
1 files changed, 48 insertions, 3 deletions
diff --git a/stun/tests/test-turn.c b/stun/tests/test-turn.c
index 1237af4..5b8a54a 100644
--- a/stun/tests/test-turn.c
+++ b/stun/tests/test-turn.c
@@ -101,7 +101,7 @@ printaddr (const char *str, const struct sockaddr *addr, socklen_t addrlen)
/** Various responses test */
-static void responses (void)
+static void numb (void)
{
struct sockaddr_storage addr;
socklen_t addrlen = sizeof (addr);
@@ -114,10 +114,12 @@ static void responses (void)
int fd;
uint8_t buf[STUN_MAX_MESSAGE_SIZE];
uint8_t req[STUN_MAX_MESSAGE_SIZE];
+ uint8_t refresh[STUN_MAX_MESSAGE_SIZE];
size_t req_len;
StunAgent agent;
StunMessage msg;
StunMessage req_msg;
+ StunMessage refresh_msg;
uint32_t bandwidth, lifetime;
char username[] = "youness.alaoui@collabora.co.uk";
char password[] = "badger";
@@ -133,7 +135,8 @@ static void responses (void)
assert (ret == 0);
stun_agent_init (&agent, STUN_ALL_KNOWN_ATTRIBUTES,
- STUN_COMPATIBILITY_3489BIS, 0);
+ STUN_COMPATIBILITY_3489BIS, STUN_AGENT_USAGE_LONG_TERM_CREDENTIALS |
+ STUN_AGENT_USAGE_IGNORE_CREDENTIALS);
/* Allocate a client socket and connect to server */
fd = socket (AF_INET, SOCK_DGRAM, 0);
@@ -173,8 +176,50 @@ static void responses (void)
(struct sockaddr *)&alternate_addr, &alternate_addrlen,
&bandwidth, &lifetime,
STUN_USAGE_TURN_COMPATIBILITY_TD9);
+ assert (val == STUN_USAGE_TURN_RETURN_ERROR);
+
+ req_len = stun_usage_turn_create (&agent, &req_msg, req, sizeof(req),
+ &msg,
+ STUN_USAGE_TURN_REQUEST_PORT_NORMAL,
+ 0, 0,
+ username, strlen (username), password, strlen(password),
+ STUN_USAGE_TURN_COMPATIBILITY_TD9);
+ assert (req_len > 0);
+
+ val = send (fd, req, req_len, MSG_NOSIGNAL);
+ assert (val >= 0);
+
+ val = recv (fd, buf, 1000, 0);
+ assert (val >= 0);
+
+ assert (stun_agent_validate (&agent, &msg, buf, val, NULL, NULL)
+ == STUN_VALIDATION_SUCCESS);
+
+ val = stun_usage_turn_process (&msg,
+ (struct sockaddr *)&relay_addr, &relay_addrlen,
+ (struct sockaddr *)&addr, &addrlen,
+ (struct sockaddr *)&alternate_addr, &alternate_addrlen,
+ &bandwidth, &lifetime,
+ STUN_USAGE_TURN_COMPATIBILITY_TD9);
assert (val == STUN_USAGE_TURN_RETURN_SUCCESS);
+ printaddr ("Relay address found : ", (struct sockaddr *)&relay_addr, relay_addrlen);
+ printaddr ("Mapped address found : ",(struct sockaddr *) &addr, addrlen);
+
+
+ req_len = stun_usage_turn_create_refresh (&agent, &refresh_msg, refresh,
+ sizeof(refresh), &req_msg, 0, STUN_USAGE_TURN_COMPATIBILITY_TD9);
+ assert (req_len > 0);
+
+ val = send (fd, refresh, req_len, MSG_NOSIGNAL);
+ assert (val >= 0);
+
+ val = recv (fd, buf, 1000, 0);
+ assert (val >= 0);
+
+ assert (stun_agent_validate (&agent, &msg, buf, val, NULL, NULL)
+ == STUN_VALIDATION_SUCCESS);
+
val = close (fd);
assert (val == 0);
}
@@ -191,6 +236,6 @@ static void test (void (*func) (void), const char *name)
int main (void)
{
- test (responses, "Error responses");
+ test (numb, "numb.viagenie.ca TURN server");
return 0;
}