-
Notifications
You must be signed in to change notification settings - Fork 88
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(ua2f.c): possible deadlock in the queue, causing network disconnec… #127
Conversation
…tion 在不支持内核上运行会造成队列死锁。当返回Operation not supported错误的时候,如果继续执行,就会死锁。 Signed-off-by: miny1233 <[email protected]>
还有就是我觉得,像这种错误之类的,最好能直接在控制台上输出,最开始运行搞的我都没搞懂哪弄错了,还以为是iptables的问题 |
补充一点就是,这个死锁问题,就算加--by-pass也是没用的。 |
我仔细看了一下,感觉碰到 |
我最早是这样想的,但是就是错误类型很多,我也没仔细看,就怕存在那种可以忽略的错误。起码目前能确定这个错误是必须要程序退出的。 |
你现在这样写的话, |
没有的,只会在ERROR的时候退出 |
返回一个 |
原本就是收到 |
nfqueue_receive 只需要成功一次的,拿到 queue 的 handler 就行了。是 packet 因为加了 async 的 flag,所以读的时候可能 NOTREADY |
你确定吗?你的这个修改和之前的行为都不一样了 while (!should_exit) {
if (nfqueue_receive(queue, buf, 0) == IO_READY) {
struct nf_packet packet[1];
while (nfqueue_next(buf, packet) == IO_READY) {
handle_packet(queue, packet);
}
}
} 原来在 |
确实,太久没写我把queue和packet弄混了,我再改改。 |
…tion
在不支持内核上运行会造成队列死锁。当返回Operation not supported错误的时候,如果继续执行,就会死锁。