mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-20 10:20:25 +08:00
fix 分片
This commit is contained in:
@@ -89,6 +89,14 @@ func (l *Link) Write(p *head.Packet, istransfer bool) (n int, err error) {
|
|||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
data = data[(offset+1)*int(l.me.mtu):]
|
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
|
return n, nil
|
||||||
}
|
}
|
||||||
@@ -122,7 +130,6 @@ func (l *Link) write(p *head.Packet, offset uint16, istransfer, hasmore bool) (n
|
|||||||
if d == nil {
|
if d == nil {
|
||||||
return 0, errors.New("[link] ttl exceeded")
|
return 0, errors.New("[link] ttl exceeded")
|
||||||
}
|
}
|
||||||
logrus.Debugln("[link] write", len(d), "bytes data")
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
peerlink := l.me.router.NextHop(p.Dst.String())
|
peerlink := l.me.router.NextHop(p.Dst.String())
|
||||||
if peerlink != nil {
|
if peerlink != nil {
|
||||||
@@ -130,7 +137,7 @@ func (l *Link) write(p *head.Packet, offset uint16, istransfer, hasmore bool) (n
|
|||||||
if peerep == nil {
|
if peerep == nil {
|
||||||
return 0, errors.New("[link] nil endpoint of " + p.Dst.String())
|
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)
|
n, err = l.me.myconn.WriteToUDP(d, peerep)
|
||||||
} else {
|
} else {
|
||||||
logrus.Warnln("[link] drop packet: nil peerlink")
|
logrus.Warnln("[link] drop packet: nil peerlink")
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ func (nc *NIC) Start(m *link.Me) {
|
|||||||
logrus.Infoln("[lower] recv write", n, "bytes packet to nic")
|
logrus.Infoln("[lower] recv write", n, "bytes packet to nic")
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
buf := make([]byte, m.MTU()+64) // 增加报头长度与 TEA 冗余
|
buf := make([]byte, m.MTU()+68) // 增加报头长度与 TEA 冗余
|
||||||
buf2 := make([]byte, m.MTU()+64) // 增加报头长度与 TEA 冗余
|
buf2 := make([]byte, m.MTU()+68) // 增加报头长度与 TEA 冗余
|
||||||
off := 0
|
off := 0
|
||||||
isrev := false
|
isrev := false
|
||||||
for nc.hasstart { // 从 NIC 发送
|
for nc.hasstart { // 从 NIC 发送
|
||||||
|
|||||||
Reference in New Issue
Block a user