oremanj/python-netfilterqueue

It would be nice if unbind() from another thread could interrupt run()

oremanj opened this issue · 4 comments

This seems to be a common user request, e.g., see #42.

At the kernel level we probably need to send some kind of no-op request on the queue in order to produce a response that run() will read. Then once we've confirmed that run() has exited, we can actually unbind. Unclear whether libnetfilter_queue exposes enough rope to do this.

is this so you can bind/unbind multiple times in the same process or just to allow for the application to release its resources properly on exit?

@DOWRIGHTTV it's to support pushing run() into a background thread (presumably using a queue of some sort to pass the packets to the main thread for processing), such as you might want in a GUI app. Currently there is no way to shut down the background thread if you do this. A few users have attempted to do it by running unbind() in the main thread, and complained when that doesn't work. It's somewhat difficult to support but I created the issue so the idea wouldn't get lost.