diff --git a/gold/link/link.go b/gold/link/link.go index 5a86541..19c7661 100644 --- a/gold/link/link.go +++ b/gold/link/link.go @@ -81,16 +81,16 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) { data := p.Data totl := len(data) i := 0 - for ; totl > int(l.me.mtu); i += int(l.me.mtu) { + for ; totl-i > int(l.me.mtu); i += int(l.me.mtu) { + logrus.Infoln("[link] split frag", i, ":", i+int(l.me.mtu), ", remain:", totl-i) packet := *p - packet.Data = data[i : i+int(l.me.mtu)] + packet.Data = data[:int(l.me.mtu)] cnt, err := l.write(&packet, uint16(i), istransfer, true) n += cnt if err != nil { return n, err } - data = data[i+int(l.me.mtu):] - totl -= int(l.me.mtu) + data = data[int(l.me.mtu):] } p.Data = data cnt, err := l.write(p, uint16(i), istransfer, false) diff --git a/gold/link/me.go b/gold/link/me.go index 69a00c8..97e1a14 100644 --- a/gold/link/me.go +++ b/gold/link/me.go @@ -71,7 +71,7 @@ func NewMe(privateKey *[32]byte, myipwithmask string, myEndpoint string, nopipei m.loop = m.AddPeer(m.me.String(), nil, "127.0.0.1:56789", []string{myipwithmask}, 0, false, nopipeinlink) m.srcport = srcport m.dstport = dstport - m.mtu = mtu + m.mtu = mtu & 0xfff8 go m.initrecvpool() return }