Changeset 205 for pjproject/trunk/pjsip/src/pjsua/pjsua_core.c
- Timestamp:
- Feb 21, 2006 12:11:18 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua/pjsua_core.c
r201 r205 136 136 * Initialize sockets and optionally get the public address via STUN. 137 137 */ 138 static pj_status_t init_sockets() 138 static pj_status_t init_sockets(pj_bool_t sip, 139 pjmedia_sock_info *skinfo) 139 140 { 140 141 enum { … … 152 153 pj_sock_t sock[3]; 153 154 pj_sockaddr_in mapped_addr[3]; 154 pj_status_t status ;155 pj_status_t status = PJ_SUCCESS; 155 156 156 157 for (i=0; i<3; ++i) 157 158 sock[i] = PJ_INVALID_SOCKET; 158 159 159 /* Create and bind SIP UDP socket. */ 160 status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock[SIP_SOCK]); 161 if (status != PJ_SUCCESS) { 162 pjsua_perror(THIS_FILE, "socket() error", status); 163 goto on_error; 164 } 160 if (sip) { 161 /* Create and bind SIP UDP socket. */ 162 status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock[SIP_SOCK]); 163 if (status != PJ_SUCCESS) { 164 pjsua_perror(THIS_FILE, "socket() error", status); 165 goto on_error; 166 } 165 167 166 status = pj_sock_bind_in(sock[SIP_SOCK], 0, pjsua.sip_port); 167 if (status != PJ_SUCCESS) { 168 pjsua_perror(THIS_FILE, "bind() error", status); 169 goto on_error; 168 status = pj_sock_bind_in(sock[SIP_SOCK], 0, pjsua.sip_port); 169 if (status != PJ_SUCCESS) { 170 pjsua_perror(THIS_FILE, "bind() error", status); 171 goto on_error; 172 } 170 173 } 171 174 … … 230 233 pj_memcpy(&mapped_addr[i], &addr, sizeof(addr)); 231 234 232 mapped_addr[SIP_SOCK].sin_port = pj_htons((pj_uint16_t)pjsua.sip_port); 235 if (sip) 236 mapped_addr[SIP_SOCK].sin_port = pj_htons((pj_uint16_t)pjsua.sip_port); 237 else 238 mapped_addr[RTP_SOCK].sin_port = pj_htons((pj_uint16_t)rtp_port); 233 239 mapped_addr[RTP_SOCK].sin_port = pj_htons((pj_uint16_t)rtp_port); 234 240 mapped_addr[RTCP_SOCK].sin_port = pj_htons((pj_uint16_t)(rtp_port+1)); … … 257 263 } 258 264 259 pjsua.sip_sock = sock[SIP_SOCK]; 260 pj_memcpy(&pjsua.sip_sock_name, &mapped_addr[SIP_SOCK], sizeof(pj_sockaddr_in)); 261 262 pjsua.med_skinfo.rtp_sock = sock[RTP_SOCK]; 263 pj_memcpy(&pjsua.med_skinfo.rtp_addr_name, 265 if (sip) { 266 pjsua.sip_sock = sock[SIP_SOCK]; 267 pj_memcpy(&pjsua.sip_sock_name, &mapped_addr[SIP_SOCK], sizeof(pj_sockaddr_in)); 268 } 269 270 skinfo->rtp_sock = sock[RTP_SOCK]; 271 pj_memcpy(&skinfo->rtp_addr_name, 264 272 &mapped_addr[RTP_SOCK], sizeof(pj_sockaddr_in)); 265 273 266 pjsua.med_skinfo.rtcp_sock = sock[RTCP_SOCK];267 pj_memcpy(& pjsua.med_skinfo.rtcp_addr_name,274 skinfo->rtcp_sock = sock[RTCP_SOCK]; 275 pj_memcpy(&skinfo->rtcp_addr_name, 268 276 &mapped_addr[RTCP_SOCK], sizeof(pj_sockaddr_in)); 269 277 270 PJ_LOG(4,(THIS_FILE, "SIP UDP socket reachable at %s:%d", 271 pj_inet_ntoa(pjsua.sip_sock_name.sin_addr), 272 pj_ntohs(pjsua.sip_sock_name.sin_port))); 278 if (sip) { 279 PJ_LOG(4,(THIS_FILE, "SIP UDP socket reachable at %s:%d", 280 pj_inet_ntoa(pjsua.sip_sock_name.sin_addr), 281 pj_ntohs(pjsua.sip_sock_name.sin_port))); 282 } 273 283 PJ_LOG(4,(THIS_FILE, "RTP socket reachable at %s:%d", 274 pj_inet_ntoa( pjsua.med_skinfo.rtp_addr_name.sin_addr),275 pj_ntohs( pjsua.med_skinfo.rtp_addr_name.sin_port)));284 pj_inet_ntoa(skinfo->rtp_addr_name.sin_addr), 285 pj_ntohs(skinfo->rtp_addr_name.sin_port))); 276 286 PJ_LOG(4,(THIS_FILE, "RTCP UDP socket reachable at %s:%d", 277 pj_inet_ntoa( pjsua.med_skinfo.rtcp_addr_name.sin_addr),278 pj_ntohs( pjsua.med_skinfo.rtcp_addr_name.sin_port)));287 pj_inet_ntoa(skinfo->rtcp_addr_name.sin_addr), 288 pj_ntohs(skinfo->rtcp_addr_name.sin_port))); 279 289 280 290 return PJ_SUCCESS; … … 282 292 on_error: 283 293 for (i=0; i<3; ++i) { 294 if (sip && i==0) 295 continue; 284 296 if (sock[i] != PJ_INVALID_SOCKET) 285 297 pj_sock_close(sock[i]); … … 485 497 } 486 498 499 /* Init conference bridge. */ 500 501 status = pjmedia_conf_create(pjsua.pool, 8, 8000, 160, 16, &pjsua.mconf); 502 if (status != PJ_SUCCESS) { 503 pj_caching_pool_destroy(&pjsua.cp); 504 pjsua_perror(THIS_FILE, 505 "Media stack initialization has returned error", 506 status); 507 return status; 508 } 509 487 510 /* Init pjmedia-codecs: */ 488 511 … … 511 534 int i; /* Must be signed */ 512 535 pjsip_transport *udp_transport; 513 pj_status_t status ;536 pj_status_t status = PJ_SUCCESS; 514 537 515 538 /* Init sockets (STUN etc): */ 516 517 status = init_sockets();518 519 pjsua_perror(THIS_FILE, "init_sockets() has returned error",520 521 return status;522 523 539 for (i=0; i<PJ_ARRAY_SIZE(pjsua.med_sock_info); ++i) { 540 status = init_sockets(i==0, &pjsua.med_sock_info[i]); 541 if (status != PJ_SUCCESS) { 542 pjsua_perror(THIS_FILE, "init_sockets() has returned error", 543 status); 544 return status; 545 } 546 } 524 547 525 548 /* Add UDP transport: */
Note: See TracChangeset
for help on using the changeset viewer.