|  | @@ -90,7 +90,7 @@ func (this *Server) Start() error {
 | 
	
		
			
				|  |  |  	this.tcpHub = tcpHub
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if this.config.UdpEnabled {
 | 
	
		
			
				|  |  | -		this.udpServer = udp.NewUDPServer(this.meta, this.packetDispatcher)
 | 
	
		
			
				|  |  | +		this.udpServer = udp.NewUDPServer(this.packetDispatcher)
 | 
	
		
			
				|  |  |  		udpHub, err := udp.ListenUDP(this.meta.Address, this.meta.Port, udp.ListenOption{Callback: this.handlerUDPPayload})
 | 
	
		
			
				|  |  |  		if err != nil {
 | 
	
		
			
				|  |  |  			log.Error("Shadowsocks: Failed to listen UDP on ", this.meta.Address, ":", this.meta.Port, ": ", err)
 | 
	
	
		
			
				|  | @@ -130,7 +130,7 @@ func (this *Server) handlerUDPPayload(payload *alloc.Buffer, session *proxy.Sess
 | 
	
		
			
				|  |  |  	log.Access(source, dest, log.AccessAccepted, "")
 | 
	
		
			
				|  |  |  	log.Info("Shadowsocks|Server: Tunnelling request to ", dest)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	this.udpServer.Dispatch(&proxy.SessionInfo{Source: source, Destination: dest, User: request.User}, data, func(destination v2net.Destination, payload *alloc.Buffer) {
 | 
	
		
			
				|  |  | +	this.udpServer.Dispatch(&proxy.SessionInfo{Source: source, Destination: dest, User: request.User, Inbound: this.meta}, data, func(destination v2net.Destination, payload *alloc.Buffer) {
 | 
	
		
			
				|  |  |  		defer payload.Release()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		data, err := EncodeUDPPacket(request, payload)
 | 
	
	
		
			
				|  | @@ -171,10 +171,11 @@ func (this *Server) handleConnection(conn internet.Connection) {
 | 
	
		
			
				|  |  |  	log.Access(conn.RemoteAddr(), dest, log.AccessAccepted, "")
 | 
	
		
			
				|  |  |  	log.Info("Shadowsocks|Server: Tunnelling request to ", dest)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	ray := this.packetDispatcher.DispatchToOutbound(this.meta, &proxy.SessionInfo{
 | 
	
		
			
				|  |  | +	ray := this.packetDispatcher.DispatchToOutbound(&proxy.SessionInfo{
 | 
	
		
			
				|  |  |  		Source:      v2net.DestinationFromAddr(conn.RemoteAddr()),
 | 
	
		
			
				|  |  |  		Destination: dest,
 | 
	
		
			
				|  |  |  		User:        request.User,
 | 
	
		
			
				|  |  | +		Inbound:     this.meta,
 | 
	
		
			
				|  |  |  	})
 | 
	
		
			
				|  |  |  	defer ray.InboundOutput().Release()
 | 
	
		
			
				|  |  |  
 |