Changeset 1099 for pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c
- Timestamp:
- Mar 23, 2007 7:09:54 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/transport_ice.c
r1098 r1099 20 20 #include <pjnath/errno.h> 21 21 #include <pj/assert.h> 22 #include <pj/log.h> 22 23 23 24 struct transport_ice … … 26 27 pj_ice_st *ice_st; 27 28 28 void *stream; 29 void (*rtp_cb)(void*, 30 const void*, 31 pj_ssize_t); 32 void (*rtcp_cb)(void*, 33 const void*, 34 pj_ssize_t); 29 pj_time_val start_ice; 30 31 void *stream; 32 pj_sockaddr_in remote_rtp; 33 pj_sockaddr_in remote_rtcp; 34 35 void (*rtp_cb)(void*, 36 const void*, 37 pj_ssize_t); 38 void (*rtcp_cb)(void*, 39 const void*, 40 pj_ssize_t); 35 41 }; 36 42 … … 69 75 const pj_sockaddr_t *src_addr, 70 76 unsigned src_addr_len); 71 static void ice_on_stun_srv_resolved(pj_ice_st *ice_st,72 pj_status_t status);73 static void ice_on_interface_status(pj_ice_st *ice_st,74 void *notify_data,75 pj_status_t status,76 int itf_id);77 77 static void ice_on_ice_complete(pj_ice_st *ice_st, 78 78 pj_status_t status); … … 108 108 pj_bzero(&ice_st_cb, sizeof(ice_st_cb)); 109 109 ice_st_cb.on_ice_complete = &ice_on_ice_complete; 110 ice_st_cb.on_interface_status = &ice_on_interface_status;111 110 ice_st_cb.on_rx_data = &ice_on_rx_data; 112 ice_st_cb.on_stun_srv_resolved = &ice_on_stun_srv_resolved;113 111 114 112 /* Create ICE */ … … 388 386 } 389 387 388 /* Mark start time */ 389 pj_gettimeofday(&tp_ice->start_ice); 390 390 391 /* Start ICE */ 391 392 return pj_ice_st_start_ice(tp_ice->ice_st, &uname, &pass, cand_cnt, cand); … … 455 456 tp_ice->rtcp_cb = rtcp_cb; 456 457 457 PJ_UNUSED_ARG(rem_addr); 458 PJ_UNUSED_ARG(rem_rtcp); 459 PJ_UNUSED_ARG(addr_len); 458 pj_memcpy(&tp_ice->remote_rtp, rem_addr, addr_len); 459 pj_memcpy(&tp_ice->remote_rtcp, rem_rtcp, addr_len); 460 460 461 461 return PJ_SUCCESS; … … 481 481 { 482 482 struct transport_ice *tp_ice = (struct transport_ice*)tp; 483 return pj_ice_st_send_data(tp_ice->ice_st, 1, pkt, size); 483 if (tp_ice->ice_st->ice) { 484 return pj_ice_st_send_data(tp_ice->ice_st, 1, pkt, size); 485 } else { 486 return pj_ice_st_sendto(tp_ice->ice_st, 1, 0, 487 pkt, size, &tp_ice->remote_rtp, 488 sizeof(pj_sockaddr_in)); 489 } 484 490 } 485 491 … … 521 527 522 528 523 static void ice_on_stun_srv_resolved(pj_ice_st *ice_st,524 pj_status_t status)525 {526 struct transport_ice *tp_ice = (struct transport_ice*) ice_st->user_data;527 }528 529 530 static void ice_on_interface_status(pj_ice_st *ice_st,531 void *notify_data,532 pj_status_t status,533 int itf_id)534 {535 struct transport_ice *tp_ice = (struct transport_ice*) ice_st->user_data;536 }537 538 539 529 static void ice_on_ice_complete(pj_ice_st *ice_st, 540 530 pj_status_t status) 541 531 { 542 532 struct transport_ice *tp_ice = (struct transport_ice*) ice_st->user_data; 543 } 544 545 533 pj_time_val end_ice; 534 pj_ice_cand *lcand, *rcand; 535 pj_ice_check *check; 536 char src_addr[32]; 537 char dst_addr[32]; 538 539 if (status != PJ_SUCCESS) { 540 char errmsg[PJ_ERR_MSG_SIZE]; 541 pj_strerror(status, errmsg, sizeof(errmsg)); 542 PJ_LOG(1,(ice_st->obj_name, "ICE negotiation failed: %s", errmsg)); 543 return; 544 } 545 546 pj_gettimeofday(&end_ice); 547 PJ_TIME_VAL_SUB(end_ice, tp_ice->start_ice); 548 549 check = &ice_st->ice->clist.checks[ice_st->ice->valid_list[0]]; 550 551 lcand = check->lcand; 552 rcand = check->rcand; 553 554 pj_ansi_strcpy(src_addr, pj_inet_ntoa(lcand->addr.ipv4.sin_addr)); 555 pj_ansi_strcpy(dst_addr, pj_inet_ntoa(rcand->addr.ipv4.sin_addr)); 556 557 PJ_LOG(3,(ice_st->obj_name, 558 "ICE negotiation completed in %d.%03ds. Sending from " 559 "%s:%d to %s:%d", 560 (int)end_ice.sec, (int)end_ice.msec, 561 src_addr, pj_ntohs(lcand->addr.ipv4.sin_port), 562 dst_addr, pj_ntohs(rcand->addr.ipv4.sin_port))); 563 } 564 565
Note: See TracChangeset
for help on using the changeset viewer.