From ef6b5d729301feddcc1395f58b330e0f896eb3aa Mon Sep 17 00:00:00 2001 From: fumiama Date: Sat, 1 Jan 2022 18:24:46 +0800 Subject: [PATCH] fix long packet --- gold/link/me.go | 8 ++++++++ 1 file changed, 8 insertions(+) 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)