Hi There,
I have setup a PacketTunnelProvider as this:
class PacketTunnelProvider: NEPacketTunnelProvider {
override func startTunnel(
options: [String: NSObject]?,
completionHandler: @escaping (Error?) - Void
) {
NSLog("Tunnel started")
remoteEndpoint =
NWHostEndpoint(hostname: "192.168.0.27",
port: "62165")
readPackets()
}
override func stopTunnel(
with reason: NEProviderStopReason,
completionHandler: @escaping () - Void
) {
NSLog("Tunnel Stopped")
completionHandler()
}
}
extension PacketTunnelProvider {
private func readPackets() {
NSLog("readPackets called")
self?.packetFlow.readPackets { (_, _) in
NSLog("Did read packets")
}
}
}
After running the extension on a device using XCode, I can see completion handler in the NEPacketTunnelFlow.readPackets
is never being called according to logs:
default 16:00:07.447406-0800 VPNTestAppExtension Tunnel started
default 16:00:07.466064-0800 VPNTestAppExtension Did finish setting network: nil
default 16:00:07.466629-0800 VPNTestAppExtension readPackets called
Did I miss anything here? To test, I have an app keep sending a UDP packet to a UDP server, I am expecting readPackets method should capture these UDP packets after the tunnel is started.
5
0
1.9k