From 4dadb8e1d7efb928aab416c79e8f1776455735a1 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Thu, 28 Jun 2007 02:47:32 +0000 Subject: 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 --- pjsip/src/pjsip-simple/publishc.c | 6 ++++-- pjsip/src/pjsua-lib/pjsua_pres.c | 12 ++++++++---- 2 files changed, 12 insertions(+), 6 deletions(-) (limited to 'pjsip') 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); -- cgit v1.2.3