|  | @@ -74,6 +74,10 @@ func (v *ClientSession) EncodeRequestHeader(header *protocol.RequestHeader, writ
 | 
	
		
			
				|  |  |  	buffer = append(buffer, v.requestBodyKey...)
 | 
	
		
			
				|  |  |  	buffer = append(buffer, v.responseHeader, byte(header.Option))
 | 
	
		
			
				|  |  |  	padingLen := dice.Roll(16)
 | 
	
		
			
				|  |  | +	if header.Security.Is(protocol.SecurityType_LEGACY) {
 | 
	
		
			
				|  |  | +		// Disable padding in legacy mode for a smooth transition.
 | 
	
		
			
				|  |  | +		padingLen = 0
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  	security := byte(padingLen<<4) | byte(header.Security)
 | 
	
		
			
				|  |  |  	buffer = append(buffer, security, byte(0), byte(header.Command))
 | 
	
		
			
				|  |  |  	buffer = header.Port.Bytes(buffer)
 | 
	
	
		
			
				|  | @@ -90,9 +94,11 @@ func (v *ClientSession) EncodeRequestHeader(header *protocol.RequestHeader, writ
 | 
	
		
			
				|  |  |  		buffer = append(buffer, header.Address.Domain()...)
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	pading := make([]byte, padingLen)
 | 
	
		
			
				|  |  | -	rand.Read(pading)
 | 
	
		
			
				|  |  | -	buffer = append(buffer, pading...)
 | 
	
		
			
				|  |  | +	if padingLen > 0 {
 | 
	
		
			
				|  |  | +		pading := make([]byte, padingLen)
 | 
	
		
			
				|  |  | +		rand.Read(pading)
 | 
	
		
			
				|  |  | +		buffer = append(buffer, pading...)
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	fnv1a := fnv.New32a()
 | 
	
		
			
				|  |  |  	fnv1a.Write(buffer)
 |