Hugh Waite writes:
do you see any problems in adding EVENT_ROUTE flag to t_branch_timeout and t_branch_replied functions or would that require changing the implementation of these two functions?
I don't see a problem with these. If EVENT_ROUTE is added to the functions in tm.c than these functions will return the presence of the replied/timeout flags.
hugh,
thanks for the explanation. i now have
{"t_branch_timeout", t_branch_timeout, 0, 0, FAILURE_ROUTE|EVENT_ROUTE}, {"t_branch_replied", t_branch_replied, 0, 0, FAILURE_ROUTE|EVENT_ROUTE},
and my config that uses those two in tm:branch-failure event route, is now accepted without errors.
regarding implementation of the functions, i added check that the function is called from proper route, e.g.,
int t_branch_timeout(struct sip_msg* msg, char* foo, char* bar) { switch(get_route_type()) { case FAILURE_ROUTE: case BRANCH_FAILURE_ROUTE: return (msg->msg_flags & FL_TIMEOUT)?1:-1; default: LOG(L_ERR, "ERROR:t_check_status: unsupported route type %d\n", get_route_type()); } return -1; }
however, i'm still uneasy about the implementation. instead of msg->msg_flags, should it test in BRANCH_FAILURE_ROUTE case t->uac[get_t_branch()].branch_flags instead?
perhaps daniel has a comment too?
-- juha