diff --git a/gold/link/me.go b/gold/link/me.go index 07aa688..ca9a5a2 100644 --- a/gold/link/me.go +++ b/gold/link/me.go @@ -2,6 +2,7 @@ package link import ( "encoding/binary" + "io" "net" "strconv" "sync" @@ -174,6 +175,13 @@ func (m *Me) sendAllSameDst(packet []byte) (n int, rem []byte) { for len(rem) > 20 && p.issame(rem) { totl := waterutil.IPv4TotalLength(rem) if int(totl) > len(rem) { + suffix := make([]byte, int(totl)-len(rem)) + _, err := io.ReadFull(m.nic, suffix) + if err != nil { + return len(packet), nil + } + packet = append(packet, suffix...) + n = len(packet) break } n += int(totl)