Same issue as @alex_at_twofive25_dot_com and @CharlesTWM
Testing with iOS 16.5 failed, but iOS 14.8.1 was successful. The following are the differences I observed in the device logs.
iOS 14.8.1
com.apple.IdentityLookup.MessageFilter Connection 13: connected successfully
com.apple.IdentityLookup.MessageFilter Connection 13: TLS handshake complete
com.apple.IdentityLookup.MessageFilter Connection 13: ready C(Y) E(Y)
com.apple.IdentityLookup.MessageFilter Task <BD3610F1-17C9-408B-8BD9-36760810BC60>.<1> now using Connection 13
com.apple.IdentityLookup.MessageFilter Connection 13: received viability advisory(Y)
com.apple.IdentityLookup.MessageFilter Task <BD3610F1-17C9-408B-8BD9-36760810BC60>.<1> sent request, body S 810
com.apple.IdentityLookup.MessageFilter Task <BD3610F1-17C9-408B-8BD9-36760810BC60>.<1> received response, status 200 content K
com.apple.IdentityLookup.MessageFilter Task <BD3610F1-17C9-408B-8BD9-36760810BC60>.<1> done using Connection 13
iOS 16.5 (print log only at first time and receiving external server response)
com.apple.IdentityLookup.MessageFilter Connection 1: connected successfully
com.apple.IdentityLookup.MessageFilter got event: Connection invalid
com.apple.IdentityLookup.MessageFilter Connection 1: TLS handshake complete
com.apple.IdentityLookup.MessageFilter Connection 1: ready C(Y) E(Y)
com.apple.IdentityLookup.MessageFilter [C1] event: client:connection_reused @0.160s
com.apple.IdentityLookup.MessageFilter Task <8025DB62-2606-44F7-9502-1E68FCA8A5B0>.<1> now using Connection 1
com.apple.IdentityLookup.MessageFilter Connection 1: received viability advisory(Y)
com.apple.IdentityLookup.MessageFilter Task <8025DB62-2606-44F7-9502-1E68FCA8A5B0>.<1> sent request, body S 1766
com.apple.IdentityLookup.MessageFilter Task <8025DB62-2606-44F7-9502-1E68FCA8A5B0>.<1> received response, status 200 content K
com.apple.IdentityLookup.MessageFilter user sessions enabled, targeting 501
com.apple.IdentityLookup.MessageFilter cleaning up unpooled xpc conn to trustd 0xc2290faa0
com.apple.IdentityLookup.MessageFilter got event: Connection invalid
com.apple.IdentityLookup.MessageFilter Initializing connection
com.apple.IdentityLookup.MessageFilter Task <8025DB62-2606-44F7-9502-1E68FCA8A5B0>.<1> done using Connection 1
iOS 14.8.1 print following log in the end, but iOS 16.5 doesn't
com.apple.IdentityLookup.MessageFilter Connection 13: done
How can I identify the root cause of the error message: "got event: Connection invalid"?
Post
Replies
Boosts
Views
Activity
We have found the reason for the issue where API requests can only be sent once on iOS 15 and above!
This is related to the support for HTTP/3 and QUIC starting from iOS 15. We found that when the server's response header includes "alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000", it restricts the request to be sent only once.
Therefore, after disabling QUIC on our API server - Google Cloud Run, the API can be sent multiple times. I would like to know if this limitation is imposed by this extension, preventing the use of HTTP/3?
We also hope that this solution can help others facing the same issue, providing a temporary workaround for this problem.
WWDC21 - Accelerate networking with HTTP/3 and QUIC
Thank you very much for your detailed explanation. This gives me a deeper understanding of packet tunnel and proxy server!
Overall, I want to achieve something like the role of NEFilterPacketProvider: helping users block unsafe/scam websites without the need to parse what content users have been browsing, but simply knowing which websites users have visited.
I would like to try using NEFilterPacketProvider and not be limited to supervised devices. After reading the article you provided, there is a section that mentions:
In an unmanaged environment, deploy your content filter as part of a Screen Time app.
Perhaps the Screen Time Framework can meet my requirements?
Hi @eskimo,
I've read the Screen Time API documentation, and it seems that users need to enable the Family Sharing feature to use this API, which doesn't appear to be what I'm looking for.
I tried deleting tunnelNetworkSettings.ipv4Settings?.includedRoutes = [NEIPv4Route.default()], and as a result, VoIP worked successfully, but streaming failed.
As you mentioned, using the packet tunnel in this way is not a recommended practice. I would appreciate if you have any alternative suggestions to meet my requirements.
This is failing because you claim the default route:
tunnelNetworkSettings.ipv4Settings?.includedRoutes = [NEIPv4Route.default()]
When you do that, the system expects you to be able to forward packets to any destination on the Internet. Presumably you don’t do that, and so various networking apps start to fail.
This is the root cause of my problem!
After deleting this line and fixing the bugs in the HTTP/HTTPS proxy (HTTP redirecting to HTTPS URLs, which was causing streaming videos to fail), it now works like a charm! Thanks again for your help! : )
Have you made a server API call using URLSession or any other frameworks?
In fact, it's not necessary; you only need to override the func classificationResponse(for request: ILClassificationRequest) -> ILClassificationResponse method.
For more details, you can refer to this link:
https://stackoverflow.com/questions/76504101/http-request-fails-trying-to-report-unwanted-communication-report-via-api/76645829#76645829
I encountered the same crash as you did and reported it to Apple Developer Technical Support. They replied that they determined this is a known issue, and there is no workaround at this time. I have also provided feedback in the Feedback Assistant and will report back if there are any status updates.
It seems that after Xcode 15, you need to debug in a different way. Here are the steps:
Add a breakpoint in the extension code.
Run the app (not extension).
Navigate to "Debug", then select "Attach Process by PID or Name"
Enter your extension target's name (e.g., BackgroundDownloadExtension) in the input field.
Open the Terminal app.
Enter the command like this: xcrun backgroundassets-debug --app-bundle-id [com....] --device-id [3...f] --simulate --app-update and click "Attach".
Breakpoint entered!