From 1f2240c488f710c0b0941cbd7176b0ff399291e7 Mon Sep 17 00:00:00 2001 From: Serguei Bezverkhi Date: Sun, 22 Dec 2019 05:44:25 -0500 Subject: [PATCH] Flush fix (#85) Clear messages after netlink return error Signed-off-by: Serguei Bezverkhi --- conn.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/conn.go b/conn.go index e0153c2..d63765b 100644 --- a/conn.go +++ b/conn.go @@ -41,7 +41,10 @@ type Conn struct { // Flush sends all buffered commands in a single batch to nftables. func (cc *Conn) Flush() error { cc.Lock() - defer cc.Unlock() + defer func() { + cc.messages = nil + cc.Unlock() + }() if len(cc.messages) == 0 { // Messages were already programmed, returning nil return nil @@ -61,11 +64,9 @@ func (cc *Conn) Flush() error { } if _, err := conn.Receive(); err != nil { - return fmt.Errorf("Receive: %w", err) + return fmt.Errorf("Receive: %w", err) } - cc.messages = nil - return nil }