From 03c39c1ff8bb8e932c75c52312a3d9d6ffbf67d5 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Mon, 8 Sep 2008 12:46:29 +0000 Subject: Ticket #615: Error adding new buddy in the on_incoming_subscribe() callback (thanks Joseph Maiquez for reporting the error) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2264 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_pres.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'pjsip') diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c index 23050ff2..f0a2100f 100644 --- a/pjsip/src/pjsua-lib/pjsua_pres.c +++ b/pjsip/src/pjsua-lib/pjsua_pres.c @@ -1179,7 +1179,16 @@ void pjsua_pres_update_acc(int acc_id, pj_bool_t force) pjsip_tx_data *tdata; pjsip_pres_get_status(uapres->sub, &pres_status); - if (force || pres_status.info[0].basic_open != acc->online_status) { + + /* Only send NOTIFY once subscription is active. Some subscriptions + * may still be in NULL (when app is adding a new buddy while in the + * on_incoming_subscribe() callback) or PENDING (when user approval is + * being requested) state and we don't send NOTIFY to these subs until + * the user accepted the request. + */ + if (pjsip_evsub_get_state(uapres->sub)==PJSIP_EVSUB_STATE_ACTIVE && + (force || pres_status.info[0].basic_open != acc->online_status)) + { pres_status.info[0].basic_open = acc->online_status; pj_memcpy(&pres_status.info[0].rpid, &acc->rpid, -- cgit v1.2.3