Module: kamailio
Branch: master
Commit: 8ef142541fe9e8750335463fafd8d9a2cd03fb44
URL:
https://github.com/kamailio/kamailio/commit/8ef142541fe9e8750335463fafd8d9a…
Author: jaybeepee <jason.penton(a)gmail.com>
Committer: jaybeepee <jason.penton(a)gmail.com>
Date: 2016-09-12T16:57:21+02:00
modules/ims_usrloc_scscf: add extra state for IMPUs in UNREG state with no contacts
---
Modified: modules/ims_usrloc_scscf/impurecord.c
Modified: modules/ims_usrloc_scscf/ul_callback.c
Modified: modules/ims_usrloc_scscf/ul_callback.h
---
Diff:
https://github.com/kamailio/kamailio/commit/8ef142541fe9e8750335463fafd8d9a…
Patch:
https://github.com/kamailio/kamailio/commit/8ef142541fe9e8750335463fafd8d9a…
---
diff --git a/modules/ims_usrloc_scscf/impurecord.c
b/modules/ims_usrloc_scscf/impurecord.c
index cf41149..97adf93 100644
--- a/modules/ims_usrloc_scscf/impurecord.c
+++ b/modules/ims_usrloc_scscf/impurecord.c
@@ -473,7 +473,11 @@ static inline void process_impurecord(impurecord_t* _r) {
} else {
if (!hascontacts) {
LM_DBG("This impu is not to be deleted but has no contacts - changing
state to IMPU_UNREGISTERED\n");
- _r->reg_state = IMPU_UNREGISTERED;
+ //run callback here UL_IMPU_UNREG_NC for UL_IMPU_UNREG_NC
+ if (_r->reg_state != IMPU_UNREGISTERED && exists_ulcb_type(_r->cbs,
UL_IMPU_UNREG_NC)) {
+ run_ul_callbacks(_r->cbs, UL_IMPU_UNREG_NC, _r, 0);
+ }
+ _r->reg_state = IMPU_UNREGISTERED;
}
}
diff --git a/modules/ims_usrloc_scscf/ul_callback.c
b/modules/ims_usrloc_scscf/ul_callback.c
index 392953f..1099282 100644
--- a/modules/ims_usrloc_scscf/ul_callback.c
+++ b/modules/ims_usrloc_scscf/ul_callback.c
@@ -129,6 +129,7 @@ int register_ulcb( struct impurecord* r, struct ucontact* c, int
types, ul_cb f,
|| (types & UL_IMPU_REG_NC_DELETE)
|| (types & UL_IMPU_NR_DELETE)
|| (types & UL_IMPU_UNREG_EXPIRED)
+ || (types & UL_IMPU_UNREG_NC)
|| (types & UL_IMPU_UPDATE_CONTACT)
|| (types & UL_IMPU_DELETE_CONTACT)
|| (types & UL_IMPU_EXPIRE_CONTACT)
diff --git a/modules/ims_usrloc_scscf/ul_callback.h
b/modules/ims_usrloc_scscf/ul_callback.h
index 2302881..2d2ff7d 100644
--- a/modules/ims_usrloc_scscf/ul_callback.h
+++ b/modules/ims_usrloc_scscf/ul_callback.h
@@ -67,7 +67,8 @@ struct impurecord;
#define UL_IMPU_DELETE_CONTACT (1<<12) /* explciti contact delete from IMPU
(dereg) */
#define UL_IMPU_DELETE_CONTACT_IMPLICIT (1<<13) /* implicit contact delete frim
IMPU (expiry, etc) */
#define UL_IMPU_EXPIRE_CONTACT (1<<14) /* a new contact has been inserted for
this IMPU */
-#define ULCB_MAX ((1<<15)-1)
+#define UL_IMPU_UNREG_NC (1<<15) /* Unregistered no
contacts */
+#define ULCB_MAX ((1<<16)-1)
/*! \brief callback function prototype */
typedef void (ul_cb) (struct impurecord* r, struct ucontact *c, int type, void *param);