diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-08-01 11:38:14 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-08-01 11:38:14 +0000 |
commit | c479ca464b0a7717a5579d0fd9d295502ff146ce (patch) | |
tree | 7fcc15222bac4518acbbf3f17d38b509e58f34fe /pjsip-apps/src | |
parent | 483a106bd1476d3eb0a2168854318cfef4716b35 (diff) |
Fixed ticket #359: Wrong Via branch generation in proxy causing the same branch value to be generated for RFC 2543 clients (thanks Helmut Wolf)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1411 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src')
-rw-r--r-- | pjsip-apps/src/samples/proxy.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/pjsip-apps/src/samples/proxy.h b/pjsip-apps/src/samples/proxy.h index 8eef92ba..65ccd198 100644 --- a/pjsip-apps/src/samples/proxy.h +++ b/pjsip-apps/src/samples/proxy.h @@ -235,7 +235,9 @@ static pj_status_t init_stack(void) static pj_status_t init_proxy(void) { - pj_in_addr addr; + pj_in_addr pri_addr; + pj_in_addr addr_list[16]; + unsigned addr_cnt = PJ_ARRAY_SIZE(addr_list); unsigned i; /* List all names matching local endpoint. @@ -248,16 +250,32 @@ static pj_status_t init_proxy(void) /* The first address is important since this would be the one * to be added in Record-Route. */ - if (pj_gethostip(&addr) == PJ_SUCCESS) { + if (pj_gethostip(&pri_addr)==PJ_SUCCESS) { pj_strdup2(global.pool, &global.name[global.name_cnt].host, - pj_inet_ntoa(addr)); + pj_inet_ntoa(pri_addr)); global.name[global.name_cnt].port = global.port; global.name_cnt++; } + /* Get the rest of IP interfaces */ + if (pj_enum_ip_interface(&addr_cnt, addr_list) == PJ_SUCCESS) { + for (i=0; i<addr_cnt; ++i) { + + if (addr_list[i].s_addr == pri_addr.s_addr) + continue; + + pj_strdup2(global.pool, &global.name[global.name_cnt].host, + pj_inet_ntoa(addr_list[i])); + global.name[global.name_cnt].port = global.port; + global.name_cnt++; + } + } + + /* No need to add this, this should have been added above. global.name[global.name_cnt].host = pj_str("127.0.0.1"); global.name[global.name_cnt].port = global.port; global.name_cnt++; + */ global.name[global.name_cnt].host = *pj_gethostname(); global.name[global.name_cnt].port = global.port; |