mirror of
https://github.com/SagerNet/sing-tun.git
synced 2025-10-07 17:41:00 +08:00
Fix error usages
This commit is contained in:
@@ -4,6 +4,7 @@ package tun
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -79,7 +80,7 @@ func (c *gLazyConn) HandshakeFailure(err error) error {
|
|||||||
if c.handshakeDone {
|
if c.handshakeDone {
|
||||||
return os.ErrInvalid
|
return os.ErrInvalid
|
||||||
}
|
}
|
||||||
c.request.Complete(err != ErrDrop)
|
c.request.Complete(!errors.Is(err, ErrDrop))
|
||||||
c.handshakeDone = true
|
c.handshakeDone = true
|
||||||
c.handshakeErr = err
|
c.handshakeErr = err
|
||||||
return nil
|
return nil
|
||||||
|
@@ -4,6 +4,7 @@ package tun
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
"github.com/sagernet/gvisor/pkg/tcpip/stack"
|
"github.com/sagernet/gvisor/pkg/tcpip/stack"
|
||||||
"github.com/sagernet/gvisor/pkg/tcpip/transport/tcp"
|
"github.com/sagernet/gvisor/pkg/tcpip/transport/tcp"
|
||||||
@@ -37,7 +38,7 @@ func (f *TCPForwarder) Forward(r *tcp.ForwarderRequest) {
|
|||||||
destination := M.SocksaddrFrom(AddrFromAddress(r.ID().LocalAddress), r.ID().LocalPort)
|
destination := M.SocksaddrFrom(AddrFromAddress(r.ID().LocalAddress), r.ID().LocalPort)
|
||||||
pErr := f.handler.PrepareConnection(N.NetworkTCP, source, destination)
|
pErr := f.handler.PrepareConnection(N.NetworkTCP, source, destination)
|
||||||
if pErr != nil {
|
if pErr != nil {
|
||||||
r.Complete(pErr != ErrDrop)
|
r.Complete(!errors.Is(pErr, ErrDrop))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
conn := &gLazyConn{
|
conn := &gLazyConn{
|
||||||
|
@@ -4,6 +4,7 @@ package tun
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"math"
|
"math"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
"os"
|
"os"
|
||||||
@@ -59,7 +60,7 @@ func rangeIterate(r stack.Range, fn func(*buffer.View))
|
|||||||
func (f *UDPForwarder) PreparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) {
|
func (f *UDPForwarder) PreparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) {
|
||||||
pErr := f.handler.PrepareConnection(N.NetworkUDP, source, destination)
|
pErr := f.handler.PrepareConnection(N.NetworkUDP, source, destination)
|
||||||
if pErr != nil {
|
if pErr != nil {
|
||||||
if pErr != ErrDrop {
|
if !errors.Is(pErr, ErrDrop) {
|
||||||
gWriteUnreachable(f.stack, userData.(*stack.PacketBuffer))
|
gWriteUnreachable(f.stack, userData.(*stack.PacketBuffer))
|
||||||
}
|
}
|
||||||
return false, nil, nil, nil
|
return false, nil, nil, nil
|
||||||
|
@@ -2,6 +2,7 @@ package tun
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"errors"
|
||||||
"net"
|
"net"
|
||||||
"net/netip"
|
"net/netip"
|
||||||
"syscall"
|
"syscall"
|
||||||
@@ -354,7 +355,7 @@ func (s *System) processIPv4TCP(ipHdr header.IPv4, tcpHdr header.TCP) (bool, err
|
|||||||
} else {
|
} else {
|
||||||
natPort, err := s.tcpNat.Lookup(source, destination, s.handler)
|
natPort, err := s.tcpNat.Lookup(source, destination, s.handler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrDrop {
|
if errors.Is(err, ErrDrop) {
|
||||||
return false, nil
|
return false, nil
|
||||||
} else {
|
} else {
|
||||||
return false, s.resetIPv4TCP(ipHdr, tcpHdr)
|
return false, s.resetIPv4TCP(ipHdr, tcpHdr)
|
||||||
@@ -441,7 +442,7 @@ func (s *System) processIPv6TCP(ipHdr header.IPv6, tcpHdr header.TCP) (bool, err
|
|||||||
} else {
|
} else {
|
||||||
natPort, err := s.tcpNat.Lookup(source, destination, s.handler)
|
natPort, err := s.tcpNat.Lookup(source, destination, s.handler)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == ErrDrop {
|
if errors.Is(err, ErrDrop) {
|
||||||
return false, nil
|
return false, nil
|
||||||
} else {
|
} else {
|
||||||
return false, s.resetIPv6TCP(ipHdr, tcpHdr)
|
return false, s.resetIPv6TCP(ipHdr, tcpHdr)
|
||||||
@@ -536,7 +537,7 @@ func (s *System) processIPv6UDP(ipHdr header.IPv6, udpHdr header.UDP) error {
|
|||||||
func (s *System) preparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) {
|
func (s *System) preparePacketConnection(source M.Socksaddr, destination M.Socksaddr, userData any) (bool, context.Context, N.PacketWriter, N.CloseHandlerFunc) {
|
||||||
pErr := s.handler.PrepareConnection(N.NetworkUDP, source, destination)
|
pErr := s.handler.PrepareConnection(N.NetworkUDP, source, destination)
|
||||||
if pErr != nil {
|
if pErr != nil {
|
||||||
if pErr != ErrDrop {
|
if !errors.Is(pErr, ErrDrop) {
|
||||||
if source.IsIPv4() {
|
if source.IsIPv4() {
|
||||||
ipHdr := userData.(header.IPv4)
|
ipHdr := userData.(header.IPv4)
|
||||||
s.rejectIPv4WithICMP(ipHdr, header.ICMPv4PortUnreachable)
|
s.rejectIPv4WithICMP(ipHdr, header.ICMPv4PortUnreachable)
|
||||||
|
Reference in New Issue
Block a user