summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2015-03-19 04:59:23 +0000
committerRiza Sulistyo <riza@teluu.com>2015-03-19 04:59:23 +0000
commit3ebc9c8e19e708ae59d88d5bb9c855fac52cad9c (patch)
treee81e73bac2998e1755b766a6c0a998512528c819 /pjsip
parentb1716174e6896d04fc6229952567223743be7fbd (diff)
Re #1825: Implement new on_reg_started2 callback
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4999 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/include/pjsua-lib/pjsua.h14
-rw-r--r--pjsip/src/pjsua-lib/pjsua_acc.c12
2 files changed, 26 insertions, 0 deletions
diff --git a/pjsip/include/pjsua-lib/pjsua.h b/pjsip/include/pjsua-lib/pjsua.h
index e730790c..56c3c82a 100644
--- a/pjsip/include/pjsua-lib/pjsua.h
+++ b/pjsip/include/pjsua-lib/pjsua.h
@@ -477,6 +477,10 @@ typedef struct pjsua_reg_info
{
struct pjsip_regc_cbparam *cbparam; /**< Parameters returned by
registration callback. */
+ pjsip_regc *regc; /**< Client registration
+ structure. */
+ pj_bool_t renew; /**< Non-zero for registration and
+ zero for unregistration. */
} pjsua_reg_info;
@@ -907,6 +911,16 @@ typedef struct pjsua_callback
* unregistration.
*/
void (*on_reg_started)(pjsua_acc_id acc_id, pj_bool_t renew);
+
+ /**
+ * This is the alternative version of the \a on_reg_started() callback with
+ * \a pjsua_reg_info argument.
+ *
+ * @param acc_id The account ID.
+ * @param info The registration info.
+ */
+ void (*on_reg_started2)(pjsua_acc_id acc_id,
+ pjsua_reg_info *info);
/**
* Notify application when registration status has changed.
diff --git a/pjsip/src/pjsua-lib/pjsua_acc.c b/pjsip/src/pjsua-lib/pjsua_acc.c
index 78c1f3d0..ecb9b33f 100644
--- a/pjsip/src/pjsua-lib/pjsua_acc.c
+++ b/pjsip/src/pjsua-lib/pjsua_acc.c
@@ -2279,8 +2279,12 @@ static void regc_cb(struct pjsip_regc_cbparam *param)
if (pjsua_var.ua_cfg.cb.on_reg_state2) {
pjsua_reg_info reg_info;
+ pjsip_regc_info rinfo;
+ pjsip_regc_get_info(param->regc, &rinfo);
reg_info.cbparam = param;
+ reg_info.regc = param->regc;
+ reg_info.renew = (rinfo.interval != 0);
(*pjsua_var.ua_cfg.cb.on_reg_state2)(acc->index, &reg_info);
}
@@ -2589,6 +2593,14 @@ PJ_DEF(pj_status_t) pjsua_acc_set_registration( pjsua_acc_id acc_id,
if (pjsua_var.ua_cfg.cb.on_reg_started) {
(*pjsua_var.ua_cfg.cb.on_reg_started)(acc_id, renew);
}
+ if (pjsua_var.ua_cfg.cb.on_reg_started2) {
+ pjsua_reg_info rinfo;
+
+ rinfo.cbparam = NULL;
+ rinfo.regc = pjsua_var.acc[acc_id].regc;
+ rinfo.renew = renew;
+ (*pjsua_var.ua_cfg.cb.on_reg_started2)(acc_id, &rinfo);
+ }
}
if (status != PJ_SUCCESS) {