mirror of https://github.com/XTLS/Xray-core
				
				
				
			fix: correct the logic of converting SocksAddr into net.Destination.
							parent
							
								
									7aeca33729
								
							
						
					
					
						commit
						b68a43f4fc
					
				|  | @ -18,19 +18,25 @@ func ToNetwork(network string) net.Network { | |||
| } | ||||
| 
 | ||||
| func ToDestination(socksaddr M.Socksaddr, network net.Network) net.Destination { | ||||
| 	// IsFqdn() implicitly checks if the domain name is valid
 | ||||
| 	if socksaddr.IsFqdn() { | ||||
| 		return net.Destination{ | ||||
| 			Network: network, | ||||
| 			Address: net.DomainAddress(socksaddr.Fqdn), | ||||
| 			Port:    net.Port(socksaddr.Port), | ||||
| 		} | ||||
| 	} else { | ||||
| 	} | ||||
| 
 | ||||
| 	// IsIP() implicitly checks if the IP address is valid
 | ||||
| 	if socksaddr.IsIP() { | ||||
| 		return net.Destination{ | ||||
| 			Network: network, | ||||
| 			Address: net.IPAddress(socksaddr.Addr.AsSlice()), | ||||
| 			Port:    net.Port(socksaddr.Port), | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return net.Destination{} | ||||
| } | ||||
| 
 | ||||
| func ToSocksaddr(destination net.Destination) M.Socksaddr { | ||||
|  |  | |||
|  | @ -204,7 +204,12 @@ func (i *MultiUserInbound) NewConnection(ctx context.Context, conn net.Conn, met | |||
| 	}) | ||||
| 	newError("tunnelling request to tcp:", metadata.Destination).WriteToLog(session.ExportIDToError(ctx)) | ||||
| 	dispatcher := session.DispatcherFromContext(ctx) | ||||
| 	link, err := dispatcher.Dispatch(ctx, singbridge.ToDestination(metadata.Destination, net.Network_TCP)) | ||||
| 	destination := singbridge.ToDestination(metadata.Destination, net.Network_TCP) | ||||
| 	if !destination.IsValid() { | ||||
| 		return newError("invalid destination") | ||||
| 	} | ||||
| 
 | ||||
| 	link, err := dispatcher.Dispatch(ctx, destination) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 cty123
						cty123