From b62e86457d7808a5b7adfe2af1c68253f0489195 Mon Sep 17 00:00:00 2001 From: Serguei Bezverkhi Date: Mon, 8 Jul 2019 16:46:23 -0400 Subject: [PATCH] Change logic of searching for rule's ID (#34) Signed-off-by: Serguei Bezverkhi --- rule.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/rule.go b/rule.go index 7775942..540d26f 100644 --- a/rule.go +++ b/rule.go @@ -114,15 +114,17 @@ func (cc *Conn) GetRuleHandle(t *Table, c *Chain, ruleID uint32) (uint64, error) if err != nil { return 0, fmt.Errorf("Receive: %v", err) } - if len(reply) != 1 { - return 0, fmt.Errorf("Receive: Expected 1 message but got %d", len(reply)) - } - rr, err := ruleFromMsg(reply[0]) - if err != nil { - return 0, err + for _, msg := range reply { + rr, err := ruleFromMsg(msg) + if err != nil { + return 0, err + } + if rr.RuleID == ruleID { + return rr.Handle, nil + } } - return rr.Handle, nil + return 0, fmt.Errorf("rule with id %d is not found", ruleID) } // AddRule adds the specified Rule