After read the new proposal, i liked it and seems almost ok. Indeed i have 3 comments:
1) in the *dialog_in *table, is stated that /sflags/ is a row/field in doubt. I'm also in doubt, since, from my POV, all necessary flags for caller communication is already known by other module parms/flags. Could somebody elaborate a little the necessity of this row/field?
2) the relations between /dialog_in /and /dialog_out/ are 1:n or am i wrong? So, why, in the *dialog_out *table, is it necessary to keep the /caller_route_set/ (even optionally)??? Aren't all this info kept on the /dialog_in/ structure, since is equal to all /dialog_out/??? As 1 INVITE could result in many /dailog_out/ (legs), and caller info is shared with all generated /dialog_out/ legs, isn't this info more suitable on the /dialog_in/ structure???
3) in section "Dialog state for dialog_in and dialog_out", statement (2) is not clear. To me if at least one *dialog_out* is in /early /state, *dialog_in* is steal 'alive' and could not be changed to /terminated /state. Am I wrong???
Edson.