Changeset 58 for pjproject/trunk/pjsip/src/pjsip/sip_transport_udp.c
- Timestamp:
- Nov 19, 2005 8:28:08 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsip/sip_transport_udp.c
r57 r58 110 110 /* Read next packet. */ 111 111 bytes_read = sizeof(rdata->pkt_info.packet); 112 rdata->pkt_info.addr_len = sizeof(rdata->pkt_info.addr); 112 113 status = pj_ioqueue_recvfrom(key, op_key, 113 114 rdata->pkt_info.packet, … … 161 162 pjsip_tx_data_op_key *tdata_op_key = (pjsip_tx_data_op_key*)op_key; 162 163 164 tdata_op_key->tdata = NULL; 165 163 166 if (tdata_op_key->callback) { 164 167 tdata_op_key->callback(&tp->base, tdata_op_key->token, bytes_sent); … … 184 187 185 188 PJ_ASSERT_RETURN(transport && tdata, PJ_EINVAL); 186 189 PJ_ASSERT_RETURN(tdata->op_key.tdata == NULL, PJSIP_EPENDINGTX); 190 187 191 /* Init op key. */ 188 192 tdata->op_key.tdata = tdata; … … 240 244 241 245 /* 242 * pjsip_udp_transport_ start()243 * 244 * Start an UDP transport/listener.245 */ 246 PJ_DEF(pj_status_t) pjsip_udp_transport_ start( pjsip_endpoint *endpt,247 const pj_sockaddr_in *local,248 249 250 246 * pjsip_udp_transport_attach() 247 * 248 * Attach UDP socket and start transport. 249 */ 250 PJ_DEF(pj_status_t) pjsip_udp_transport_attach( pjsip_endpoint *endpt, 251 pj_sock_t sock, 252 const pj_sockaddr_in *pub_addr, 253 unsigned async_cnt, 254 pjsip_transport **p_transport) 251 255 { 252 256 pj_pool_t *pool; … … 255 259 pj_ioqueue_callback ioqueue_cb; 256 260 unsigned i; 261 int addrlen; 257 262 pj_status_t status; 258 263 … … 273 278 274 279 /* Init addresses. */ 275 pj_memcpy(&tp->base.local_addr, local, sizeof(pj_sockaddr_in)); 280 addrlen = sizeof(tp->base.local_addr); 281 status = pj_sock_getsockname(sock, &tp->base.local_addr, &addrlen); 282 if (status != PJ_SUCCESS) { 283 pjsip_endpt_destroy_pool(endpt, pool); 284 return status; 285 } 276 286 pj_memcpy(&tp->base.public_addr, pub_addr, sizeof(pj_sockaddr_in)); 277 287 tp->base.rem_addr.sin_family = PJ_AF_INET; … … 287 297 goto on_error; 288 298 289 /* Create socket. */ 290 status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &tp->sock); 291 if (status != PJ_SUCCESS) 292 goto on_error; 293 294 /* Bind socket. */ 295 status = pj_sock_bind(tp->sock, local, sizeof(pj_sockaddr_in)); 296 if (status != PJ_SUCCESS) 297 goto on_error; 299 /* Attach socket. */ 300 tp->sock = sock; 298 301 299 302 /* Register to ioqueue. */ … … 377 380 } 378 381 379 382 /* 383 * pjsip_udp_transport_start() 384 * 385 * Start an UDP transport/listener. 386 */ 387 PJ_DEF(pj_status_t) pjsip_udp_transport_start( pjsip_endpoint *endpt, 388 const pj_sockaddr_in *local, 389 const pj_sockaddr_in *pub_addr, 390 unsigned async_cnt, 391 pjsip_transport **p_transport) 392 { 393 pj_sock_t sock; 394 pj_status_t status; 395 396 status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, &sock); 397 if (status != PJ_SUCCESS) 398 return status; 399 400 status = pj_sock_bind(sock, local, sizeof(*local)); 401 if (status != PJ_SUCCESS) { 402 pj_sock_close(sock); 403 return status; 404 } 405 406 return pjsip_udp_transport_attach( endpt, sock, pub_addr, async_cnt, 407 p_transport ); 408 } 409 410
Note: See TracChangeset
for help on using the changeset viewer.