|  | @@ -82,13 +82,6 @@ type Handler struct {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // New creates a new VMess inbound handler.
 | 
	
		
			
				|  |  |  func New(ctx context.Context, config *Config) (*Handler, error) {
 | 
	
		
			
				|  |  | -	allowedClients := vmess.NewTimedUserValidator(ctx, protocol.DefaultIDHash)
 | 
	
		
			
				|  |  | -	for _, user := range config.User {
 | 
	
		
			
				|  |  | -		if err := allowedClients.Add(user); err != nil {
 | 
	
		
			
				|  |  | -			return nil, newError("failed to initiate user").Base(err)
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	v := core.FromContext(ctx)
 | 
	
		
			
				|  |  |  	if v == nil {
 | 
	
		
			
				|  |  |  		return nil, newError("V is not in context.")
 | 
	
	
		
			
				|  | @@ -97,12 +90,18 @@ func New(ctx context.Context, config *Config) (*Handler, error) {
 | 
	
		
			
				|  |  |  	handler := &Handler{
 | 
	
		
			
				|  |  |  		policyManager:         v.PolicyManager(),
 | 
	
		
			
				|  |  |  		inboundHandlerManager: v.InboundHandlerManager(),
 | 
	
		
			
				|  |  | -		clients:               allowedClients,
 | 
	
		
			
				|  |  | +		clients:               vmess.NewTimedUserValidator(ctx, protocol.DefaultIDHash),
 | 
	
		
			
				|  |  |  		detours:               config.Detour,
 | 
	
		
			
				|  |  |  		usersByEmail:          newUserByEmail(config.User, config.GetDefaultValue()),
 | 
	
		
			
				|  |  |  		sessionHistory:        encoding.NewSessionHistory(ctx),
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	for _, user := range config.User {
 | 
	
		
			
				|  |  | +		if err := handler.AddUser(ctx, user); err != nil {
 | 
	
		
			
				|  |  | +			return nil, newError("failed to initiate user").Base(err)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	return handler, nil
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -121,6 +120,10 @@ func (h *Handler) GetUser(email string) *protocol.User {
 | 
	
		
			
				|  |  |  	return user
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +func (h *Handler) AddUser(ctx context.Context, user *protocol.User) error {
 | 
	
		
			
				|  |  | +	return h.clients.Add(user)
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  func transferRequest(timer signal.ActivityUpdater, session *encoding.ServerSession, request *protocol.RequestHeader, input io.Reader, output ray.OutputStream) error {
 | 
	
		
			
				|  |  |  	defer output.Close()
 | 
	
		
			
				|  |  |  
 |