|  | @@ -147,20 +147,26 @@ func transferResponse(session *encoding.ServerSession, request *protocol.Request
 | 
											
												
													
														|  |  	bodyWriter := session.EncodeResponseBody(request, output)
 |  |  	bodyWriter := session.EncodeResponseBody(request, output)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	// Optimize for small response packet
 |  |  	// Optimize for small response packet
 | 
											
												
													
														|  | -	if data, err := input.Read(); err == nil {
 |  | 
 | 
											
												
													
														|  | -		if err := bodyWriter.Write(data); err != nil {
 |  | 
 | 
											
												
													
														|  | -			return err
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | 
 |  | +	data, err := input.Read()
 | 
											
												
													
														|  | 
 |  | +	if err != nil {
 | 
											
												
													
														|  | 
 |  | +		return err
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -		if bufferedWriter, ok := output.(*bufio.BufferedWriter); ok {
 |  | 
 | 
											
												
													
														|  | -			bufferedWriter.SetBuffered(false)
 |  | 
 | 
											
												
													
														|  | -		}
 |  | 
 | 
											
												
													
														|  | 
 |  | +	if err := bodyWriter.Write(data); err != nil {
 | 
											
												
													
														|  | 
 |  | +		return err
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +	data.Release()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -		if err := buf.PipeUntilEOF(input, bodyWriter); err != nil {
 |  | 
 | 
											
												
													
														|  | 
 |  | +	if bufferedWriter, ok := output.(*bufio.BufferedWriter); ok {
 | 
											
												
													
														|  | 
 |  | +		if err := bufferedWriter.SetBuffered(false); err != nil {
 | 
											
												
													
														|  |  			return err
 |  |  			return err
 | 
											
												
													
														|  |  		}
 |  |  		}
 | 
											
												
													
														|  |  	}
 |  |  	}
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +	if err := buf.PipeUntilEOF(input, bodyWriter); err != nil {
 | 
											
												
													
														|  | 
 |  | +		return err
 | 
											
												
													
														|  | 
 |  | +	}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |  	if request.Option.Has(protocol.RequestOptionChunkStream) {
 |  |  	if request.Option.Has(protocol.RequestOptionChunkStream) {
 | 
											
												
													
														|  |  		if err := bodyWriter.Write(buf.NewLocal(8)); err != nil {
 |  |  		if err := bodyWriter.Write(buf.NewLocal(8)); err != nil {
 | 
											
												
													
														|  |  			return err
 |  |  			return err
 |