mirror of
https://github.com/fumiama/WireGold.git
synced 2026-06-12 12:50:28 +08:00
fix 分片
This commit is contained in:
15
lower/nic.go
15
lower/nic.go
@@ -5,6 +5,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/fumiama/water"
|
"github.com/fumiama/water"
|
||||||
"github.com/fumiama/water/waterutil"
|
"github.com/fumiama/water/waterutil"
|
||||||
@@ -62,7 +63,11 @@ func (nc *NIC) Start(m *link.Me) {
|
|||||||
buf2 := make([]byte, m.MTU()+68) // 增加报头长度与 TEA 冗余
|
buf2 := make([]byte, m.MTU()+68) // 增加报头长度与 TEA 冗余
|
||||||
off := 0
|
off := 0
|
||||||
isrev := false
|
isrev := false
|
||||||
for nc.hasstart { // 从 NIC 发送
|
t := time.NewTimer(time.Millisecond)
|
||||||
|
for range t.C { // 从 NIC 发送
|
||||||
|
if !nc.hasstart {
|
||||||
|
break
|
||||||
|
}
|
||||||
var packet []byte
|
var packet []byte
|
||||||
if off > 0 && !isrev {
|
if off > 0 && !isrev {
|
||||||
packet = buf2
|
packet = buf2
|
||||||
@@ -141,8 +146,12 @@ func (nc *NIC) send(m *link.Me, packet []byte) (n int, rem []byte) {
|
|||||||
if int(totl) > len(packet) {
|
if int(totl) > len(packet) {
|
||||||
buf := make([]byte, int(totl))
|
buf := make([]byte, int(totl))
|
||||||
copy(buf, packet)
|
copy(buf, packet)
|
||||||
nc.ifce.Read(buf[len(packet):])
|
cnt, err := nc.ifce.Read(buf[len(packet):])
|
||||||
packet = buf
|
if err != nil {
|
||||||
|
rem = packet
|
||||||
|
return
|
||||||
|
}
|
||||||
|
packet = buf[:cnt+len(packet)]
|
||||||
}
|
}
|
||||||
rem = packet[totl:]
|
rem = packet[totl:]
|
||||||
packet = packet[:totl]
|
packet = packet[:totl]
|
||||||
|
|||||||
Reference in New Issue
Block a user