[sr-dev] new tmx function t_reuse_branch()

Daniel-Constantin Mierla miconda at gmail.com
Sat Apr 19 20:24:48 CEST 2014


Hello,

the function can be committed.

For the variable, I would go for a new class, $T_branch(attr). You can 
implement the part for flags as $T_branch(flags). Other attributes can 
be implemented later under the same class.

Cheers,
Daniel

On 19/04/14 14:57, Juha Heinanen wrote:
> as per daniel's suggestion, i wrote a new tmx function t_reuse_branch(),
> which can currently be called from branch-failure route:
>
> /**
>   * Creates new "main" branch by making copy of branch-failure branch.
>   * Currently the following branch attributes are included:
>   * request-uri, ruid, path, instance, and branch flags.
>   */
> static int w_t_reuse_branch(struct sip_msg* msg, char *p1, char *p2)
> {
> 	struct cell *t;
> 	int branch;
>
> 	if (msg == NULL) return -1;
>
> 	/* first get the transaction */
> 	if (_tmx_tmb.t_check(msg, 0) == -1) return -1;
> 	if ((t = _tmx_tmb.t_gett()) == 0) {
> 	    LM_ERR("no transaction\n");
> 	    return -1;
> 	}
> 	switch (get_route_type()) {
> 	case BRANCH_FAILURE_ROUTE:
> 	    /* use the reason of the winning reply */
> 	    if ((branch = _tmx_tmb.t_get_picked_branch()) < 0) {
> 		LM_CRIT("no picked branch (%d) for a final response"
> 			" in MODE_ONFAILURE\n", branch);
> 		return -1;
> 	    }
> 	    rewrite_uri(msg, &(t->uac[branch].uri));
> 	    set_ruid(msg, &(t->uac[branch].ruid));
> 	    if (t->uac[branch].path.len) {
> 		set_path_vector(msg, &(t->uac[branch].path));
> 	    } else {
>          		reset_path_vector(msg);
> 	    }
> 	    setbflagsval(0, t->uac[branch].flags);
> 	    set_instance(msg, &(t->uac[branch].instance));
> 	    return 1;
> 	default:
> 	    LM_ERR("unsupported route_type %d\n", get_route_type());
> 	    return -1;
> 	}
> }
>
> the new "main" branch does not include destination uri and socket,
> because i didn't find them in struct ua_client.  unless someone adds
> them to struct ua_clients, they thus need to be set separately from
> htable after calling t_reuse_branch().
>
> is it ok that i commit the above function to tmx module?
>
> in addition, i would like to add $T_reply_bf (branch flags) pv, since i
> need to test some of the branch flags in other parts of branch-failure
> route.
>
> -- juha
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda




More information about the sr-dev mailing list