Fix: potential panic on windows (#110)

This is only a temporary solution.
This commit is contained in:
xjasonlyu
2022-03-31 15:11:34 +08:00
parent 9f7989a9d0
commit 8d3f8d7631
+8 -3
View File
@@ -92,22 +92,27 @@ func (e *Endpoint) dispatchLoop(cancel context.CancelFunc) {
defer cancel()
for {
data := make([]byte, e.offset+int(e.mtu))
offset, mtu := e.offset, int(e.mtu)
data := make([]byte, offset+mtu)
n, err := e.rw.Read(data)
if err != nil {
break
}
if n == 0 || n > mtu {
continue
}
if !e.IsAttached() {
continue /* unattached, drop packet */
}
pkt := stack.NewPacketBuffer(stack.PacketBufferOptions{
Data: buffer.View(data[e.offset : e.offset+n]).ToVectorisedView(),
Data: buffer.View(data[offset : offset+n]).ToVectorisedView(),
})
switch header.IPVersion(data[e.offset:]) {
switch header.IPVersion(data[offset:]) {
case header.IPv4Version:
e.InjectInbound(header.IPv4ProtocolNumber, pkt)
case header.IPv6Version: