From 9316a0064e44ef22667e9bcc93a907014a6b72e8 Mon Sep 17 00:00:00 2001 From: fumiama Date: Fri, 31 Dec 2021 13:24:49 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=88=86=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gold/link/link.go | 11 +++++++++-- lower/nic.go | 4 ++-- main.go | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gold/link/link.go b/gold/link/link.go index efc40c7..4eaebd2 100644 --- a/gold/link/link.go +++ b/gold/link/link.go @@ -89,6 +89,14 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) { return n, err } data = data[(offset+1)*int(l.me.mtu):] + offset++ + } + packet := *p + packet.Data = data[offset*int(l.me.mtu):] + i, err := l.write(&packet, uint16(offset), istransfer, false) + n += i + if err != nil { + return n, err } return n, nil } @@ -122,7 +130,6 @@ func (l *Link) write(p *head.Packet, offset uint16, istransfer, hasmore bool) (n if d == nil { return 0, errors.New("[link] ttl exceeded") } - logrus.Debugln("[link] write", len(d), "bytes data") if err == nil { peerlink := l.me.router.NextHop(p.Dst.String()) if peerlink != nil { @@ -130,7 +137,7 @@ func (l *Link) write(p *head.Packet, offset uint16, istransfer, hasmore bool) (n if peerep == nil { return 0, errors.New("[link] nil endpoint of " + p.Dst.String()) } - logrus.Infoln("[link] write data from ep", l.me.myconn.LocalAddr(), "to", peerep) + logrus.Infoln("[link] write", len(d), "bytes data from ep", l.me.myconn.LocalAddr(), "to", peerep) n, err = l.me.myconn.WriteToUDP(d, peerep) } else { logrus.Warnln("[link] drop packet: nil peerlink") diff --git a/lower/nic.go b/lower/nic.go index 15a9b9a..354c679 100644 --- a/lower/nic.go +++ b/lower/nic.go @@ -58,8 +58,8 @@ func (nc *NIC) Start(m *link.Me) { logrus.Infoln("[lower] recv write", n, "bytes packet to nic") } }() - buf := make([]byte, m.MTU()+64) // 增加报头长度与 TEA 冗余 - buf2 := make([]byte, m.MTU()+64) // 增加报头长度与 TEA 冗余 + buf := make([]byte, m.MTU()+68) // 增加报头长度与 TEA 冗余 + buf2 := make([]byte, m.MTU()+68) // 增加报头长度与 TEA 冗余 off := 0 isrev := false for nc.hasstart { // 从 NIC 发送 diff --git a/main.go b/main.go index fc87857..8cfdb15 100644 --- a/main.go +++ b/main.go @@ -111,7 +111,7 @@ func main() { } defer w.Stop() - w.Run(upper.ServiceWireGold, upper.ServiceWireGold, 32768-64) + w.Run(upper.ServiceWireGold, upper.ServiceWireGold, 32768-68) } func displayHelp(hint string) {