mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-25 13:26:24 +08:00
fix 分片
This commit is contained in:
@@ -79,22 +79,22 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) {
|
|||||||
return l.write(p, 0, istransfer, false)
|
return l.write(p, 0, istransfer, false)
|
||||||
}
|
}
|
||||||
data := p.Data
|
data := p.Data
|
||||||
offset := 0
|
totl := len(data)
|
||||||
for len(data) > int(l.me.mtu) {
|
i := 0
|
||||||
|
for ; totl > int(l.me.mtu); i += int(l.me.mtu) {
|
||||||
packet := *p
|
packet := *p
|
||||||
packet.Data = data[offset*int(l.me.mtu) : (offset+1)*int(l.me.mtu)]
|
packet.Data = data[i : i+int(l.me.mtu)]
|
||||||
i, err := l.write(&packet, uint16(offset), istransfer, true)
|
cnt, err := l.write(&packet, uint16(i), istransfer, true)
|
||||||
n += i
|
n += cnt
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
data = data[(offset+1)*int(l.me.mtu):]
|
data = data[i+int(l.me.mtu):]
|
||||||
offset++
|
totl -= int(l.me.mtu)
|
||||||
}
|
}
|
||||||
packet := *p
|
p.Data = data
|
||||||
packet.Data = data
|
cnt, err := l.write(p, uint16(i), istransfer, false)
|
||||||
i, err := l.write(&packet, uint16(offset), istransfer, false)
|
n += cnt
|
||||||
n += i
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user