Chris Heiser wrote:
So I've been all over the place looking at various examples, threads, issues, and solutions to all sorts of forking scenarios. What I haven't been able to find is a solution to my odd corner case. Let me explain the forking scenario:
Call comes in for user A:
- Use avp_db_load to find that user A wants to parallel fork to 123 and 456
- Call to 123 fails because there's no registration
- Call to 456 times out
== At this point we serial fork to the next step which might hbe - Just call my cell
What's unclear to me is how to actually achieve this logic. I mean, getting the initial parallel fork is quite simple using avp_pushto.
What's unclear is how to setup the failure route to know that you can ignore a failure in any of the forks until the last fork as failed, and then it's time to move on.
Something like, "are there other branches pending?" would be a nice check to determine if the failure route should just drop or if it should append a branch (or two) for the next serial fork.
Comments? Ideas? Thoughts? Am I totally insane? Should I be using a specific module for this?
What about CPL? I don't play with it in OpenSER but scenario like this can be described on CPL.