Skip to content

Commit 0af3fcf

Browse files
committed
return ErrUnsupportedNetwork if not a PacketConn
1 parent 4e2b66b commit 0af3fcf

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

server/handleassociate.go

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -140,21 +140,24 @@ type udpService struct {
140140

141141
func (svc *udpService) serve() {
142142
defer svc.target.Close()
143-
var buf [maxUdpPacket]byte
144-
var err error
145-
pktconn := svc.target.(net.PacketConn)
146-
for err == nil {
147-
var n int
148-
var srcnetaddr net.Addr
149-
if n, srcnetaddr, err = pktconn.ReadFrom(buf[:]); err == nil {
150-
var srcaddr socks5.Addr
151-
if srcaddr, err = socks5.AddrFromString(srcnetaddr.String()); err == nil {
152-
var b []byte
153-
if b, err = (&socks5.UDPPacket{Addr: srcaddr, Body: buf[:n]}).MarshalBinary(); err == nil {
154-
var nn int
155-
if nn, err = svc.client.WriteTo(b, svc.clientaddr); err == nil {
156-
if err = socks5.MustEqual(nn, len(b), io.ErrShortWrite); err == nil {
157-
svc.when.Store(int64(time.Since(svc.started)))
143+
err := socks5.ErrUnsupportedNetwork
144+
pktconn, ok := svc.target.(net.PacketConn)
145+
if ok {
146+
var buf [maxUdpPacket]byte
147+
err = nil
148+
for err == nil {
149+
var n int
150+
var srcnetaddr net.Addr
151+
if n, srcnetaddr, err = pktconn.ReadFrom(buf[:]); err == nil {
152+
var srcaddr socks5.Addr
153+
if srcaddr, err = socks5.AddrFromString(srcnetaddr.String()); err == nil {
154+
var b []byte
155+
if b, err = (&socks5.UDPPacket{Addr: srcaddr, Body: buf[:n]}).MarshalBinary(); err == nil {
156+
var nn int
157+
if nn, err = svc.client.WriteTo(b, svc.clientaddr); err == nil {
158+
if err = socks5.MustEqual(nn, len(b), io.ErrShortWrite); err == nil {
159+
svc.when.Store(int64(time.Since(svc.started)))
160+
}
158161
}
159162
}
160163
}

0 commit comments

Comments
 (0)