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

Author: Juha Heinanen <[email protected]>
Committer: Juha Heinanen <[email protected]>
Date:   Tue May 14 11:05:00 2013 +0300

modules/usrloc: reduce work if contact attributes are not in use

---

 modules/usrloc/ucontact.c |  108 +++++++++++++++++++++++++--------------------
 1 files changed, 60 insertions(+), 48 deletions(-)

diff --git a/modules/usrloc/ucontact.c b/modules/usrloc/ucontact.c
index 35dfa0d..593bb1e 100644
--- a/modules/usrloc/ucontact.c
+++ b/modules/usrloc/ucontact.c
@@ -616,8 +616,11 @@ int db_insert_ucontact(ucontact_t* _c)
                return -1;
        }
 
-       uldb_insert_attrs(_c->domain, &vals[0].val.str_val, 
&vals[nr_cols-1].val.str_val,
-               &_c->ruid, _c->xavp);
+       if (ul_xavp_contact_name.s) {
+               uldb_insert_attrs(_c->domain, &vals[0].val.str_val,
+                                 &vals[nr_cols-1].val.str_val,
+                                 &_c->ruid, _c->xavp);
+       }
 
        return 0;
 }
@@ -801,16 +804,19 @@ int db_update_ucontact_addr(ucontact_t* _c)
                }
        }
        /* delete old db attrs and add the current list */
-       if (use_domain) {
-               uldb_delete_attrs(_c->domain, &vals1[0].val.str_val,
-                               &vals1[n1-1].val.str_val, &_c->ruid);
-               uldb_insert_attrs(_c->domain, &vals1[0].val.str_val,
-                               &vals1[n1-1].val.str_val, &_c->ruid, _c->xavp);
-       } else {
-               uldb_delete_attrs(_c->domain, &vals1[0].val.str_val,
-                               NULL, &_c->ruid);
-               uldb_insert_attrs(_c->domain, &vals1[0].val.str_val,
-                               NULL, &_c->ruid, _c->xavp);
+       if (ul_xavp_contact_name.s) {
+               if (use_domain) {
+                       uldb_delete_attrs(_c->domain, &vals1[0].val.str_val,
+                                         &vals1[n1-1].val.str_val, &_c->ruid);
+                       uldb_insert_attrs(_c->domain, &vals1[0].val.str_val,
+                                         &vals1[n1-1].val.str_val,
+                                         &_c->ruid, _c->xavp);
+               } else {
+                       uldb_delete_attrs(_c->domain, &vals1[0].val.str_val,
+                                         NULL, &_c->ruid);
+                       uldb_insert_attrs(_c->domain, &vals1[0].val.str_val,
+                                         NULL, &_c->ruid, _c->xavp);
+               }
        }
 
        return 0;
@@ -977,27 +983,30 @@ int db_update_ucontact_ruid(ucontact_t* _c)
        }
 
        /* delete old db attrs and add the current list */
-       auser = *_c->aor;
-       if (use_domain) {
-               adomain.s = memchr(_c->aor->s, '@', _c->aor->len);
-               if (adomain.s==0) {
-                       auser.len = 0;
-                       adomain = *_c->aor;
+       if (ul_xavp_contact_name.s) {
+               auser = *_c->aor;
+               if (use_domain) {
+                       adomain.s = memchr(_c->aor->s, '@', _c->aor->len);
+                       if (adomain.s==0) {
+                               auser.len = 0;
+                               adomain = *_c->aor;
+                       } else {
+                               auser.len = adomain.s - _c->aor->s;
+                               adomain.s++;
+                               adomain.len = _c->aor->s +
+                                       _c->aor->len - adomain.s;
+                       }
+                       
+                       uldb_delete_attrs(_c->domain, &auser,
+                                         &adomain, &_c->ruid);
+                       uldb_insert_attrs(_c->domain, &auser,
+                                         &adomain, &_c->ruid, _c->xavp);
                } else {
-                       auser.len = adomain.s - _c->aor->s;
-                       adomain.s++;
-                       adomain.len = _c->aor->s + _c->aor->len - adomain.s;
+                       uldb_delete_attrs(_c->domain, &auser,
+                                         NULL, &_c->ruid);
+                       uldb_insert_attrs(_c->domain, &auser,
+                                         NULL, &_c->ruid, _c->xavp);
                }
-
-               uldb_delete_attrs(_c->domain, &auser,
-                               &adomain, &_c->ruid);
-               uldb_insert_attrs(_c->domain, &auser,
-                               &adomain, &_c->ruid, _c->xavp);
-       } else {
-               uldb_delete_attrs(_c->domain, &auser,
-                               NULL, &_c->ruid);
-               uldb_insert_attrs(_c->domain, &auser,
-                               NULL, &_c->ruid, _c->xavp);
        }
 
        return 0;
@@ -1052,25 +1061,28 @@ int db_delete_ucontact_addr(ucontact_t* _c)
        vals[n].val.str_val = _c->callid;
        n++;
 
-       if (use_domain) {
-               keys[n] = &domain_col;
-               vals[n].type = DB1_STR;
-               vals[n].nul = 0;
-               dom = memchr(_c->aor->s, '@', _c->aor->len);
-               if (dom==0) {
-                       vals[0].val.str_val.len = 0;
-                       vals[n].val.str_val = *_c->aor;
+       if (ul_xavp_contact_name.s) {
+               if (use_domain) {
+                       keys[n] = &domain_col;
+                       vals[n].type = DB1_STR;
+                       vals[n].nul = 0;
+                       dom = memchr(_c->aor->s, '@', _c->aor->len);
+                       if (dom==0) {
+                               vals[0].val.str_val.len = 0;
+                               vals[n].val.str_val = *_c->aor;
+                       } else {
+                               vals[0].val.str_val.len = dom - _c->aor->s;
+                               vals[n].val.str_val.s = dom + 1;
+                               vals[n].val.str_val.len = _c->aor->s +
+                                       _c->aor->len - dom - 1;
+                       }
+                       uldb_delete_attrs(_c->domain, &vals[0].val.str_val,
+                                         &vals[n].val.str_val, &_c->ruid);
+                       n++;
                } else {
-                       vals[0].val.str_val.len = dom - _c->aor->s;
-                       vals[n].val.str_val.s = dom + 1;
-                       vals[n].val.str_val.len = _c->aor->s + _c->aor->len - 
dom - 1;
+                       uldb_delete_attrs(_c->domain, &vals[0].val.str_val,
+                                         NULL, &_c->ruid);
                }
-               uldb_delete_attrs(_c->domain, &vals[0].val.str_val,
-                               &vals[n].val.str_val, &_c->ruid);
-               n++;
-       } else {
-               uldb_delete_attrs(_c->domain, &vals[0].val.str_val,
-                               NULL, &_c->ruid);
        }
 
        if (ul_dbf.use_table(ul_dbh, _c->domain) < 0) {


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

Reply via email to