diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-10-18 15:28:33 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-10-18 15:28:33 +0000 |
commit | 0017ca8ca74d82987fc0d400ccd50b9db6598e5f (patch) | |
tree | 226d7bc68cc45f23fa4dcca976e9d3063e5197b2 /pjsip/src/pjsua-lib | |
parent | bcda35b887329028d58705e0b15b958e6f922887 (diff) |
Updated Service-Route calculation
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1508 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_acc.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c index 180d0815..a1cab41a 100644 --- a/pjsip/src/pjsua-lib/pjsua_acc.c +++ b/pjsip/src/pjsua-lib/pjsua_acc.c @@ -539,7 +539,7 @@ void update_service_route(pjsua_acc *acc, pjsip_rx_data *rdata) const pj_str_t HNAME = { "Service-Route", 13 }; const pj_str_t HROUTE = { "Route", 5 }; pjsip_uri *uri[PJSUA_ACC_MAX_PROXIES]; - unsigned i, uri_cnt = 0; + unsigned i, uri_cnt = 0, rcnt; /* Find and parse Service-Route headers */ for (;;) { @@ -602,14 +602,17 @@ void update_service_route(pjsua_acc *acc, pjsip_rx_data *rdata) */ /* First remove all routes which are not the outbound proxies */ - for (i=0, hr=acc->route_set.prev; - i<pjsua_var.ua_cfg.outbound_proxy_cnt; - ++i) - { - pjsip_route_hdr *prev = hr->prev; - pj_list_erase(hr); - hr = prev; - } + rcnt = pj_list_size(&acc->route_set); + if (rcnt != pjsua_var.ua_cfg.outbound_proxy_cnt) { + for (i=pjsua_var.ua_cfg.outbound_proxy_cnt, hr=acc->route_set.prev; + i<rcnt; + ++i) + { + pjsip_route_hdr *prev = hr->prev; + pj_list_erase(hr); + hr = prev; + } + } /* Then append the Service-Route URIs */ for (i=0; i<uri_cnt; ++i) { |