| 
					
				 | 
			
			
				@@ -72,7 +72,7 @@ func (this *Shadowsocks) Listen(port v2net.Port) error { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func (this *Shadowsocks) handlerUDPPayload(payload *alloc.Buffer, dest v2net.Destination) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func (this *Shadowsocks) handlerUDPPayload(payload *alloc.Buffer, source v2net.Destination) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	defer payload.Release() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	iv := payload.Value[:this.config.Cipher.IVSize()] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -90,7 +90,9 @@ func (this *Shadowsocks) handlerUDPPayload(payload *alloc.Buffer, dest v2net.Des 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	packet := v2net.NewPacket(v2net.TCPDestination(request.Address, request.Port), request.UDPPayload, false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	dest := v2net.UDPDestination(request.Address, request.Port) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	log.Info("Shadowsocks: Tunnelling request to ", dest) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	packet := v2net.NewPacket(dest, request.UDPPayload, false) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	ray := this.space.PacketDispatcher().DispatchToOutbound(packet) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	close(ray.InboundInput()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -127,7 +129,7 @@ func (this *Shadowsocks) handlerUDPPayload(payload *alloc.Buffer, dest v2net.Des 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 			respAuth.Authenticate(response.Value, response.Value[this.config.Cipher.IVSize():]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		this.udpHub.WriteTo(response.Value, dest) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		this.udpHub.WriteTo(response.Value, source) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		response.Release() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |