summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-01-02 08:27:03 +0000
committerBenny Prijono <bennylp@teluu.com>2008-01-02 08:27:03 +0000
commit0fad3d64d2fe2fe4e187ef752ec4dc888aea2617 (patch)
tree6c50e10d0b5f16208c625504fc55ec874a6941ea /pjsip/src/pjsua-lib
parent7224fb899a0bdfb47773329a227f4bca452b2748 (diff)
Related to ticket #437: optimize the stack usage of pjsua-lib
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1655 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c8
-rw-r--r--pjsip/src/pjsua-lib/pjsua_call.c2
-rw-r--r--pjsip/src/pjsua-lib/pjsua_media.c43
3 files changed, 30 insertions, 23 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 76dca8e0..cd1b5931 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -864,7 +864,6 @@ static pj_status_t pjsua_regc_init(int acc_id)
{
pjsua_acc *acc;
pj_str_t contact;
- char contact_buf[1024];
pj_pool_t *pool;
pj_status_t status;
@@ -893,7 +892,7 @@ static pj_status_t pjsua_regc_init(int acc_id)
return status;
}
- pool = pj_pool_create_on_buf(NULL, contact_buf, sizeof(contact_buf));
+ pool = pjsua_pool_create("tmpregc", 512, 512);
status = pjsua_acc_create_uac_contact( pool, &contact,
acc_id, &acc->cfg.reg_uri);
if (status != PJ_SUCCESS) {
@@ -901,6 +900,7 @@ static pj_status_t pjsua_regc_init(int acc_id)
" for registration",
status);
pjsip_regc_destroy(acc->regc);
+ pj_pool_release(pool);
acc->regc = NULL;
return status;
}
@@ -916,6 +916,7 @@ static pj_status_t pjsua_regc_init(int acc_id)
"Client registration initialization error",
status);
pjsip_regc_destroy(acc->regc);
+ pj_pool_release(pool);
acc->regc = NULL;
return status;
}
@@ -952,7 +953,6 @@ static pj_status_t pjsua_regc_init(int acc_id)
const pj_str_t STR_USER_AGENT = { "User-Agent", 10 };
pjsip_generic_string_hdr *h;
- pool = pj_pool_create_on_buf(NULL, contact_buf, sizeof(contact_buf));
pj_list_init(&hdr_list);
h = pjsip_generic_string_hdr_create(pool, &STR_USER_AGENT,
@@ -962,6 +962,8 @@ static pj_status_t pjsua_regc_init(int acc_id)
pjsip_regc_add_headers(acc->regc, &hdr_list);
}
+ pj_pool_release(pool);
+
return PJ_SUCCESS;
}
diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c
index 7359faa3..eaa1f41c 100644
--- a/pjsip/src/pjsua-lib/pjsua_call.c
+++ b/pjsip/src/pjsua-lib/pjsua_call.c
@@ -1500,7 +1500,7 @@ PJ_DEF(pj_status_t) pjsua_call_xfer_replaces( pjsua_call_id call_id,
{
pjsua_call *dest_call;
pjsip_dialog *dest_dlg;
- char str_dest_buf[512];
+ char str_dest_buf[PJSIP_MAX_URL_SIZE*2];
pj_str_t str_dest;
int len;
pjsip_uri *uri;
diff --git a/pjsip/src/pjsua-lib/pjsua_media.c b/pjsip/src/pjsua-lib/pjsua_media.c
index 1d1e727f..4a4292d4 100644
--- a/pjsip/src/pjsua-lib/pjsua_media.c
+++ b/pjsip/src/pjsua-lib/pjsua_media.c
@@ -220,7 +220,7 @@ static pj_status_t create_rtp_rtcp_sock(const pjsua_transport_config *cfg,
pj_sockaddr_in bound_addr;
pj_sockaddr_in mapped_addr[2];
pj_status_t status = PJ_SUCCESS;
- char addr_buf[80];
+ char addr_buf[PJ_INET6_ADDRSTRLEN+2];
pj_sock_t sock[2];
/* Make sure STUN server resolution has completed */
@@ -624,6 +624,7 @@ static pj_status_t create_ice_media_transports(pjsua_transport_config *cfg)
pj_ice_strans_comp comp;
pjmedia_ice_cb ice_cb;
int next_port;
+ char name[32];
#if PJMEDIA_ADVERTISE_RTCP
enum { COMP_CNT=2 };
#else
@@ -633,7 +634,9 @@ static pj_status_t create_ice_media_transports(pjsua_transport_config *cfg)
pj_bzero(&ice_cb, sizeof(pjmedia_ice_cb));
ice_cb.on_ice_complete = &on_ice_complete;
- status = pjmedia_ice_create(pjsua_var.med_endpt, NULL, COMP_CNT,
+ pj_ansi_snprintf(name, sizeof(name), "icetp%02d", i);
+
+ status = pjmedia_ice_create(pjsua_var.med_endpt, name, COMP_CNT,
&pjsua_var.stun_cfg, &ice_cb,
&pjsua_var.calls[i].med_tp);
if (status != PJ_SUCCESS) {
@@ -890,8 +893,6 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
pjmedia_session_info sess_info;
pjmedia_stream_info *si = NULL;
pjmedia_port *media_port;
- pj_str_t port_name;
- char tmp[PJSIP_MAX_URL_SIZE];
pj_status_t status;
/* Destroy existing media session, if any. */
@@ -952,7 +953,6 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
/* No need because we need keepalive? */
} else {
-
/* Start ICE */
if (pjsua_var.media_cfg.enable_ice) {
status = pjmedia_ice_start_ice(call->med_tp, call->inv->pool,
@@ -1012,19 +1012,24 @@ pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
/*
* Add the call to conference bridge.
*/
- port_name.ptr = tmp;
- port_name.slen = pjsip_uri_print(PJSIP_URI_IN_REQ_URI,
- call->inv->dlg->remote.info->uri,
- tmp, sizeof(tmp));
- if (port_name.slen < 1) {
- port_name = pj_str("call");
- }
- status = pjmedia_conf_add_port( pjsua_var.mconf, call->inv->pool,
- media_port,
- &port_name,
- (unsigned*)&call->conf_slot);
- if (status != PJ_SUCCESS) {
- return status;
+ {
+ char tmp[PJSIP_MAX_URL_SIZE];
+ pj_str_t port_name;
+
+ port_name.ptr = tmp;
+ port_name.slen = pjsip_uri_print(PJSIP_URI_IN_REQ_URI,
+ call->inv->dlg->remote.info->uri,
+ tmp, sizeof(tmp));
+ if (port_name.slen < 1) {
+ port_name = pj_str("call");
+ }
+ status = pjmedia_conf_add_port( pjsua_var.mconf, call->inv->pool,
+ media_port,
+ &port_name,
+ (unsigned*)&call->conf_slot);
+ if (status != PJ_SUCCESS) {
+ return status;
+ }
}
/* Call's media state is active */
@@ -1089,7 +1094,7 @@ PJ_DEF(unsigned) pjsua_conf_get_max_ports(void)
*/
PJ_DEF(unsigned) pjsua_conf_get_active_ports(void)
{
- unsigned ports[256];
+ unsigned ports[PJSUA_MAX_CONF_PORTS];
unsigned count = PJ_ARRAY_SIZE(ports);
pj_status_t status;