diff options
author | Benny Prijono <bennylp@teluu.com> | 2006-03-30 16:46:36 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2006-03-30 16:46:36 +0000 |
commit | 7237d05a6be9697d0d8cc380d932d838c669b52a (patch) | |
tree | 266d985edb1b101e109a6da54d3ae05cc5501abc /pjsip | |
parent | 1ab7cc3a1064ab070ba4c68be45025469e8ce0e4 (diff) |
Support for alternate pool backend
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@368 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r-- | pjsip/src/pjsip/sip_endpoint.c | 2 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_call.c | 32 |
2 files changed, 16 insertions, 18 deletions
diff --git a/pjsip/src/pjsip/sip_endpoint.c b/pjsip/src/pjsip/sip_endpoint.c index 848c4c57..c4aeb742 100644 --- a/pjsip/src/pjsip/sip_endpoint.c +++ b/pjsip/src/pjsip/sip_endpoint.c @@ -939,7 +939,7 @@ PJ_DEF(void) pjsip_endpt_dump( pjsip_endpoint *endpt, pj_bool_t detail ) PJ_LOG(3, (THIS_FILE, "Dumping endpoint %p:", endpt)); /* Dumping pool factory. */ - (*endpt->pf->dump_status)(endpt->pf, detail); + pj_pool_factory_dump(endpt->pf, detail); /* Pool health. */ PJ_LOG(3, (THIS_FILE," Endpoint pool capacity=%u, used_size=%u", diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index b01b968d..d18a59da 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -98,28 +98,17 @@ static void schedule_call_timer( pjsua_call *call, pj_timer_entry *e, /* Close and reopen socket. */ -static pj_status_t reopen_sock( pj_sock_t *sock) +static pj_status_t reopen_sock( pj_sock_t *sock, pj_sockaddr_in *addr) { - pj_sockaddr_in addr; - int addrlen; pj_status_t status; - addrlen = sizeof(pj_sockaddr_in); - status = pj_sock_getsockname(*sock, &addr, &addrlen); - if (status != PJ_SUCCESS) { - pjsua_perror(THIS_FILE, "Error getting RTP/RTCP socket name", status); - return status; - } - - pj_sock_close(*sock); - status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0, sock); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to create socket", status); return status; } - status = pj_sock_bind(*sock, &addr, sizeof(pj_sockaddr_in)); + status = pj_sock_bind(*sock, addr, sizeof(pj_sockaddr_in)); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to re-bind RTP/RTCP socket", status); return status; @@ -141,18 +130,27 @@ static pj_status_t call_destroy_media(int call_index) } if (call->session) { + pj_sockaddr_in rtp_addr, rtcp_addr; + int addrlen; + + addrlen = sizeof(rtp_addr); + pj_sock_getsockname(call->skinfo.rtp_sock, &rtp_addr, &addrlen); + + addrlen = sizeof(rtcp_addr); + pj_sock_getsockname(call->skinfo.rtcp_sock, &rtcp_addr, &addrlen); + + /* Destroy session (this will also close RTP/RTCP sockets). */ + pjmedia_session_destroy(call->session); /* Close and reopen RTP socket. * This is necessary to get the socket unregistered from ioqueue, * when IOCompletionPort is used. */ - reopen_sock(&call->skinfo.rtp_sock); + reopen_sock(&call->skinfo.rtp_sock, &rtp_addr); /* Close and reopen RTCP socket too. */ - reopen_sock(&call->skinfo.rtcp_sock); + reopen_sock(&call->skinfo.rtcp_sock, &rtcp_addr); - /* Must destroy session after socket is closed. */ - pjmedia_session_destroy(call->session); call->session = NULL; } |