diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-06-28 02:47:32 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-06-28 02:47:32 +0000 |
commit | 4dadb8e1d7efb928aab416c79e8f1776455735a1 (patch) | |
tree | 552a917fd1788bbb3da1ab344124b0f5767d588c /pjsip | |
parent | fbdd259dcedfaf197e35922d8018171a5d94b656 (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.c | 6 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_pres.c | 12 |
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); |