From 0efc01a54a538cb2ecaf03dcc77e12d78b346c39 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Mon, 13 Apr 2009 08:54:10 +0000 Subject: Ticket #780: Update TURN from draft 09 to draft 13: - new rules for permissions: - permission must be created and refreshed explicitly with CreatePermission - transmitting data does not refresh permission - attributes changed/added: XOR-PEER-ADDRESS, XOR-RELAYED-ADDRESS, EVEN-PORT, DONT-FRAGMENT - attribute(s) removed: REQUESTED-PROPS - new status codes: 401 (Forbidden), 507 (Insufficient Capacity) - removed status codes: 443 (Invalid IP address), 444 (Invalid Port), 508 (Insufficient Port Capacity) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2589 74dad513-b988-da41-8d7b-12977e46ad98 --- pjnath/src/pjturn-client/client_main.c | 50 ++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 14 deletions(-) (limited to 'pjnath/src/pjturn-client/client_main.c') diff --git a/pjnath/src/pjturn-client/client_main.c b/pjnath/src/pjturn-client/client_main.c index 36de03f5..0fbe85dd 100644 --- a/pjnath/src/pjturn-client/client_main.c +++ b/pjnath/src/pjturn-client/client_main.c @@ -138,6 +138,7 @@ static int init() pj_stun_sock_cb stun_sock_cb; char name[] = "peer0"; pj_uint16_t port; + pj_stun_sock_cfg ss_cfg; pj_str_t server; pj_bzero(&stun_sock_cb, sizeof(stun_sock_cb)); @@ -146,9 +147,15 @@ static int init() g.peer[i].mapped_addr.addr.sa_family = pj_AF_INET(); + pj_stun_sock_cfg_default(&ss_cfg); +#if 1 + /* make reading the log easier */ + ss_cfg.ka_interval = 300; +#endif + name[strlen(name)-1] = '0'+i; status = pj_stun_sock_create(&g.stun_config, name, pj_AF_INET(), - &stun_sock_cb, NULL, + &stun_sock_cb, &ss_cfg, &g.peer[i], &g.peer[i].stun_sock); if (status != PJ_SUCCESS) { my_perror("pj_stun_sock_create()", status); @@ -415,22 +422,23 @@ static void menu(void) puts("\n"); - puts("+====================================================================+"); - puts("| CLIENT | PEER-0 |"); - puts("| | |"); - printf("| State : %-12s | Address: %-21s |\n", + puts("+=====================================================================+"); + puts("| CLIENT | PEER-0 |"); + puts("| | |"); + printf("| State : %-12s | Address: %-21s |\n", client_state, peer0_addr); - printf("| Relay addr: %-21s | |\n", + printf("| Relay addr: %-21s | |\n", relay_addr); - puts("| | 0 Send data to relay address |"); - 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", + puts("| | 0 Send data to relay address |"); + puts("| a Allocate relay | |"); + puts("| p,pp Set permission for peer 0/1 +--------------------------------+"); + 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 d Dump | 1 Send data to relay adderss |"); - puts("+-----------------------------------+--------------------------------+"); + puts("+------------------------------------+ |"); + puts("| q Quit d Dump | 1 Send data to relay adderss |"); + puts("+------------------------------------+--------------------------------+"); printf(">>> "); fflush(stdout); } @@ -488,6 +496,20 @@ static void console_main(void) if (status != PJ_SUCCESS) my_perror("turn_udp_bind_channel() failed", status); break; + case 'p': + if (g.relay == NULL) { + puts("Error: no relay"); + continue; + } + if (input[1]!='p') + peer = &g.peer[0]; + else + peer = &g.peer[1]; + + status = pj_turn_sock_set_perm(g.relay, 1, &peer->mapped_addr, 1); + if (status != PJ_SUCCESS) + my_perror("pj_turn_sock_set_perm() failed", status); + break; case 'x': if (g.relay == NULL) { puts("Error: no relay"); -- cgit v1.2.3