Hello, I have been researching the work needed to implement forking of outbound flows based on the discussions by Peter, Olle and others on this list. I suggest the following:
A new route type "branch_failure_route" which can be called on a failure response for every branch created. Change t_next_contact_flows() so that it can only be called from the branch_failure route. Modify t_next_contact_flows() so that it will search the xavp of alternative flows and select the next instance that matches the failed instance. This will create another branch. t_relay() can be used in the branch_failure route to fork to the new branch. There will be a few more functions that can be called in the branch_failure route, including unregister_contact().
If no new flows are available, the response is passed on to be handled by the failure route handler. If a new flow is available, and a branch created, the failure response must not be passed on. A response from the new branch, plus all other branches must be received before the failure route is called with the best response.
If the failure route is called, t_next_contacts() can be called to implement serial forking based on q-value, as before.
Any comments before I start work?
Hugh