From 0ca831f50b9e772820ef8197e04db795543526bb Mon Sep 17 00:00:00 2001 From: Bryan Boreham Date: Wed, 11 Mar 2020 12:16:11 +0000 Subject: [PATCH] Reduce pcap timeout to avoid overflow The value is passed by google/gopacket into a signed 32-bit int, so we must pick a timeout which is less than 2^31 microseconds. See https://github.com/google/gopacket/issues/708 --- router/pcap.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/router/pcap.go b/router/pcap.go index db1048c2..c4859277 100644 --- a/router/pcap.go +++ b/router/pcap.go @@ -4,10 +4,14 @@ import ( "fmt" "net" "sync" + "time" "github.com/google/gopacket/pcap" ) +// Must be less than 2^31 usec - see https://github.com/google/gopacket/issues/708 +const longTimeout = time.Duration(30 * time.Minute) + type Pcap struct { NonDiscardingFlowOp @@ -77,7 +81,7 @@ func newPcapHandle(ifName string, promisc bool, snaplen int, bufSz int) (handle if err = inactive.SetSnapLen(snaplen); err != nil { return } - if err = inactive.SetTimeout(MaxDuration); err != nil { + if err = inactive.SetTimeout(longTimeout); err != nil { return } if err = inactive.SetImmediateMode(true); err != nil {