Module: kamailio
Branch: master
Commit: 82c42dd91c5f715a17fca767ade700afde29c7a5
URL:
https://github.com/kamailio/kamailio/commit/82c42dd91c5f715a17fca767ade700a…
Author: jaybeepee <jason.penton(a)gmail.com>
Committer: jaybeepee <jason.penton(a)gmail.com>
Date: 2016-03-17T09:51:42+02:00
modules/ims_registrar_scscf: protection around sending notifications - prevent races
---
Modified: modules/ims_registrar_scscf/save.c
---
Diff:
https://github.com/kamailio/kamailio/commit/82c42dd91c5f715a17fca767ade700a…
Patch:
https://github.com/kamailio/kamailio/commit/82c42dd91c5f715a17fca767ade700a…
---
diff --git a/modules/ims_registrar_scscf/save.c b/modules/ims_registrar_scscf/save.c
index a33dbcf..d677272 100644
--- a/modules/ims_registrar_scscf/save.c
+++ b/modules/ims_registrar_scscf/save.c
@@ -859,11 +859,14 @@ int update_contacts(struct sip_msg* msg, udomain_t* _d,
LM_DBG("ref count after sub is now %d\n",
subscription->ref_count);
ul.unlock_subscription(subscription);
+ ul.lock_udomain(_d, public_identity);
//finally we update the explicit IMPU record with the new data
if (ul.update_impurecord(_d, public_identity, 0, reg_state, -1 /*do not
change send sar on delete */, 0 /*this is explicit so barring must be 0*/, 0, s, ccf1,
ccf2, ecf1, ecf2, &impu_rec) != 0) {
LM_ERR("Unable to update explicit impurecord for
<%.*s>\n", public_identity->len, public_identity->s);
}
+
notify_subscribers(impu_rec);
+ ul.unlock_udomain(_d, public_identity);
break;
case AVP_IMS_SAR_USER_DEREGISTRATION:
/*TODO: if its not a star lets find all the contact records and remove
them*/