Changeset 1913 for pjproject/trunk/pjnath/src/pjturn-client/client_main.c
- Timestamp:
- Apr 9, 2008 9:38:12 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjnath/src/pjturn-client/client_main.c
r1904 r1913 49 49 pj_bool_t quit; 50 50 51 pj_turn_ udp *udp_rel;51 pj_turn_sock *relay; 52 52 pj_sockaddr relay_addr; 53 53 … … 57 57 static struct options 58 58 { 59 char *srv_addr; 60 char *srv_port; 61 char *realm; 62 char *user_name; 63 char *password; 64 pj_bool_t use_fingerprint; 59 pj_bool_t use_tcp; 60 char *srv_addr; 61 char *srv_port; 62 char *realm; 63 char *user_name; 64 char *password; 65 pj_bool_t use_fingerprint; 65 66 } o; 66 67 67 68 68 69 static int worker_thread(void *unused); 69 static void turn_on_rx_data(pj_turn_ udp *udp_rel,70 static void turn_on_rx_data(pj_turn_sock *relay, 70 71 const pj_uint8_t *pkt, 71 72 unsigned pkt_len, 72 73 const pj_sockaddr_t *peer_addr, 73 74 unsigned addr_len); 74 static void turn_on_state(pj_turn_ udp *udp_rel, pj_turn_state_t old_state,75 static void turn_on_state(pj_turn_sock *relay, pj_turn_state_t old_state, 75 76 pj_turn_state_t new_state); 76 77 … … 156 157 g.thread = NULL; 157 158 } 158 if (g. udp_rel) {159 pj_turn_ udp_destroy(g.udp_rel);160 g. udp_rel= NULL;159 if (g.relay) { 160 pj_turn_sock_destroy(g.relay); 161 g.relay = NULL; 161 162 } 162 163 for (i=0; i<PJ_ARRAY_SIZE(g.peer); ++i) { … … 243 244 static pj_status_t create_relay(void) 244 245 { 245 pj_turn_ udp_cb rel_cb;246 pj_turn_sock_cb rel_cb; 246 247 pj_stun_auth_cred cred; 247 248 pj_str_t srv; 248 249 pj_status_t status; 249 250 250 if (g. udp_rel) {251 if (g.relay) { 251 252 PJ_LOG(1,(THIS_FILE, "Relay already created")); 252 253 return -1; … … 256 257 rel_cb.on_rx_data = &turn_on_rx_data; 257 258 rel_cb.on_state = &turn_on_state; 258 CHECK( pj_turn_udp_create(&g.stun_config, pj_AF_INET(), &rel_cb, 0, 259 NULL, &g.udp_rel) ); 259 CHECK( pj_turn_sock_create(&g.stun_config, pj_AF_INET(), 260 (o.use_tcp? PJ_TURN_TP_TCP : PJ_TURN_TP_UDP), 261 &rel_cb, 0, 262 NULL, &g.relay) ); 260 263 261 264 if (o.user_name) { … … 272 275 273 276 srv = pj_str(o.srv_addr); 274 CHECK( pj_turn_ udp_init(g.udp_rel, /* the relay */277 CHECK( pj_turn_sock_init(g.relay, /* the relay */ 275 278 &srv, /* srv addr */ 276 279 (o.srv_port?atoi(o.srv_port):PJ_STUN_PORT),/* def port */ … … 285 288 static void destroy_relay(void) 286 289 { 287 if (g. udp_rel) {288 pj_turn_ udp_destroy(g.udp_rel);289 } 290 } 291 292 293 static void turn_on_rx_data(pj_turn_ udp *udp_rel,290 if (g.relay) { 291 pj_turn_sock_destroy(g.relay); 292 } 293 } 294 295 296 static void turn_on_rx_data(pj_turn_sock *relay, 294 297 const pj_uint8_t *pkt, 295 298 unsigned pkt_len, … … 306 309 307 310 308 static void turn_on_state(pj_turn_ udp *udp_rel, pj_turn_state_t old_state,311 static void turn_on_state(pj_turn_sock *relay, pj_turn_state_t old_state, 309 312 pj_turn_state_t new_state) 310 313 { … … 314 317 if (new_state == PJ_TURN_STATE_READY) { 315 318 pj_turn_session_info info; 316 pj_turn_ udp_get_info(udp_rel, &info);319 pj_turn_sock_get_info(relay, &info); 317 320 pj_memcpy(&g.relay_addr, &info.relay_addr, sizeof(pj_sockaddr)); 318 } else if (new_state > PJ_TURN_STATE_READY && g. udp_rel) {321 } else if (new_state > PJ_TURN_STATE_READY && g.relay) { 319 322 PJ_LOG(3,(THIS_FILE, "Relay shutting down..")); 320 g. udp_rel= NULL;323 g.relay = NULL; 321 324 } 322 325 } … … 327 330 char client_state[20], relay_addr[80], peer0_addr[80], peer1_addr[80]; 328 331 329 if (g. udp_rel) {330 pj_turn_ udp_get_info(g.udp_rel, &info);332 if (g.relay) { 333 pj_turn_sock_get_info(g.relay, &info); 331 334 strcpy(client_state, pj_turn_state_name(info.state)); 332 335 if (info.state >= PJ_TURN_STATE_READY) … … 358 361 peer1_addr); 359 362 puts("+-----------------------------------+ |"); 360 puts("| q Quit d Dump| 1 Send data to relay adderss |");363 puts("| q Quit d Dump | 1 Send data to relay adderss |"); 361 364 puts("+-----------------------------------+--------------------------------+"); 362 365 printf(">>> "); … … 385 388 break; 386 389 case 's': 387 if (g. udp_rel== NULL) {390 if (g.relay == NULL) { 388 391 puts("Error: no relay"); 389 392 continue; … … 395 398 396 399 strcpy(input, "Hello from client"); 397 status = pj_turn_ udp_sendto(g.udp_rel, (const pj_uint8_t*)input,400 status = pj_turn_sock_sendto(g.relay, (const pj_uint8_t*)input, 398 401 strlen(input)+1, 399 402 &peer->addr, … … 403 406 break; 404 407 case 'b': 405 if (g. udp_rel== NULL) {408 if (g.relay == NULL) { 406 409 puts("Error: no relay"); 407 410 continue; … … 412 415 peer = &g.peer[1]; 413 416 414 status = pj_turn_ udp_bind_channel(g.udp_rel, &peer->addr,417 status = pj_turn_sock_bind_channel(g.relay, &peer->addr, 415 418 pj_sockaddr_get_len(&peer->addr)); 416 419 if (status != PJ_SUCCESS) 417 420 my_perror("turn_udp_bind_channel() failed", status); 418 421 break; 422 case 'd': 423 pj_pool_factory_dump(&g.cp.factory, PJ_TRUE); 424 break; 419 425 case 'x': 420 if (g. udp_rel== NULL) {426 if (g.relay == NULL) { 421 427 puts("Error: no relay"); 422 428 continue; … … 426 432 case '0': 427 433 case '1': 428 if (g. udp_rel== NULL) {434 if (g.relay == NULL) { 429 435 puts("No relay"); 430 436 break; … … 451 457 puts(""); 452 458 puts("and OPTIONS:"); 453 puts(" --realm, -r Set realm of the credential"); 454 puts(" --username, -u Set username of the credential"); 455 puts(" --password, -p Set password of the credential"); 456 puts(" --fingerprint, -F Use fingerprint for outgoing requests"); 459 puts(" --tcp, -T Use TCP to connect to TURN server"); 460 puts(" --realm, -r REALM Set realm of the credential to REALM"); 461 puts(" --username, -u UID Set username of the credential to UID"); 462 puts(" --password, -p PASSWD Set password of the credential to PASSWD"); 463 puts(" --fingerprint, -F Use fingerprint for outgoing requests"); 457 464 puts(" --help, -h"); 458 465 } … … 465 472 { "password", 1, 0, 'p'}, 466 473 { "fingerprint",0, 0, 'F'}, 467 { " data", 1, 0, 'D'},474 { "tcp", 0, 0, 'T'}, 468 475 { "help", 0, 0, 'h'} 469 476 }; … … 472 479 pj_status_t status; 473 480 474 while((c=pj_getopt_long(argc,argv, "r:u:p:N:hF ", long_options, &opt_id))!=-1) {481 while((c=pj_getopt_long(argc,argv, "r:u:p:N:hFT", long_options, &opt_id))!=-1) { 475 482 switch (c) { 476 483 case 'r': … … 488 495 case 'F': 489 496 o.use_fingerprint = PJ_TRUE; 497 break; 498 case 'T': 499 o.use_tcp = PJ_TRUE; 490 500 break; 491 501
Note: See TracChangeset
for help on using the changeset viewer.