diff options
author | Benny Prijono <bennylp@teluu.com> | 2009-10-12 07:44:14 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2009-10-12 07:44:14 +0000 |
commit | 8f0431d203dd8b5adddb17ea56f0321374b86b29 (patch) | |
tree | e7dfbcada2039c2dbc6163cb23261a64836d7236 /pjsip/src/pjsua-lib | |
parent | cc9e61e2abaf2cb5e225a2263ad2b0c6d4f803d2 (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')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 1 | ||||
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_pres.c | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index 0b24cb5c..cc26bc87 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -161,6 +161,7 @@ PJ_DEF(void) pjsua_acc_config_default(pjsua_acc_config *cfg) pj_bzero(cfg, sizeof(*cfg)); cfg->reg_timeout = PJSUA_REG_INTERVAL; + pjsip_publishc_opt_default(&cfg->publish_opt); cfg->transport_id = PJSUA_INVALID_ID; cfg->allow_contact_rewrite = PJ_TRUE; cfg->require_100rel = pjsua_var.ua_cfg.require_100rel; 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; |