Is the pauseVerdict + resumeFlow:withVerdict: mechanism reliable?

I have a NEFilterDataProvider subclass with the handleNewFlow: method overridden.

The custom method just does this:
  1. Check if we're dealing with AFINET or AFINET6.

  2. gather some data using the audit token and proc_pidpath

  3. send a XPC to another process with a completionHandler.

  4. pause the flow by returning [NEFilterNewFlowVerdict pauseVerdict]

When the completionHandler is called, it calls:

[self resumeFlow:theFlow withVerdict:[NEFilterNewFlowVerdict allowVerdict]];

So far what I'm observing is that this does not work as expected:
  • the network connections work for a while.

  • then web pages are no more displayed in Safari.

  • based on some logs, it looks like that the DNS requests do not complete.

The XPC listener does reply almost immediately and I can see that the resumeFlow: call is correctly called.

Yet, it looks like the flow is not resumed.

Questions:

Is the pauseVerdict + resumeFlow:withVerdict: mechanism reliable?

What could be checked since step-by-step-debugging shows that the expected steps are performed to resume the flows?

Just out of curiosity, has anyone been able to make the pause + resume workflow work?
So it turns out that the "issue" was in my code.

The - resumeFlow:withVerdict: method was called from an instance of a subclass of NEFilterDataProvider that was not listed in the Info.plist file of the .systemextension bundle.
Is the pauseVerdict + resumeFlow:withVerdict: mechanism reliable?
 
 
Q