mirror of https://github.com/sipwise/kamailio.git
parent
898d25b0a6
commit
fa78bc4c6a
@ -0,0 +1,157 @@
|
|||||||
|
From ce1d16ce1c8009918c294307de53f35378868b52 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Juha Heinanen <jh@tutpro.com>
|
||||||
|
Date: Tue, 14 May 2013 11:05:00 +0300
|
||||||
|
Subject: [PATCH] modules/usrloc: reduce work if contact attributes are not in
|
||||||
|
use
|
||||||
|
|
||||||
|
---
|
||||||
|
modules/usrloc/ucontact.c | 108 +++++++++++++++++++++++++--------------------
|
||||||
|
1 file 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) {
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
||||||
@ -0,0 +1,259 @@
|
|||||||
|
From f67171cf3be1ade0e1c9dd013d560c87b3fd4359 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Seva <linuxmaniac@torreviejawireless.org>
|
||||||
|
Date: Thu, 10 Oct 2013 15:21:47 +0200
|
||||||
|
Subject: [PATCH] usrloc: db_update contact by instance + reg-id
|
||||||
|
|
||||||
|
---
|
||||||
|
modules/usrloc/ucontact.c | 203 ++++++++++++++++++++++++++++++++++++++++++++-
|
||||||
|
1 file changed, 201 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/modules/usrloc/ucontact.c b/modules/usrloc/ucontact.c
|
||||||
|
index 9cc2e06..323dc4b 100644
|
||||||
|
--- a/modules/usrloc/ucontact.c
|
||||||
|
+++ b/modules/usrloc/ucontact.c
|
||||||
|
@@ -679,18 +679,21 @@ int db_update_ucontact_addr(ucontact_t* _c)
|
||||||
|
vals1[n1].type = DB1_STR;
|
||||||
|
vals1[n1].nul = 0;
|
||||||
|
vals1[n1].val.str_val = *_c->aor;
|
||||||
|
+ LM_DBG("aor:%.*s\n", vals1[n1].val.str_val.len, vals1[n1].val.str_val.s);
|
||||||
|
n1++;
|
||||||
|
|
||||||
|
keys1[n1] = &contact_col;
|
||||||
|
vals1[n1].type = DB1_STR;
|
||||||
|
vals1[n1].nul = 0;
|
||||||
|
vals1[n1].val.str_val = _c->c;
|
||||||
|
+ LM_DBG("contact:%.*s\n", vals1[n1].val.str_val.len, vals1[n1].val.str_val.s);
|
||||||
|
n1++;
|
||||||
|
|
||||||
|
keys1[n1] = &callid_col;
|
||||||
|
vals1[n1].type = DB1_STR;
|
||||||
|
vals1[n1].nul = 0;
|
||||||
|
vals1[n1].val.str_val = _c->callid;
|
||||||
|
+ LM_DBG("callid:%.*s\n", vals1[n1].val.str_val.len, vals1[n1].val.str_val.s);
|
||||||
|
n1++;
|
||||||
|
|
||||||
|
vals2[0].type = DB1_DATETIME;
|
||||||
|
@@ -866,6 +869,7 @@ int db_update_ucontact_ruid(ucontact_t* _c)
|
||||||
|
vals1[n1].type = DB1_STR;
|
||||||
|
vals1[n1].nul = 0;
|
||||||
|
vals1[n1].val.str_val = _c->ruid;
|
||||||
|
+ LM_DBG("ruid:%.*s\n", vals1[n1].val.str_val.len, vals1[n1].val.str_val.s);
|
||||||
|
n1++;
|
||||||
|
|
||||||
|
n2 = 0;
|
||||||
|
@@ -1008,7 +1012,197 @@ int db_update_ucontact_ruid(ucontact_t* _c)
|
||||||
|
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 {
|
||||||
|
+ uldb_delete_attrs(_c->domain, &auser,
|
||||||
|
+ NULL, &_c->ruid);
|
||||||
|
+ uldb_insert_attrs(_c->domain, &auser,
|
||||||
|
+ NULL, &_c->ruid, _c->xavp);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/*!
|
||||||
|
+ * \brief Update contact in the database by instance reg_id
|
||||||
|
+ * \param _c updated contact
|
||||||
|
+ * \return 0 on success, -1 on failure
|
||||||
|
+ */
|
||||||
|
+int db_update_ucontact_instance(ucontact_t* _c)
|
||||||
|
+{
|
||||||
|
+ str auser;
|
||||||
|
+ str adomain;
|
||||||
|
+ db_key_t keys1[2];
|
||||||
|
+ db_val_t vals1[2];
|
||||||
|
+ int n1;
|
||||||
|
+
|
||||||
|
+ db_key_t keys2[13];
|
||||||
|
+ db_val_t vals2[13];
|
||||||
|
+ int n2;
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ if (_c->flags & FL_MEM) {
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if(_c->instance.len<=0) {
|
||||||
|
+ LM_ERR("updating record in database failed - empty instance\n");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ n1 = 0;
|
||||||
|
+ keys1[n1] = &instance_col;
|
||||||
|
+ vals1[n1].type = DB1_STR;
|
||||||
|
+ vals1[n1].nul = 0;
|
||||||
|
+ vals1[n1].val.str_val = _c->instance;
|
||||||
|
+ LM_DBG("instance:%.*s\n", vals1[n1].val.str_val.len, vals1[n1].val.str_val.s);
|
||||||
|
+ n1++;
|
||||||
|
+
|
||||||
|
+ keys1[n1] = ®_id_col;
|
||||||
|
+ vals1[n1].type = DB1_INT;
|
||||||
|
+ vals1[n1].nul = 0;
|
||||||
|
+ vals1[n1].val.int_val = (int)_c->reg_id;
|
||||||
|
+ LM_DBG("reg-id:%d\n", vals1[n1].val.int_val);
|
||||||
|
+ n1++;
|
||||||
|
+
|
||||||
|
+ n2 = 0;
|
||||||
|
+ keys2[n2] = &expires_col;
|
||||||
|
+ vals2[n2].type = DB1_DATETIME;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.time_val = _c->expires;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &q_col;
|
||||||
|
+ vals2[n2].type = DB1_DOUBLE;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.double_val = q2double(_c->q);
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &cseq_col;
|
||||||
|
+ vals2[n2].type = DB1_INT;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.int_val = _c->cseq;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &flags_col;
|
||||||
|
+ vals2[n2].type = DB1_INT;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.bitmap_val = _c->flags;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &cflags_col;
|
||||||
|
+ vals2[n2].type = DB1_INT;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.bitmap_val = _c->cflags;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &user_agent_col;
|
||||||
|
+ vals2[n2].type = DB1_STR;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.str_val = _c->user_agent;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &received_col;
|
||||||
|
+ vals2[n2].type = DB1_STR;
|
||||||
|
+ if (_c->received.s == 0) {
|
||||||
|
+ vals2[n2].nul = 1;
|
||||||
|
+ } else {
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.str_val = _c->received;
|
||||||
|
+ }
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &path_col;
|
||||||
|
+ vals2[n2].type = DB1_STR;
|
||||||
|
+ if (_c->path.s == 0) {
|
||||||
|
+ vals2[n2].nul = 1;
|
||||||
|
+ } else {
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.str_val = _c->path;
|
||||||
|
+ }
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &sock_col;
|
||||||
|
+ vals2[n2].type = DB1_STR;
|
||||||
|
+ if (_c->sock) {
|
||||||
|
+ vals2[n2].val.str_val = _c->sock->sock_str;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ } else {
|
||||||
|
+ vals2[n2].nul = 1;
|
||||||
|
+ }
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &methods_col;
|
||||||
|
+ vals2[n2].type = DB1_BITMAP;
|
||||||
|
+ if (_c->methods == 0xFFFFFFFF) {
|
||||||
|
+ vals2[n2].nul = 1;
|
||||||
|
+ } else {
|
||||||
|
+ vals2[n2].val.bitmap_val = _c->methods;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ }
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &last_mod_col;
|
||||||
|
+ vals2[n2].type = DB1_DATETIME;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.time_val = _c->last_modified;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &callid_col;
|
||||||
|
+ vals2[n2].type = DB1_STR;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.str_val = _c->callid;
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ keys2[n2] = &contact_col;
|
||||||
|
+ vals2[n2].type = DB1_STR;
|
||||||
|
+ vals2[n2].nul = 0;
|
||||||
|
+ vals2[n2].val.str_val.s = _c->c.s;
|
||||||
|
+ vals2[n2].val.str_val.len = _c->c.len;
|
||||||
|
+ LM_DBG("contact:%.*s\n", vals2[n2].val.str_val.len, vals2[n2].val.str_val.s);
|
||||||
|
+ n2++;
|
||||||
|
+
|
||||||
|
+ if (ul_dbf.use_table(ul_dbh, _c->domain) < 0) {
|
||||||
|
+ LM_ERR("sql use_table failed\n");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ul_dbf.update(ul_dbh, keys1, 0, vals1, keys2, vals2, n1, n2) < 0) {
|
||||||
|
+ LM_ERR("updating database failed\n");
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (ul_db_check_update==1 && ul_dbf.affected_rows) {
|
||||||
|
+ LM_DBG("update affected_rows 0\n");
|
||||||
|
+ /* supposed to be an UPDATE, but if affected rows is 0, then try
|
||||||
|
+ * to do an INSERT */
|
||||||
|
+ if(ul_dbf.affected_rows(ul_dbh)==0) {
|
||||||
|
+ LM_DBG("affected rows by UPDATE was 0, doing an INSERT\n");
|
||||||
|
+ if(db_insert_ucontact(_c)<0)
|
||||||
|
+ return -1;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* delete old db attrs and add the current list */
|
||||||
|
+ 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,
|
||||||
|
@@ -1032,7 +1226,12 @@ int db_update_ucontact_ruid(ucontact_t* _c)
|
||||||
|
int db_update_ucontact(ucontact_t* _c)
|
||||||
|
{
|
||||||
|
if(ul_db_ops_ruid==0)
|
||||||
|
- return db_update_ucontact_addr(_c);
|
||||||
|
+ if (_c->instance.len<=0) {
|
||||||
|
+ return db_update_ucontact_addr(_c);
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ return db_update_ucontact_instance(_c);
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
return db_update_ucontact_ruid(_c);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
||||||
@ -0,0 +1,26 @@
|
|||||||
|
From 66185905850cd2ac9ab933776184da0f0882e5ac Mon Sep 17 00:00:00 2001
|
||||||
|
From: Victor Seva <linuxmaniac@torreviejawireless.org>
|
||||||
|
Date: Fri, 1 Nov 2013 15:33:08 +0100
|
||||||
|
Subject: [PATCH] registrar: clean static values at pack_ci
|
||||||
|
|
||||||
|
---
|
||||||
|
modules/registrar/save.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/modules/registrar/save.c b/modules/registrar/save.c
|
||||||
|
index 5cc4627..bc816cd 100644
|
||||||
|
--- a/modules/registrar/save.c
|
||||||
|
+++ b/modules/registrar/save.c
|
||||||
|
@@ -328,6 +328,9 @@ static inline ucontact_info_t* pack_ci( struct sip_msg* _m, contact_t* _c, unsig
|
||||||
|
received_found = 0; /* not found yet */
|
||||||
|
m = _m; /* remember the message */
|
||||||
|
}
|
||||||
|
+ else {
|
||||||
|
+ memset( &ci.instance, 0, sizeof(str));
|
||||||
|
+ }
|
||||||
|
|
||||||
|
if(_c!=0) {
|
||||||
|
/* hook uri address - should be more than 'sip:' chars */
|
||||||
|
--
|
||||||
|
1.7.10.4
|
||||||
|
|
||||||
Loading…
Reference in new issue