At the moment, it's possible to get MC into this situation: * NewChannels * a handler H0 with BypassApproval=FALSE exists * a handler H1 with BypassApproval=TRUE exists * MC decides to bypass approvers * H1 exits * MC runs handlers * H1 doesn't exist any more * H0 is run without approval or even this: * NewChannels * a handler H0 with BypassApproval=FALSE exists * a handler H1 with BypassApproval=TRUE exists * MC decides to bypass approvers * H1 exits, but MC hasn't seen it disappear yet * MC runs handlers * H1 is run; calling its HandleChannels method fails * Only now does MC see that H1 has exited * H0 is run without approval We should convert dispatching to have an extra phase: before running approvers, try to run BypassApproval handlers in preference order. If one of them succeeds, stop dispatching; if they all fail (or there aren't any), continue to approvers. This is likely to require refactoring in the dispatcher code, and is probably too intrusive for 5.2.
Now that I've done the refactoring (although it still needs review), this is the next highest priority.
This should now be good to review after Bug #24120 and Bug #24569.
ship it
Thanks, fixed in git
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.