Merge 6773488cc0
into 6a61933ab7
This commit is contained in:
commit
4cb189669e
20
conn.go
20
conn.go
|
@ -230,13 +230,23 @@ func (cc *Conn) Flush() error {
|
||||||
return fmt.Errorf("SendMessages: %w", err)
|
return fmt.Errorf("SendMessages: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fetch the requested acknowledgement for each message we sent.
|
// Fetch the requested acknowledgement and echo for each message we sent.
|
||||||
for _, msg := range cc.messages {
|
for _, msg := range cc.messages {
|
||||||
if msg.Header.Flags&netlink.Acknowledge == 0 {
|
var expectedResponses int
|
||||||
continue // message did not request an acknowledgement
|
if msg.Header.Flags&netlink.Acknowledge != 0 {
|
||||||
|
expectedResponses++
|
||||||
}
|
}
|
||||||
if _, err := conn.Receive(); err != nil {
|
if msg.Header.Flags&netlink.Echo != 0 {
|
||||||
return fmt.Errorf("conn.Receive: %w", err)
|
expectedResponses++
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < expectedResponses; {
|
||||||
|
responses, err := conn.Receive()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("conn.Receive: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
i += len(responses)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue