1
0
mirror of https://github.com/fumiama/WireGold.git synced 2026-06-05 07:50:24 +08:00

fix 分片

This commit is contained in:
fumiama
2021-12-31 13:37:39 +08:00
parent defef19e4b
commit fb88615092

View File

@@ -79,22 +79,22 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) {
return l.write(p, 0, istransfer, false)
}
data := p.Data
offset := 0
for len(data) > int(l.me.mtu) {
totl := len(data)
i := 0
for ; totl > int(l.me.mtu); i += int(l.me.mtu) {
packet := *p
packet.Data = data[offset*int(l.me.mtu) : (offset+1)*int(l.me.mtu)]
i, err := l.write(&packet, uint16(offset), istransfer, true)
n += i
packet.Data = data[i : i+int(l.me.mtu)]
cnt, err := l.write(&packet, uint16(i), istransfer, true)
n += cnt
if err != nil {
return n, err
}
data = data[(offset+1)*int(l.me.mtu):]
offset++
data = data[i+int(l.me.mtu):]
totl -= int(l.me.mtu)
}
packet := *p
packet.Data = data
i, err := l.write(&packet, uint16(offset), istransfer, false)
n += i
p.Data = data
cnt, err := l.write(p, uint16(i), istransfer, false)
n += cnt
if err != nil {
return n, err
}