|  | @@ -56,19 +56,21 @@ func ReadTCPSession(user *protocol.User, reader io.Reader) (*protocol.RequestHea
 | 
	
		
			
				|  |  |  		return nil, nil, newError("failed to read address type").Base(err)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	addrType := (buffer.Byte(0) & 0x0F)
 | 
	
		
			
				|  |  | -	if (buffer.Byte(0) & 0x10) == 0x10 {
 | 
	
		
			
				|  |  | -		request.Option.Set(RequestOptionOneTimeAuth)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +	if !account.Cipher.IsAEAD() {
 | 
	
		
			
				|  |  | +		if (buffer.Byte(0) & 0x10) == 0x10 {
 | 
	
		
			
				|  |  | +			request.Option.Set(RequestOptionOneTimeAuth)
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if request.Option.Has(RequestOptionOneTimeAuth) && (account.OneTimeAuth == Account_Disabled || account.Cipher.IsAEAD()) {
 | 
	
		
			
				|  |  | -		return nil, nil, newError("rejecting connection with OTA enabled, while server disables OTA")
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +		if request.Option.Has(RequestOptionOneTimeAuth) && account.OneTimeAuth == Account_Disabled {
 | 
	
		
			
				|  |  | +			return nil, nil, newError("rejecting connection with OTA enabled, while server disables OTA")
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	if !account.Cipher.IsAEAD() && !request.Option.Has(RequestOptionOneTimeAuth) && account.OneTimeAuth == Account_Enabled {
 | 
	
		
			
				|  |  | -		return nil, nil, newError("rejecting connection with OTA disabled, while server enables OTA")
 | 
	
		
			
				|  |  | +		if !request.Option.Has(RequestOptionOneTimeAuth) && account.OneTimeAuth == Account_Enabled {
 | 
	
		
			
				|  |  | +			return nil, nil, newError("rejecting connection with OTA disabled, while server enables OTA")
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	addrType := (buffer.Byte(0) & 0x0F)
 | 
	
		
			
				|  |  |  	switch addrType {
 | 
	
		
			
				|  |  |  	case AddrTypeIPv4:
 | 
	
		
			
				|  |  |  		if err := buffer.AppendSupplier(buf.ReadFullFrom(reader, 4)); err != nil {
 |