[sr-dev] git:master:82c42dd9: modules/ims_registrar_scscf: protection around sending notifications - prevent races

jaybeepee jason.penton at gmail.com
Thu Mar 17 08:54:56 CET 2016


Module: kamailio
Branch: master
Commit: 82c42dd91c5f715a17fca767ade700afde29c7a5
URL: https://github.com/kamailio/kamailio/commit/82c42dd91c5f715a17fca767ade700afde29c7a5

Author: jaybeepee <jason.penton at gmail.com>
Committer: jaybeepee <jason.penton at 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/82c42dd91c5f715a17fca767ade700afde29c7a5.diff
Patch: https://github.com/kamailio/kamailio/commit/82c42dd91c5f715a17fca767ade700afde29c7a5.patch

---

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*/




More information about the sr-dev mailing list