@@ -140,21 +140,24 @@ type udpService struct {
140140
141141func (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