errors handling

This commit is contained in:
Alexis PIRES 2020-01-06 15:19:16 +01:00
parent 9dc224dc94
commit e906f3354d
1 changed files with 12 additions and 6 deletions

18
conn.go
View File

@ -78,7 +78,8 @@ func (cc *Conn) Flush() error {
}
// Trigger entities callback
for cc.checkReceive(conn) {
msg, err := cc.checkReceive(conn)
for msg {
rmsg, err := conn.Receive()
if err != nil {
@ -90,18 +91,23 @@ func (cc *Conn) Flush() error {
e.HandleResponse(msg)
}
}
msg, err = cc.checkReceive(conn)
}
return nil
return err
}
func (cc *Conn) checkReceive(c *netlink.Conn) bool {
func (cc *Conn) checkReceive(c *netlink.Conn) (bool, error) {
if cc.TestDial != nil {
return false
return false, nil
}
sc, err := c.SyscallConn()
if err != nil {
return false, fmt.Errorf("SyscallConn error: %w", err)
}
var n int
sc.Control(func(fd uintptr) {
@ -113,10 +119,10 @@ func (cc *Conn) checkReceive(c *netlink.Conn) bool {
})
if err == nil && n > 0 {
return true
return true, nil
}
return false
return false, err
}
// FlushRuleset flushes the entire ruleset. See also