summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-10-18 15:28:33 +0000
committerBenny Prijono <bennylp@teluu.com>2007-10-18 15:28:33 +0000
commit0017ca8ca74d82987fc0d400ccd50b9db6598e5f (patch)
tree226d7bc68cc45f23fa4dcca976e9d3063e5197b2 /pjsip/src/pjsua-lib
parentbcda35b887329028d58705e0b15b958e6f922887 (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.c21
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) {