@meaton
Are you buffering a lot of this data in your provider?
No. But I'm not quite sure what you mean. Let me tell you the specific content of my provider.
I create a socket for each TCP/UDP Flow, I mean, each flow has one individual socket(I use the open source library https://github.com/robbiehanson/CocoaAsyncSocket to create socket).
Then, in my provider, each socket will directly forward the traffic in the Flow to the local agent program, and then write the return data of the local agent program back to the TCP/UDP Flow using - (void)writeData:(NSData *)data withCompletionHandler:(void (^)(NSError *error))completionHandler, and every time the socket I created is released correctly.
Is there something wrong with my design? It doesn't look like there should be a problem.
We are worried and hope to get help soon, thank you @meaton.