summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiong Sauw Ming <ming@teluu.com>2012-07-16 02:45:09 +0000
committerLiong Sauw Ming <ming@teluu.com>2012-07-16 02:45:09 +0000
commitf73554968e203926a07a4088cb8458531de2be6b (patch)
tree91a25dee4cf9a8725908f1c7c4bad1fe3250698d
parent5990539175ac160c5e3d927e1eeecdf5747dc89f (diff)
Fixed #1555 : Bug with via_rewrite feature when the account gets deleted
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4206 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsip-simple/publishc.c7
-rw-r--r--pjsip/src/pjsip-ua/sip_reg.c7
-rw-r--r--pjsip/src/pjsip/sip_dialog.c7
3 files changed, 15 insertions, 6 deletions
diff --git a/pjsip/src/pjsip-simple/publishc.c b/pjsip/src/pjsip-simple/publishc.c
index 6282923c..af8d0b3e 100644
--- a/pjsip/src/pjsip-simple/publishc.c
+++ b/pjsip/src/pjsip-simple/publishc.c
@@ -355,8 +355,11 @@ PJ_DEF(pj_status_t) pjsip_publishc_set_via_sent_by(pjsip_publishc *pubc,
if (!via_addr)
pj_bzero(&pubc->via_addr, sizeof(pubc->via_addr));
- else
- pubc->via_addr = *via_addr;
+ else {
+ if (pj_strcmp(&pubc->via_addr.host, &via_addr->host))
+ pj_strdup(pubc->pool, &pubc->via_addr.host, &via_addr->host);
+ pubc->via_addr.port = via_addr->port;
+ }
pubc->via_tp = via_tp;
return PJ_SUCCESS;
diff --git a/pjsip/src/pjsip-ua/sip_reg.c b/pjsip/src/pjsip-ua/sip_reg.c
index 2bbc81b9..14f1edcf 100644
--- a/pjsip/src/pjsip-ua/sip_reg.c
+++ b/pjsip/src/pjsip-ua/sip_reg.c
@@ -818,8 +818,11 @@ PJ_DEF(pj_status_t) pjsip_regc_set_via_sent_by( pjsip_regc *regc,
if (!via_addr)
pj_bzero(&regc->via_addr, sizeof(regc->via_addr));
- else
- regc->via_addr = *via_addr;
+ else {
+ if (pj_strcmp(&regc->via_addr.host, &via_addr->host))
+ pj_strdup(regc->pool, &regc->via_addr.host, &via_addr->host);
+ regc->via_addr.port = via_addr->port;
+ }
regc->via_tp = via_tp;
return PJ_SUCCESS;
diff --git a/pjsip/src/pjsip/sip_dialog.c b/pjsip/src/pjsip/sip_dialog.c
index 2e19bfc5..89986895 100644
--- a/pjsip/src/pjsip/sip_dialog.c
+++ b/pjsip/src/pjsip/sip_dialog.c
@@ -596,8 +596,11 @@ PJ_DEF(pj_status_t) pjsip_dlg_set_via_sent_by( pjsip_dialog *dlg,
if (!via_addr)
pj_bzero(&dlg->via_addr, sizeof(dlg->via_addr));
- else
- dlg->via_addr = *via_addr;
+ else {
+ if (pj_strcmp(&dlg->via_addr.host, &via_addr->host))
+ pj_strdup(dlg->pool, &dlg->via_addr.host, &via_addr->host);
+ dlg->via_addr.port = via_addr->port;
+ }
dlg->via_tp = via_tp;
return PJ_SUCCESS;