Pre-Submission Checklist

Type Of Change

Checklist:

Description

loose_route() in rr checks request src ip/port against ip/port in flow tokens to detect direction and decide whether to apply flow tokens routing:

static inline int process_outbound(struct sip_msg *_m, str flow_token)
{
...
	} else if(!ip_addr_cmp(&rcv->src_ip, &_m->rcv.src_ip)
			  || rcv->src_port != _m->rcv.src_port) {
		LM_DBG("\"incoming\" request found. Using flow-token for "
			   "routing\n");
...

there are cases when remote UA changes ip/port for in-dialog messages and this approach does not work.
incoming message has route set with flow tokens and src ip/port different from ones in the flow tokens.
as a result, loose_route() routes message back to the client using flow tokens instead of using the normal part of the Route headers as expected.

new force_lr_no_outbound_flag allows to control flow tokens usage in the loose_route() when we know direction based on the some high level config logic (for example: by the result of ds_is_from_list() call)


You can view, comment on, or merge this pull request online at:

  https://github.com/kamailio/kamailio/pull/4280

Commit Summary

File Changes

(3 files)

Patch Links:


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <kamailio/kamailio/pull/4280@github.com>