[sr-dev] git:5.1:5cba2384: topos: sotre and load local side contacts in branch record

Daniel-Constantin Mierla miconda at gmail.com
Mon Jan 15 16:03:30 CET 2018


Module: kamailio
Branch: 5.1
Commit: 5cba238409e4e4b6381d291024eea1c3ed8cb5b4
URL: https://github.com/kamailio/kamailio/commit/5cba238409e4e4b6381d291024eea1c3ed8cb5b4

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Daniel-Constantin Mierla <miconda at gmail.com>
Date: 2018-01-15T16:02:11+01:00

topos: sotre and load local side contacts in branch record

- recover them on retransmissions, otherwise no contact header is added
on initial request routing
- reported by GH #1356

(cherry picked from commit dd1872fb5f876fc004c320a1daba55a5ce6f3dc2)

---

Modified: src/modules/topos/tps_msg.c
Modified: src/modules/topos/tps_storage.c

---

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

---

diff --git a/src/modules/topos/tps_msg.c b/src/modules/topos/tps_msg.c
index 26e25b42c0..632d8119be 100644
--- a/src/modules/topos/tps_msg.c
+++ b/src/modules/topos/tps_msg.c
@@ -931,7 +931,7 @@ int tps_request_sent(sip_msg_t *msg, int dialog, int local)
 	str xuuid;
 	uint32_t direction = TPS_DIR_DOWNSTREAM;
 
-	LM_DBG("handling outgoing request\n");
+	LM_DBG("handling outgoing request (%d, %d)\n", dialog, local);
 
 	memset(&mtsd, 0, sizeof(tps_data_t));
 	memset(&btsd, 0, sizeof(tps_data_t));
diff --git a/src/modules/topos/tps_storage.c b/src/modules/topos/tps_storage.c
index 5662b80654..6502f491f3 100644
--- a/src/modules/topos/tps_storage.c
+++ b/src/modules/topos/tps_storage.c
@@ -728,6 +728,26 @@ int tps_db_insert_branch(tps_data_t *td)
 	db_vals[nr_keys].val.str_val = TPS_STRZ(td->s_cseq);
 	nr_keys++;
 
+	db_keys[nr_keys] = &tt_col_a_contact;
+	db_vals[nr_keys].type = DB1_STR;
+	db_vals[nr_keys].val.str_val = TPS_STRZ(td->a_contact);
+	nr_keys++;
+
+	db_keys[nr_keys] = &tt_col_b_contact;
+	db_vals[nr_keys].type = DB1_STR;
+	db_vals[nr_keys].val.str_val = TPS_STRZ(td->b_contact);
+	nr_keys++;
+
+	db_keys[nr_keys] = &tt_col_as_contact;
+	db_vals[nr_keys].type = DB1_STR;
+	db_vals[nr_keys].val.str_val = TPS_STRZ(td->as_contact);
+	nr_keys++;
+
+	db_keys[nr_keys] = &tt_col_bs_contact;
+	db_vals[nr_keys].type = DB1_STR;
+	db_vals[nr_keys].val.str_val = TPS_STRZ(td->bs_contact);
+	nr_keys++;
+
 	if (_tpsdbf.use_table(_tps_db_handle, &tt_table_name) < 0) {
 		LM_ERR("failed to perform use table\n");
 		return -1;
@@ -898,6 +918,8 @@ int tps_db_load_branch(sip_msg_t *msg, tps_data_t *md, tps_data_t *sd,
 	db_cols[nr_cols++] = &tt_col_s_cseq;
 	db_cols[nr_cols++] = &tt_col_a_contact;
 	db_cols[nr_cols++] = &tt_col_b_contact;
+	db_cols[nr_cols++] = &tt_col_as_contact;
+	db_cols[nr_cols++] = &tt_col_bs_contact;
 
 	if (_tpsdbf.use_table(_tps_db_handle, &tt_table_name) < 0) {
 		LM_ERR("failed to perform use table\n");
@@ -942,6 +964,8 @@ int tps_db_load_branch(sip_msg_t *msg, tps_data_t *md, tps_data_t *sd,
 	TPS_DATA_APPEND_DB(sd, db_res, n, &sd->s_cseq); n++;
 	TPS_DATA_APPEND_DB(sd, db_res, n, &sd->a_contact); n++;
 	TPS_DATA_APPEND_DB(sd, db_res, n, &sd->b_contact); n++;
+	TPS_DATA_APPEND_DB(sd, db_res, n, &sd->as_contact); n++;
+	TPS_DATA_APPEND_DB(sd, db_res, n, &sd->bs_contact); n++;
 
 done:
 	if ((db_res!=NULL) && _tpsdbf.free_result(_tps_db_handle, db_res)<0)
@@ -1251,7 +1275,9 @@ int tps_db_update_dialog(sip_msg_t *msg, tps_data_t *md, tps_data_t *sd,
 		db_vals[nr_keys].val.str_val = TPS_STRZ(sd->a_uuid);
 	} else {
 		if(sd->b_uuid.len<=0) {
-			LM_ERR("no valid dlg uuid\n");
+			LM_ERR("no valid dlg uuid (%d:%.*s - %d:%.*s)\n",
+					sd->a_uuid.len, sd->a_uuid.len, ZSW(sd->a_uuid.s),
+					sd->b_uuid.len, sd->b_uuid.len, ZSW(sd->b_uuid.s));
 			return -1;
 		}
 		db_vals[nr_keys].val.str_val = TPS_STRZ(sd->b_uuid);




More information about the sr-dev mailing list