Module: sip-router
Branch: master
Commit: 7b7754a41711aa09d63d219c3930dc5090eaf326
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=7b7754a41711aa09d63d219c3930dc5090eaf326

Author: Carsten Bock <[email protected]>
Committer: Carsten Bock <[email protected]>
Date:   Tue Aug  5 17:21:06 2014 +0200

ims_usrloc_scscf: In case the contact_id after insert_update is 0, do the old 
query again (last_inserted_id is only set, if there was really an UPDATE or 
INSERT, not if nothing was changed)

---

 modules/ims_usrloc_scscf/usrloc_db.c |   23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/modules/ims_usrloc_scscf/usrloc_db.c 
b/modules/ims_usrloc_scscf/usrloc_db.c
index 49b551b..c25e89c 100644
--- a/modules/ims_usrloc_scscf/usrloc_db.c
+++ b/modules/ims_usrloc_scscf/usrloc_db.c
@@ -252,6 +252,29 @@ int db_insert_ucontact(impurecord_t* _r, ucontact_t* _c) {
                return -1;
        }
        contact_id = ul_dbf.last_inserted_id(ul_dbh);
+       if (contact_id <= 0) {
+               /* search for the ID if the contact just entered */
+               if (ul_dbf.query(ul_dbh, key, 0, val, key_return, 1, 1, NULL, 
&_rs) != 0) {
+                       LM_ERR("Unable to find contact [%.*s] in DB to complete 
IMPU-contact mapping\n", _c->c.len, _c->c.s);
+                       ul_dbf.free_result(ul_dbh, _rs);
+                       return -1;
+               }
+
+               if (RES_ROW_N(_rs) == 0) {
+                       LM_DBG("Contact %.*s not found in DB\n",_c->c.len, 
_c->c.s);
+                       ul_dbf.free_result(ul_dbh, _rs);
+                       return -1;
+               }
+
+               if (RES_ROW_N(_rs) > 1) {
+                       LM_WARN("more than one contact found in DB for contact 
[%.*s] - this should not happen... proceeding with first entry\n",
+                               _c->c.len, _c->c.s);
+               }
+
+               ret_val = ROW_VALUES(RES_ROWS(_rs));
+               contact_id = ret_val[0].val.int_val;
+               ul_dbf.free_result(ul_dbh, _rs);
+       }
        LM_DBG("contact ID is %d\n", contact_id);
 
        /* search for ID of the associated IMPU */


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to