mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2024-12-30 02:37:01 +00:00
Fix: potential panic on windows (#110)
This is only a temporary solution.
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user