| 
					
				 | 
			
			
				@@ -86,6 +86,7 @@ type AuthenticationReader struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	auth         Authenticator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	reader       *buf.BufferedReader 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	sizeParser   ChunkSizeDecoder 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	sizeBytes    []byte 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	transferType protocol.TransferType 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	padding      PaddingLengthGenerator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	size         uint16 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -95,13 +96,20 @@ type AuthenticationReader struct { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func NewAuthenticationReader(auth Authenticator, sizeParser ChunkSizeDecoder, reader io.Reader, transferType protocol.TransferType, paddingLen PaddingLengthGenerator) *AuthenticationReader { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	return &AuthenticationReader{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	r := &AuthenticationReader{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		auth:         auth, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		reader:       &buf.BufferedReader{Reader: buf.NewReader(reader)}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		sizeParser:   sizeParser, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		transferType: transferType, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		padding:      paddingLen, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sizeBytes:    make([]byte, sizeParser.SizeBytes()), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if breader, ok := reader.(*buf.BufferedReader); ok { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		breader.Direct = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		r.reader = breader 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		r.reader = &buf.BufferedReader{Reader: buf.NewReader(reader)} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	return r 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func (r *AuthenticationReader) readSize() (uint16, uint16, error) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -109,15 +117,14 @@ func (r *AuthenticationReader) readSize() (uint16, uint16, error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		r.hasSize = false 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return r.size, r.paddingLen, nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	sizeBytes := make([]byte, r.sizeParser.SizeBytes()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if _, err := io.ReadFull(r.reader, sizeBytes); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if _, err := io.ReadFull(r.reader, r.sizeBytes); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		return 0, 0, err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	var padding uint16 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if r.padding != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		padding = r.padding.NextPaddingLen() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	size, err := r.sizeParser.Decode(sizeBytes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	size, err := r.sizeParser.Decode(r.sizeBytes) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return size, padding, err 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |