mirror of
				https://github.com/nadoo/glider.git
				synced 2025-10-31 22:05:51 +08:00 
			
		
		
		
	fix(socks5): should not dial returned bind addr directly
When server returns an any ip (0.0.0.0 or [::0]), we should use conventional ip to replace the any ip given (0.0.0.0 or [::0]). This behaviour adapts to most situations. See v2fly/v2ray-core#523
This commit is contained in:
		
							parent
							
								
									226dd97d7d
								
							
						
					
					
						commit
						426291030a
					
				| @ -86,7 +86,17 @@ func (s *Socks5) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.A | |||||||
| 		return nil, nil, err | 		return nil, nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	pc, nextHop, err := s.dialer.DialUDP(network, uAddr.String()) | 	var uAddress string | ||||||
|  | 	h, p, _ := net.SplitHostPort(uAddr.String()) | ||||||
|  | 	// if returned bind ip is unspecified
 | ||||||
|  | 	if ip := net.ParseIP(h); ip != nil && ip.IsUnspecified() { | ||||||
|  | 		// indicate using conventional addr
 | ||||||
|  | 		uAddress = net.JoinHostPort(s.addr, p) | ||||||
|  | 	} else { | ||||||
|  | 		uAddress = uAddr.String() | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	pc, nextHop, err := s.dialer.DialUDP(network, uAddress) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.F("[socks5] dialudp to %s error: %s", uAddr.String(), err) | 		log.F("[socks5] dialudp to %s error: %s", uAddr.String(), err) | ||||||
| 		return nil, nil, err | 		return nil, nil, err | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 mzz2017
						mzz2017