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 }