Browse Source

core: msg translator - skip last ; from xavp serialized in via params

Daniel-Constantin Mierla 7 years ago
parent
commit
ae22ba7eb4
1 changed files with 5 additions and 2 deletions
  1. 5 2
      src/core/msg_translator.c

+ 5 - 2
src/core/msg_translator.c

@@ -2945,7 +2945,7 @@ char* create_via_hf( unsigned int *len,
 		xparams.len = xavp_serialize_fields(&_ksr_xavp_via_params,
 							xparams.s, pv_get_buffer_size());
 		if(xparams.len>0) {
-			via = (char*)pkg_malloc(extra_params.len+xparams.len+1);
+			via = (char*)pkg_malloc(extra_params.len+xparams.len+2);
 			if(via==0) {
 				LM_ERR("building xavps params failed\n");
 				if (extra_params.s) pkg_free(extra_params.s);
@@ -2955,7 +2955,10 @@ char* create_via_hf( unsigned int *len,
 				memcpy(via, extra_params.s, extra_params.len);
 				pkg_free(extra_params.s);
 			}
-			memcpy(via + extra_params.len, xparams.s, xparams.len);
+			/* add ';' between via parameters */
+			via[extra_params.len] = ';';
+			/* skip last ';' from xavp serialized output */
+			memcpy(via + extra_params.len + 1, xparams.s, xparams.len - 1);
 			extra_params.s = via;
 			extra_params.len += xparams.len;
 			extra_params.s[extra_params.len] = '\0';