summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-06-28 02:47:32 +0000
committerBenny Prijono <bennylp@teluu.com>2007-06-28 02:47:32 +0000
commit4dadb8e1d7efb928aab416c79e8f1776455735a1 (patch)
tree552a917fd1788bbb3da1ab344124b0f5767d588c /pjsip
parentfbdd259dcedfaf197e35922d8018171a5d94b656 (diff)
Ticket #349: Crash when sending PUBLISH when network is unreachable
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1398 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip-simple/publishc.c6
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c12
2 files changed, 12 insertions, 6 deletions
diff --git a/pjsip/src/pjsip-simple/publishc.c b/pjsip/src/pjsip-simple/publishc.c
index 6096622c..3f11ad13 100644
--- a/pjsip/src/pjsip-simple/publishc.c
+++ b/pjsip/src/pjsip-simple/publishc.c
@@ -596,11 +596,13 @@ PJ_DEF(pj_status_t) pjsip_publishc_send(pjsip_publishc *pubc,
status = pjsip_endpt_send_request(pubc->endpt, tdata, -1, pubc,
&tsx_callback);
if (status!=PJ_SUCCESS) {
- --pubc->pending_tsx;
+ // no need to decrement, callback has been called and it should
+ // already decremented pending_tsx. Decrementing this here may
+ // cause accessing freed memory location.
+ //--pubc->pending_tsx;
PJ_LOG(4,(THIS_FILE, "Error sending request, status=%d", status));
}
return status;
}
-
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index 070c6f00..89f2badb 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -699,8 +699,10 @@ static pj_status_t send_publish(int acc_id, pj_bool_t active)
return PJ_SUCCESS;
on_error:
- pjsip_publishc_destroy(acc->publish_sess);
- acc->publish_sess = NULL;
+ if (acc->publish_sess) {
+ pjsip_publishc_destroy(acc->publish_sess);
+ acc->publish_sess = NULL;
+ }
return status;
}
@@ -735,8 +737,10 @@ pj_status_t pjsua_pres_init_publish_acc(int acc_id)
}
/* Add credential for authentication */
- pjsip_publishc_set_credentials(acc->publish_sess, acc->cred_cnt,
- acc->cred);
+ if (acc->cred_cnt) {
+ pjsip_publishc_set_credentials(acc->publish_sess, acc->cred_cnt,
+ acc->cred);
+ }
/* Set route-set */
pjsip_publishc_set_route_set(acc->publish_sess, &acc->route_set);