[sr-dev] git:5.2:82635674: core: skip to-tag when computing via branch for invite, ack and cancel

Henning Westerholt hw at skalatan.de
Thu Aug 1 09:47:36 CEST 2019


Hello,

as this is a core part of the transaction handling, it was tested in 
three different scenarios in three call flows (200 OK/ACK/BYE, canceled, 
rejected) each:

1) know non-working setup

- stateless 5.2.3 balancer, stateful 5.2.3 proxy: result fail

- stateful 5.2.3 balancer, stateful 5.2.3 proxy: result ok

2) change on balancer

- stateless 5.3-dev balancer, stateful 5.2.3 proxy: result ok

- stateful 5.3-dev balancer, stateful 5.2.3 proxy: result ok

3) interop with proxy

- stateful 5.2.3 balancer, stateful 5.3-dev proxy: result ok

- stateful 5.3-dev balancer, stateful 5.3-dev proxy: result ok

5.1 can't be cherry-picked, I will backport it manually.

Cheers,

Henning

Am 01.08.19 um 09:42 schrieb Henning Westerholt:
> Module: kamailio
> Branch: 5.2
> Commit: 82635674517b6c96678289ca4e807ae73020eefc
> URL: https://github.com/kamailio/kamailio/commit/82635674517b6c96678289ca4e807ae73020eefc
>
> Author: Daniel-Constantin Mierla <miconda at gmail.com>
> Committer: Henning Westerholt <hw at skalatan.de>
> Date: 2019-08-01T09:39:36+02:00
>
> core: skip to-tag when computing via branch for invite, ack and cancel
>
> - proper functionality for stateless proxy in case of negative ACK (in
> this case the INVITE has no To-tag, but ACK has it and resulted in
> different via branch, making downstream proxy to not match transaction)
>
> (cherry picked from commit b4e11cb25d848651406e0ad355d54f10db971761)
>
> ---
>
> Modified: src/core/char_msg_val.h
>
> ---
>
> Diff:  https://github.com/kamailio/kamailio/commit/82635674517b6c96678289ca4e807ae73020eefc.diff
> Patch: https://github.com/kamailio/kamailio/commit/82635674517b6c96678289ca4e807ae73020eefc.patch
>
> ---
>
> diff --git a/src/core/char_msg_val.h b/src/core/char_msg_val.h
> index 79461cd836..436f58b401 100644
> --- a/src/core/char_msg_val.h
> +++ b/src/core/char_msg_val.h
> @@ -38,6 +38,7 @@
>   inline static int char_msg_val( struct sip_msg *msg, char *cv )
>   {
>   	str src[8];
> +	str sempty = str_init("");
>   
>   	if (unlikely(!check_transaction_quadruple(msg))) {
>   		LM_ERR("can't calculate char_value due to a parsing error\n");
> @@ -55,7 +56,12 @@ inline static int char_msg_val( struct sip_msg *msg, char *cv )
>   	}
>   	/* use only the from & to tags */
>   	src[0]=get_from(msg)->tag_value;
> -	src[1]=get_to(msg)->tag_value;
> +	if(msg->first_line.u.request.method_value
> +			& (METHOD_INVITE|METHOD_ACK|METHOD_CANCEL)) {
> +		src[1]=sempty;
> +	} else {
> +		src[1]=get_to(msg)->tag_value;
> +	}
>   	src[2]= msg->callid->body;
>   	src[3]= msg->first_line.u.request.uri;
>   	src[4]= get_cseq( msg )->number;
>
>
> _______________________________________________
> Kamailio (SER) - Development Mailing List
> sr-dev at lists.kamailio.org
> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

-- 
Henning Westerholt - https://skalatan.de/blog/
Kamailio services - https://skalatan.de/services



More information about the sr-dev mailing list