Browse Source

topos: revert "topos: set uuid fields before checking contact/rr fields"

This reverts commit 97532ca18f595d89edf9b0b6e6688847aa38dd44.
Daniel-Constantin Mierla 7 years ago
parent
commit
be6a419a5b
1 changed files with 11 additions and 13 deletions
  1. 11 13
      src/modules/topos/tps_storage.c

+ 11 - 13
src/modules/topos/tps_storage.c

@@ -214,10 +214,19 @@ int tps_storage_fill_contact(sip_msg_t *msg, tps_data_t *td, str *uuid, int dir)
 	} else {
 	} else {
 		sv = td->as_contact;
 		sv = td->as_contact;
 	}
 	}
+	if(sv.len<=0) {
+		/* no contact - skip */
+		return 0;
+	}
+
 	if(td->cp + 8 + (2*uuid->len) + sv.len >= td->cbuf + TPS_DATA_SIZE) {
 	if(td->cp + 8 + (2*uuid->len) + sv.len >= td->cbuf + TPS_DATA_SIZE) {
 		LM_ERR("insufficient data buffer\n");
 		LM_ERR("insufficient data buffer\n");
 		return -1;
 		return -1;
 	}
 	}
+	if (parse_uri(sv.s, sv.len, &puri) < 0) {
+		LM_ERR("failed to parse the uri\n");
+		return -1;
+	}
 	if(dir==TPS_DIR_DOWNSTREAM) {
 	if(dir==TPS_DIR_DOWNSTREAM) {
 		td->b_uuid.s = td->cp;
 		td->b_uuid.s = td->cp;
 		*td->cp = 'b';
 		*td->cp = 'b';
@@ -225,6 +234,8 @@ int tps_storage_fill_contact(sip_msg_t *msg, tps_data_t *td, str *uuid, int dir)
 		memcpy(td->cp, uuid->s, uuid->len);
 		memcpy(td->cp, uuid->s, uuid->len);
 		td->cp += uuid->len;
 		td->cp += uuid->len;
 		td->b_uuid.len = td->cp - td->b_uuid.s;
 		td->b_uuid.len = td->cp - td->b_uuid.s;
+
+		td->bs_contact.s = td->cp;
 	} else {
 	} else {
 		td->a_uuid.s = td->cp;
 		td->a_uuid.s = td->cp;
 		*td->cp = 'a';
 		*td->cp = 'a';
@@ -232,20 +243,7 @@ int tps_storage_fill_contact(sip_msg_t *msg, tps_data_t *td, str *uuid, int dir)
 		memcpy(td->cp, uuid->s, uuid->len);
 		memcpy(td->cp, uuid->s, uuid->len);
 		td->cp += uuid->len;
 		td->cp += uuid->len;
 		td->a_uuid.len = td->cp - td->a_uuid.s;
 		td->a_uuid.len = td->cp - td->a_uuid.s;
-	}
 
 
-	if(sv.len<=0) {
-		/* no contact - skip */
-		return 0;
-	}
-
-	if (parse_uri(sv.s, sv.len, &puri) < 0) {
-		LM_ERR("failed to parse the uri\n");
-		return -1;
-	}
-	if(dir==TPS_DIR_DOWNSTREAM) {
-		td->bs_contact.s = td->cp;
-	} else {
 		td->as_contact.s = td->cp;
 		td->as_contact.s = td->cp;
 	}
 	}
 	*td->cp = '<';
 	*td->cp = '<';