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

Author: Victor Seva <linuxman...@torreviejawireless.org>
Committer: Victor Seva <linuxman...@torreviejawireless.org>
Date: 2019-10-07T22:56:21+02:00

usrloc: keep a private copy of urecord before running ul_callbacks

fixes #2089

---

Modified: src/modules/usrloc/udomain.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/f3cf0a2f4e60a3a7185baa106869dab85cd8cd0b.diff
Patch: 
https://github.com/kamailio/kamailio/commit/f3cf0a2f4e60a3a7185baa106869dab85cd8cd0b.patch

---

diff --git a/src/modules/usrloc/udomain.c b/src/modules/usrloc/udomain.c
index d451057bdd..80980c4cdf 100644
--- a/src/modules/usrloc/udomain.c
+++ b/src/modules/usrloc/udomain.c
@@ -907,7 +907,7 @@ int udomain_contact_expired_cb(db1_con_t* _c, udomain_t* _d)
        str user, contact;
        int i;
        int n;
-       urecord_t* r;
+       urecord_t r;
        ucontact_t* c;
 #define RUIDBUF_SIZE 128
        char ruidbuf[RUIDBUF_SIZE];
@@ -1013,12 +1013,16 @@ int udomain_contact_expired_cb(db1_con_t* _c, 
udomain_t* _d)
                        }
 
                        lock_udomain(_d, &user);
-                       get_static_urecord(_d, &user, &r);
+                       /* don't use the same static value from 
get_static_urecord() */
+                       memset( &r, 0, sizeof(struct urecord) );
+                       r.aor = user;
+                       r.aorhash = ul_get_aorhash(&user);
+                       r.domain = _d->name;
 
-                       if ( (c=mem_insert_ucontact(r, &contact, ci)) == 0) {
+                       if ( (c=mem_insert_ucontact(&r, &contact, ci)) == 0) {
                                LM_ERR("inserting temporary contact failed for 
%.*s\n",
                                                user.len, user.s);
-                               release_urecord(r);
+                               release_urecord(&r);
                                unlock_udomain(_d, &user);
                                goto error;
                        }
@@ -1041,7 +1045,7 @@ int udomain_contact_expired_cb(db1_con_t* _c, udomain_t* 
_d)
                                                        user.len, user.s);
                                }
                        }
-                       release_urecord(r);
+                       release_urecord(&r);
                        unlock_udomain(_d, &user);
                        if(ruid.len > 0 && ul_xavp_contact_name.s != NULL) {
                                /* delete attributes by ruid */


_______________________________________________
Kamailio (SER) - Development Mailing List
sr-dev@lists.kamailio.org
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to