From dc450ba2e6bfc1a1384a7c81bebabb439db485c5 Mon Sep 17 00:00:00 2001 From: fumiama Date: Fri, 31 Dec 2021 12:50:47 +0800 Subject: [PATCH] fix of --- lower/nic.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lower/nic.go b/lower/nic.go index 9dc2d9b..b795178 100644 --- a/lower/nic.go +++ b/lower/nic.go @@ -71,9 +71,9 @@ func (nc *NIC) Start(m *link.Me) { continue } packet = packet[:n] - _, rem := send(m, packet) - for len(rem) > 20 { - _, rem = send(m, rem) + n, rem := send(m, packet) + for len(rem) > 20 && n > 0 { + n, rem = send(m, rem) } if len(rem) > 0 { off = copy(buf, rem) @@ -115,6 +115,10 @@ func send(m *link.Me, packet []byte) (n int, rem []byte) { return len(packet), nil } totl := waterutil.IPv4TotalLength(packet) + if int(totl) > len(packet) { + rem = packet + return + } rem = packet[totl:] packet = packet[:totl] n = int(totl)