summaryrefslogtreecommitdiff
path: root/pjnath/src/pjturn-client/client_main.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-03-20 16:32:06 +0000
committerBenny Prijono <bennylp@teluu.com>2008-03-20 16:32:06 +0000
commitf5c4ac3cbadd515c83b71618e7ff2b1683c2aca2 (patch)
treef3378bd897fc58e21490005bb0000999eaa0940b /pjnath/src/pjturn-client/client_main.c
parent7f5db291ab29a7396137961f69470562f5bce4a7 (diff)
More ticket #485: client and server self tested
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1879 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath/src/pjturn-client/client_main.c')
-rw-r--r--pjnath/src/pjturn-client/client_main.c59
1 files changed, 29 insertions, 30 deletions
diff --git a/pjnath/src/pjturn-client/client_main.c b/pjnath/src/pjturn-client/client_main.c
index 114f47c8..470ad251 100644
--- a/pjnath/src/pjturn-client/client_main.c
+++ b/pjnath/src/pjturn-client/client_main.c
@@ -61,7 +61,6 @@ static struct options
char *realm;
char *user_name;
char *password;
- char *nonce;
pj_bool_t use_fingerprint;
} o;
@@ -135,7 +134,7 @@ static int init()
port = pj_sockaddr_get_port(&addr);
CHECK( pj_gethostip(pj_AF_INET(), &g.peer[i].addr) );
- pj_sockaddr_set_port(&g.peer[0].addr, port);
+ pj_sockaddr_set_port(&g.peer[i].addr, port);
}
@@ -265,7 +264,7 @@ static pj_status_t create_relay(void)
cred.data.static_cred.username = pj_str(o.user_name);
cred.data.static_cred.data_type = 0;
cred.data.static_cred.data = pj_str(o.password);
- cred.data.static_cred.nonce = pj_str(o.nonce);
+ //cred.data.static_cred.nonce = pj_str(o.nonce);
} else {
PJ_LOG(2,(THIS_FILE, "Warning: no credential is set"));
}
@@ -286,7 +285,6 @@ static void destroy_relay(void)
{
if (g.udp_rel) {
pj_turn_udp_destroy(g.udp_rel);
- g.udp_rel = NULL;
}
}
@@ -309,10 +307,16 @@ static void turn_on_rx_data(pj_turn_udp *udp_rel,
static void turn_on_state(pj_turn_udp *udp_rel, pj_turn_state_t old_state,
pj_turn_state_t new_state)
{
+ PJ_LOG(3,(THIS_FILE, "State %s --> %s", pj_turn_state_name(old_state),
+ pj_turn_state_name(new_state)));
+
if (new_state == PJ_TURN_STATE_READY) {
pj_turn_session_info info;
pj_turn_udp_get_info(udp_rel, &info);
pj_memcpy(&g.relay_addr, &info.relay_addr, sizeof(pj_sockaddr));
+ } else if (new_state > PJ_TURN_STATE_READY && g.udp_rel) {
+ PJ_LOG(3,(THIS_FILE, "Relay shutting down.."));
+ g.udp_rel = NULL;
}
}
@@ -379,10 +383,10 @@ static void menu(void)
printf("| Relay addr: %-21s | |\n",
relay_addr);
puts("| | 0 Send data to relay address |");
- puts("| A Allocate relay +--------------------------------+ ");
- puts("| S[01] Send data to peer 0/1 | PEER-1 |");
- puts("| B[01] BindChannel to peer 0/1 | |");
- printf("| X Delete allocation | Address: %-21s |\n",
+ puts("| a Allocate relay +--------------------------------+ ");
+ puts("| s,ss Send data to peer 0/1 | PEER-1 |");
+ puts("| b,bb BindChannel to peer 0/1 | |");
+ printf("| x Delete allocation | Address: %-21s |\n",
peer1_addr);
puts("+-----------------------------------+ |");
puts("| q Quit | 1 Send data to relay adderss |");
@@ -405,19 +409,19 @@ static void console_main(void)
fgets(input, sizeof(input), stdin);
switch (input[0]) {
- case 'A':
+ case 'a':
create_relay();
break;
- case 'S':
+ case 's':
if (g.udp_rel == NULL) {
puts("Error: no relay");
continue;
}
- if (input[1] != '0' && input[1] != '1') {
- puts("Usage: S0 or S1");
- continue;
- }
- peer = &g.peer[input[1]-'0'];
+ if (input[1]!='s')
+ peer = &g.peer[0];
+ else
+ peer = &g.peer[1];
+
strcpy(input, "Hello from client");
status = pj_turn_udp_sendto(g.udp_rel, input, strlen(input)+1,
&peer->addr,
@@ -425,22 +429,22 @@ static void console_main(void)
if (status != PJ_SUCCESS)
my_perror("turn_udp_sendto() failed", status);
break;
- case 'B':
+ case 'b':
if (g.udp_rel == NULL) {
puts("Error: no relay");
continue;
}
- if (input[1] != '0' && input[1] != '1') {
- puts("Usage: B0 or B1");
- continue;
- }
- peer = &g.peer[input[1]-'0'];
+ if (input[1]!='b')
+ peer = &g.peer[0];
+ else
+ peer = &g.peer[1];
+
status = pj_turn_udp_bind_channel(g.udp_rel, &peer->addr,
pj_sockaddr_get_len(&peer->addr));
if (status != PJ_SUCCESS)
my_perror("turn_udp_bind_channel() failed", status);
break;
- case 'X':
+ case 'x':
if (g.udp_rel == NULL) {
puts("Error: no relay");
continue;
@@ -449,7 +453,7 @@ static void console_main(void)
break;
case '0':
case '1':
- peer = &g.peer[input[1]-'0'];
+ peer = &g.peer[input[0]-'0'];
sprintf(input, "Hello from peer%d", input[0]-'0');
len = strlen(input)+1;
pj_sock_sendto(peer->sock, input, &len, 0, &g.relay_addr,
@@ -473,7 +477,6 @@ static void usage(void)
puts(" --realm, -r Set realm of the credential");
puts(" --username, -u Set username of the credential");
puts(" --password, -p Set password of the credential");
- puts(" --nonce, -N Set NONCE");
puts(" --fingerprint, -F Use fingerprint for outgoing requests");
puts(" --help, -h");
}
@@ -484,7 +487,6 @@ int main(int argc, char *argv[])
{ "realm", 1, 0, 'r'},
{ "username", 1, 0, 'u'},
{ "password", 1, 0, 'p'},
- { "nonce", 1, 0, 'N'},
{ "fingerprint",0, 0, 'F'},
{ "data", 1, 0, 'D'},
{ "help", 0, 0, 'h'}
@@ -504,9 +506,6 @@ int main(int argc, char *argv[])
case 'p':
o.password = pj_optarg;
break;
- case 'N':
- o.nonce = pj_optarg;
- break;
case 'h':
usage();
return 0;
@@ -537,8 +536,8 @@ int main(int argc, char *argv[])
if ((status=init()) != 0)
goto on_return;
- if ((status=create_relay()) != 0)
- goto on_return;
+ //if ((status=create_relay()) != 0)
+ // goto on_return;
console_main();