PacketTunnelProvider write ip packet to tun by packetFlow.writePackets not work

extension PacketTunnelProvider: Tun2socksPacketFlowProtocol{

        

    func proxyPackets() {

         self.packetFlow.readPackets {[weak self] (packets: [Data], protocols: [NSNumber]) in

             for packet in  packets {

                 autoreleasepool{

                     Tun2socksInputPacket(packet)

                 }

             }             

             self?.proxyPackets()

         }

     }

    

   

    public func writePacket(_ packet: Data?) {

         NSLog("write packet 1")

        self.packetFlow.writePackets([packet!], withProtocols: [AF_INET as NSNumber])

    }

}



extension NEPacketTunnelFlow: Tun2socksPacketFlowProtocol{

    public func writePacket(_ packet: Data?) {

        NSLog(self.description)

        //NSLog("write packet 2")

        os_log("write packet called !!!")

        let protocolNumber = protocolNumber(for: packet!)

        NSLog(protocolNumber.stringValue)

        let b = packet?.base64EncodedString()

        NSLog(b!)

        let v = self.writePackets([packet!], withProtocols: [protocolNumber])

        

        NSLog(v.description)

    }

    

    private func protocolNumber(for packet: Data) -> NSNumber {

        guard !packet.isEmpty else {

            return AF_INET as NSNumber

        }



        // 'packet' contains the decrypted incoming IP packet data

        // The first 4 bits identify the IP version

        let ipVersion = (packet[0] & 0xf0) >> 4

        return (ipVersion == 6) ? AF_INET6 as NSNumber : AF_INET as NSNumber

    }

}

What's causing this problem when calling writepackets returns true but the browser request keeps loading

PacketTunnelProvider write ip packet to tun by packetFlow.writePackets not work
 
 
Q