summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_pres.c
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2009-10-12 07:44:14 +0000
committerBenny Prijono <bennylp@teluu.com>2009-10-12 07:44:14 +0000
commit8f0431d203dd8b5adddb17ea56f0321374b86b29 (patch)
treee7dfbcada2039c2dbc6163cb23261a64836d7236 /pjsip/src/pjsua-lib/pjsua_pres.c
parentcc9e61e2abaf2cb5e225a2263ad2b0c6d4f803d2 (diff)
Ticket #411: Cannot update account presence's status while previous PUBLISH is in progress (thanks Olivier Beytrison for the report)
- enable request queueing. If PUBLISH is to be sent while another one is still in progress, queue the request and send it later when the ongoing request completes - this behavior is controlled by new pjsip_publishc_opt structure to control session's options - default behavior is to queue the request git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2940 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_pres.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c
index b9c11ae4..bef8af92 100644
--- a/pjsip/src/pjsua-lib/pjsua_pres.c
+++ b/pjsip/src/pjsua-lib/pjsua_pres.c
@@ -1073,7 +1073,10 @@ static pj_status_t send_publish(int acc_id, pj_bool_t active)
/* Send the PUBLISH request */
status = pjsip_publishc_send(acc->publish_sess, tdata);
- if (status != PJ_SUCCESS) {
+ if (status == PJ_EPENDING) {
+ PJ_LOG(3,(THIS_FILE, "Previous request is in progress, "
+ "PUBLISH request is queued"));
+ } else if (status != PJ_SUCCESS) {
pjsua_perror(THIS_FILE, "Error sending PUBLISH request", status);
goto on_error;
}
@@ -1102,7 +1105,8 @@ pj_status_t pjsua_pres_init_publish_acc(int acc_id)
if (acc_cfg->publish_enabled) {
/* Create client publication */
- status = pjsip_publishc_create(pjsua_var.endpt, 0, acc, &publish_cb,
+ status = pjsip_publishc_create(pjsua_var.endpt, &acc_cfg->publish_opt,
+ acc, &publish_cb,
&acc->publish_sess);
if (status != PJ_SUCCESS) {
acc->publish_sess = NULL;