Module: kamailio Branch: master Commit: 97532ca18f595d89edf9b0b6e6688847aa38dd44 URL: https://github.com/kamailio/kamailio/commit/97532ca18f595d89edf9b0b6e6688847...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2018-01-14T06:04:22+01:00
topos: set uuid fields before checking contact/rr fields
---
Modified: src/modules/topos/tps_storage.c
---
Diff: https://github.com/kamailio/kamailio/commit/97532ca18f595d89edf9b0b6e6688847... Patch: https://github.com/kamailio/kamailio/commit/97532ca18f595d89edf9b0b6e6688847...
---
diff --git a/src/modules/topos/tps_storage.c b/src/modules/topos/tps_storage.c index 27231bec38..9d56cb945e 100644 --- a/src/modules/topos/tps_storage.c +++ b/src/modules/topos/tps_storage.c @@ -214,19 +214,10 @@ int tps_storage_fill_contact(sip_msg_t *msg, tps_data_t *td, str *uuid, int dir) } else { 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) { LM_ERR("insufficient data buffer\n"); 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) { td->b_uuid.s = td->cp; *td->cp = 'b'; @@ -234,8 +225,6 @@ int tps_storage_fill_contact(sip_msg_t *msg, tps_data_t *td, str *uuid, int dir) memcpy(td->cp, uuid->s, uuid->len); td->cp += uuid->len; td->b_uuid.len = td->cp - td->b_uuid.s; - - td->bs_contact.s = td->cp; } else { td->a_uuid.s = td->cp; *td->cp = 'a'; @@ -243,7 +232,20 @@ int tps_storage_fill_contact(sip_msg_t *msg, tps_data_t *td, str *uuid, int dir) memcpy(td->cp, uuid->s, uuid->len); td->cp += uuid->len; 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->cp = '<';