mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-23 20:16:27 +08:00
fix of
This commit is contained in:
21
lower/nic.go
21
lower/nic.go
@@ -58,11 +58,21 @@ 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()+64) // 增加报头长度与 TEA 冗余
|
||||||
|
buf2 := make([]byte, m.MTU()+64) // 增加报头长度与 TEA 冗余
|
||||||
off := 0
|
off := 0
|
||||||
|
isrev := false
|
||||||
for nc.hasstart { // 从 NIC 发送
|
for nc.hasstart { // 从 NIC 发送
|
||||||
packet := buf
|
var packet []byte
|
||||||
|
if off > 0 && !isrev {
|
||||||
|
packet = buf2
|
||||||
|
} else {
|
||||||
|
packet = buf
|
||||||
|
}
|
||||||
n, err := nc.ifce.Read(packet[off:])
|
n, err := nc.ifce.Read(packet[off:])
|
||||||
|
if isrev {
|
||||||
|
off = 0
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Errorln("[lower] send read from nic err:", err)
|
logrus.Errorln("[lower] send read from nic err:", err)
|
||||||
break
|
break
|
||||||
@@ -76,7 +86,12 @@ func (nc *NIC) Start(m *link.Me) {
|
|||||||
n, rem = send(m, rem)
|
n, rem = send(m, rem)
|
||||||
}
|
}
|
||||||
if len(rem) > 0 {
|
if len(rem) > 0 {
|
||||||
off = copy(buf, rem)
|
if off > 0 {
|
||||||
|
off = copy(buf, rem)
|
||||||
|
isrev = true
|
||||||
|
} else {
|
||||||
|
off = copy(buf2, rem)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user