Hi,
I have a simple UDP Transparent proxy test - I open udp socket from a python program and blast datagrams in a tight while loop, and in the proxy system extension code, I just echo the datagram - i.e. I do flow.readDatagram() and then write it back using flow.writeDatagram(). I try the above with datagram sizes upto 9000 bytes, it seems to work allright. I launch two dozen of these python tests parallely and all of them write data and read the data back.
The problem starts when I increase the datagramsize - say I make it 9100 bytes, the writes from the python test script often ends up with a "write(net): No buffer space available" - which is totally fine and understandable if the kernel runs out of buffers to store all these datagrams. But the issue is that if I kill all those python scripts and then try sending data to that destination at a much slower rate (like using a netcat), my transparent proxy code does not get the handleNewUDPFlow() callback. For every new flow/endpoint I usually see a bunch of logs which says handleNewUDPFlow with filter so and so etc.. - after ENOBUFS its radio silence, no callbacks, none of those logs.
It looks like some bug in the transparent proxy library, is this a test case anyone else has tried/faced similar issues ?
Rgds, Gopa.