diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-01-02 08:28:33 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-01-02 08:28:33 +0000 |
commit | 46a6ba1778fd458bcb91de4881717aaa710130d9 (patch) | |
tree | f64dad68c711b61ee53f3de936956e3ed30ba693 /pjmedia | |
parent | 0fad3d64d2fe2fe4e187ef752ec4dc888aea2617 (diff) |
Related to ticket #437: reduce the stack usage of ICE media transport
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1656 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r-- | pjmedia/src/pjmedia/transport_ice.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 5b3e9e0d..649aeac7 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -94,6 +94,10 @@ static pjmedia_transport_op tp_ice_op = &pjmedia_ice_destroy }; +static const pj_str_t STR_CANDIDATE = {"candidate", 9}; +static const pj_str_t STR_ICE_LITE = {"ice-lite", 8}; +static const pj_str_t STR_ICE_MISMATCH = {"ice-mismatch", 12}; + /* * Create ICE media transport. @@ -467,16 +471,13 @@ PJ_DEF(pj_status_t) pjmedia_ice_start_ice(pjmedia_transport *tp, struct transport_ice *tp_ice = (struct transport_ice*)tp; const pjmedia_sdp_attr *attr; unsigned i, cand_cnt; - pj_ice_sess_cand cand[PJ_ICE_MAX_CAND]; + pj_ice_sess_cand *cand; const pjmedia_sdp_media *sdp_med; pj_bool_t remote_is_lite = PJ_FALSE; pj_bool_t ice_mismatch = PJ_FALSE; pjmedia_sdp_conn *conn = NULL; pj_sockaddr conn_addr; pj_bool_t conn_found_in_candidate = PJ_FALSE; - const pj_str_t STR_CANDIDATE = {"candidate", 9}; - const pj_str_t STR_ICE_LITE = {"ice-lite", 8}; - const pj_str_t STR_ICE_MISMATCH = {"ice-mismatch", 12}; pj_str_t uname, pass; pj_status_t status; @@ -529,9 +530,13 @@ PJ_DEF(pj_status_t) pjmedia_ice_start_ice(pjmedia_transport *tp, } pass = attr->value; + /* Allocate candidate array */ + cand = (pj_ice_sess_cand*) + pj_pool_calloc(pool, PJ_ICE_MAX_CAND, sizeof(pj_ice_sess_cand)); + /* Get all candidates in the media */ cand_cnt = 0; - for (i=0; i<sdp_med->attr_count; ++i) { + for (i=0; i<sdp_med->attr_count && cand_cnt < PJ_ICE_MAX_CAND; ++i) { pjmedia_sdp_attr *attr; attr = sdp_med->attr[i]; |