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/82635674517b6c96678289ca4e807ae7...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Henning Westerholt hw@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/82635674517b6c96678289ca4e807ae7... Patch: https://github.com/kamailio/kamailio/commit/82635674517b6c96678289ca4e807ae7...
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@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev