summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-03-30 16:46:36 +0000
committerBenny Prijono <bennylp@teluu.com>2006-03-30 16:46:36 +0000
commit7237d05a6be9697d0d8cc380d932d838c669b52a (patch)
tree266d985edb1b101e109a6da54d3ae05cc5501abc /pjsip
parent1ab7cc3a1064ab070ba4c68be45025469e8ce0e4 (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.c2
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c32
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;
}