From abd7725feda4909931df90ae62461ea08428eaa0 Mon Sep 17 00:00:00 2001 From: eddc005 Date: Tue, 7 May 2024 21:50:06 +0100 Subject: [PATCH] close pcap properly and implement ProtectedDialContext --- io/pcap.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/io/pcap.go b/io/pcap.go index 995332b..c2dfae0 100644 --- a/io/pcap.go +++ b/io/pcap.go @@ -19,6 +19,8 @@ type pcapPacketIO struct { lastTime *time.Time ioCancel context.CancelFunc config PcapPacketIOConfig + + dialer *net.Dialer } type PcapPacketIOConfig struct { @@ -38,6 +40,7 @@ func NewPcapPacketIO(config PcapPacketIOConfig) (PacketIO, error) { lastTime: nil, ioCancel: nil, config: config, + dialer: &net.Dialer{}, }, nil } @@ -70,8 +73,9 @@ func (p *pcapPacketIO) Register(ctx context.Context, cb PacketCallback) error { return nil } +// A normal dialer is sufficient as pcap IO does not mess up with the networking func (p *pcapPacketIO) ProtectedDialContext(ctx context.Context, network, address string) (net.Conn, error) { - return nil, nil + return p.dialer.DialContext(ctx, network, address) } func (p *pcapPacketIO) SetVerdict(pkt Packet, v Verdict, newPacket []byte) error { @@ -84,6 +88,7 @@ func (p *pcapPacketIO) SetCancelFunc(cancelFunc context.CancelFunc) error { } func (p *pcapPacketIO) Close() error { + p.pcap.Close() return nil }