Merge pull request #222 from safing/fix/slow-nfq-shutdown

Fix slow nfq shutdown
This commit is contained in:
Daniel 2020-12-21 19:18:53 +01:00 committed by GitHub
commit 8a3e15ec72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 5 deletions

6
Gopkg.lock generated
View file

@ -140,15 +140,15 @@
revision = "2bc1f35cddc0cc527b4bc3dce8578fc2a6c11384" revision = "2bc1f35cddc0cc527b4bc3dce8578fc2a6c11384"
[[projects]] [[projects]]
branch = "master" digest = "1:711ec17a2d8edd94cff8e2e4339d847e46acc1bb6b49ec29dcc1db78b666378b"
digest = "1:1f6a000c4fe2eaf76f506ecc23e859e1a5b81c0ec3039c5fca21bfbb80c43979"
name = "github.com/mdlayher/netlink" name = "github.com/mdlayher/netlink"
packages = [ packages = [
".", ".",
"nlenc", "nlenc",
] ]
pruneopts = "" pruneopts = ""
revision = "ded538f7f4be5ec9a64b7a16c7fdb0bc66bfb85b" revision = "2a4e26491f1ba4eae173a7733ac11744cfed82b5"
version = "v1.2.0"
[[projects]] [[projects]]
digest = "1:508f444b8e00a569a40899aaf5740348b44c305d36f36d4f002b277677deef95" digest = "1:508f444b8e00a569a40899aaf5740348b44c305d36f36d4f002b277677deef95"

View file

@ -32,4 +32,4 @@ ignored = ["github.com/safing/portbase/*", "github.com/safing/spn/*"]
[[override]] [[override]]
name = "github.com/mdlayher/netlink" name = "github.com/mdlayher/netlink"
branch = "master" # remove when https://github.com/mdlayher/netlink/pull/171 is released and in github.com/florianl/go-nfqueue version = "1.2.0" # remove when github.com/florianl/go-nfqueue has updated to v1.2.0

View file

@ -6,6 +6,7 @@ package nfq
import ( import (
"context" "context"
"runtime" "runtime"
"strings"
"sync/atomic" "sync/atomic"
"time" "time"
@ -140,7 +141,15 @@ func (q *Queue) handleError(e error) int {
return 0 return 0
} }
} }
log.Errorf("nfqueue: encountered error while receiving packets: %s\n", e.Error())
// Check if the queue was already closed. Unfortunately, the exposed error
// variable is in an internal stdlib package. Therefore, check for the error
// string instead. :(
// Offical error variable is defined here:
// https://github.com/golang/go/blob/0e85fd7561de869add933801c531bf25dee9561c/src/internal/poll/fd.go#L24
if !strings.HasSuffix(e.Error(), "use of closed file") {
log.Errorf("nfqueue: encountered error while receiving packets: %s\n", e.Error())
}
// Close the existing socket // Close the existing socket
if nf := q.getNfq(); nf != nil { if nf := q.getNfq(); nf != nil {