Author: pmouawad
Date: Wed Oct 12 08:06:16 2016
New Revision: 1764397

URL: http://svn.apache.org/viewvc?rev=1764397&view=rev
Log:
Bug 53039 - HTTP Request : Be able to handle responses which size exceeds 
2147483647 bytes
Bugzilla Id: 53039

Modified:
    jmeter/trunk/bin/jmeter.properties
    jmeter/trunk/src/components/org/apache/jmeter/assertions/SMIMEAssertion.java
    jmeter/trunk/src/components/org/apache/jmeter/assertions/SizeAssertion.java
    
jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java
    
jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
    jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java
    jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java
    
jmeter/trunk/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java
    jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
    
jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java
    jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
    
jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
    jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java
    
jmeter/trunk/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPFileImpl.java
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
    
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
    jmeter/trunk/test/src/org/apache/jmeter/samplers/TestSampleResult.java
    jmeter/trunk/xdocs/changes.xml

Modified: jmeter/trunk/bin/jmeter.properties
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.properties?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/bin/jmeter.properties (original)
+++ jmeter/trunk/bin/jmeter.properties Wed Oct 12 08:06:16 2016
@@ -1036,6 +1036,16 @@ beanshell.server.file=../extras/startup.
 # Turn expert mode on/off: expert mode will show expert-mode beans and 
properties
 #jmeter.expertMode=true
 
+# Max size of bytes stored in memory per SampleResult
+# Ensure you don't exceed max capacity of a Java Array and remember 
+# that the higher it is, the higher JMeter will consume heap
+# Defaults to 10MB
+#httpsampler.max_bytes_to_store_per_request=10485760
+
+# Max size of buffer in bytes used when reading responses
+# Defaults to 64k
+#httpsampler.max_buffer_size=66560
+
 # Maximum redirects to follow in a single sequence (default 20)
 #httpsampler.max_redirects=20
 # Maximum frame/iframe nesting depth (default 5)

Modified: 
jmeter/trunk/src/components/org/apache/jmeter/assertions/SMIMEAssertion.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/assertions/SMIMEAssertion.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/components/org/apache/jmeter/assertions/SMIMEAssertion.java 
(original)
+++ 
jmeter/trunk/src/components/org/apache/jmeter/assertions/SMIMEAssertion.java 
Wed Oct 12 08:06:16 2016
@@ -302,7 +302,7 @@ class SMIMEAssertion {
 
         final SampleResult sampleResult = subResults[messageNumber];
         if (log.isDebugEnabled()) {
-            log.debug("Bytes: "+sampleResult.getBytes()+" CT: 
"+sampleResult.getContentType());
+            log.debug("Bytes: "+sampleResult.getBytesAsLong()+" CT: 
"+sampleResult.getContentType());
         }
         byte[] data = sampleResult.getResponseData();
         Session session = Session.getDefaultInstance(new Properties());

Modified: 
jmeter/trunk/src/components/org/apache/jmeter/assertions/SizeAssertion.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/assertions/SizeAssertion.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/src/components/org/apache/jmeter/assertions/SizeAssertion.java 
(original)
+++ jmeter/trunk/src/components/org/apache/jmeter/assertions/SizeAssertion.java 
Wed Oct 12 08:06:16 2016
@@ -79,7 +79,7 @@ public class SizeAssertion extends Abstr
             String variableName = getVariableName();
             String value = getThreadContext().getVariables().get(variableName);
             try {
-                resultSize = Integer.parseInt(value);
+                resultSize = Long.parseLong(value);
             } catch (NumberFormatException e) {
                 result.setFailure(true);
                 result.setFailureMessage("Error parsing variable name: 
"+variableName+" value: "+value);
@@ -88,13 +88,13 @@ public class SizeAssertion extends Abstr
         } else if (isTestFieldResponseHeaders()) {
             resultSize = response.getHeadersSize();
         }  else if (isTestFieldResponseBody()) {
-            resultSize = response.getBodySize();
+            resultSize = response.getBodySizeAsLong();
         } else if (isTestFieldResponseCode()) {
             resultSize = response.getResponseCode().length();
         } else if (isTestFieldResponseMessage()) {
             resultSize = response.getResponseMessage().length();
         } else {
-            resultSize = response.getBytes();
+            resultSize = response.getBytesAsLong();
         }
         // is the Sample the correct size?
         final String msg = compareSize(resultSize);

Modified: 
jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java 
(original)
+++ 
jmeter/trunk/src/components/org/apache/jmeter/visualizers/SamplerResultTab.java 
Wed Oct 12 08:06:16 2016
@@ -238,10 +238,10 @@ public abstract class SamplerResultTab i
                 
statsBuff.append(JMeterUtils.getResString("view_results_load_time")).append(sampleResult.getTime()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_connect_time")).append(sampleResult.getConnectTime()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_latency")).append(sampleResult.getLatency()).append(NL);
 //$NON-NLS-1$
-                
statsBuff.append(JMeterUtils.getResString("view_results_size_in_bytes")).append(sampleResult.getBytes()).append(NL);
 //$NON-NLS-1$
+                
statsBuff.append(JMeterUtils.getResString("view_results_size_in_bytes")).append(sampleResult.getBytesAsLong()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_sent_bytes")).append(sampleResult.getSentBytes()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_size_headers_in_bytes")).append(sampleResult.getHeadersSize()).append(NL);
 //$NON-NLS-1$
-                
statsBuff.append(JMeterUtils.getResString("view_results_size_body_in_bytes")).append(sampleResult.getBodySize()).append(NL);
 //$NON-NLS-1$
+                
statsBuff.append(JMeterUtils.getResString("view_results_size_body_in_bytes")).append(sampleResult.getBodySizeAsLong()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_sample_count")).append(sampleResult.getSampleCount()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_error_count")).append(sampleResult.getErrorCount()).append(NL);
 //$NON-NLS-1$
                 
statsBuff.append(JMeterUtils.getResString("view_results_datatype")).append(sampleResult.getDataType()).append(NL);
 //$NON-NLS-1$
@@ -298,10 +298,10 @@ public abstract class SamplerResultTab i
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_load_time"), 
sampleResult.getTime())); //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_connect_time"), 
sampleResult.getConnectTime())); //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_latency"), 
sampleResult.getLatency())); //$NON-NLS-1$
-                resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_size_in_bytes"), 
sampleResult.getBytes())); //$NON-NLS-1$
+                resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_size_in_bytes"), 
sampleResult.getBytesAsLong())); //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_sent_bytes"),sampleResult.getSentBytes()));
 //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_size_headers_in_bytes"), 
sampleResult.getHeadersSize())); //$NON-NLS-1$
-                resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_size_body_in_bytes"), 
sampleResult.getBodySize())); //$NON-NLS-1$
+                resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_size_body_in_bytes"), 
sampleResult.getBodySizeAsLong())); //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_sample_count"), 
sampleResult.getSampleCount())); //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_error_count"), 
sampleResult.getErrorCount())); //$NON-NLS-1$
                 resultModel.addRow(new 
RowResult(JMeterUtils.getParsedLabel("view_results_response_code"), 
responseCode)); //$NON-NLS-1$

Modified: 
jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java 
(original)
+++ 
jmeter/trunk/src/components/org/apache/jmeter/visualizers/TableVisualizer.java 
Wed Oct 12 08:06:16 2016
@@ -194,7 +194,7 @@ public class TableVisualizer extends Abs
                             res.getSampleLabel(),
                             res.getTime(),
                             res.isSuccessful(),
-                            res.getBytes(),
+                            res.getBytesAsLong(),
                             res.getSentBytes(),
                             res.getLatency(),
                             res.getConnectTime()

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java 
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/control/TransactionController.java 
Wed Oct 12 08:06:16 2016
@@ -321,7 +321,7 @@ public class TransactionController exten
             if(res != null && !se.isTransactionSampleEvent()) {
                 SampleResult sampleResult = se.getResult();
                 res.setThreadName(sampleResult.getThreadName());
-                res.setBytes(res.getBytes() + sampleResult.getBytes());
+                res.setBytes(res.getBytesAsLong() + 
sampleResult.getBytesAsLong());
                 res.setSentBytes(res.getSentBytes() + 
sampleResult.getSentBytes());
                 if (!isIncludeTimers()) {// Accumulate waiting time for later
                     pauseTime += sampleResult.getEndTime() - 
sampleResult.getTime() - prevEndTime;

Modified: jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/report/core/Sample.java Wed Oct 12 
08:06:16 2016
@@ -260,8 +260,8 @@ public class Sample {
      *
      * @return the number of received bytes stored in the sample
      */
-    public int getReceivedBytes() {
-        return getData(int.class, CSVSaveService.CSV_BYTES).intValue();
+    public long getReceivedBytes() {
+        return getData(long.class, CSVSaveService.CSV_BYTES).longValue();
     }
 
     /**

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java 
(original)
+++ 
jmeter/trunk/src/core/org/apache/jmeter/samplers/DataStrippingSampleSender.java 
Wed Oct 12 08:06:16 2016
@@ -117,7 +117,7 @@ public class DataStrippingSampleSender e
      * @param result {@link SampleResult}
      */
     private void stripResponse(SampleResult result) {
-        result.setBytes(result.getBytes());
+        result.setBytes(result.getBytesAsLong());
         result.setResponseData(SampleResult.EMPTY_BA);
     }
 

Modified: jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java 
(original)
+++ jmeter/trunk/src/core/org/apache/jmeter/samplers/SampleResult.java Wed Oct 
12 08:06:16 2016
@@ -210,11 +210,11 @@ public class SampleResult implements Ser
 
     private int sampleCount = 1;
 
-    private int bytes = 0; // Allows override of sample size in case sampler 
does not want to store all the data
+    private long bytes = 0; // Allows override of sample size in case sampler 
does not want to store all the data
     
     private int headersSize = 0;
     
-    private int bodySize = 0;
+    private long bodySize = 0;
 
     /** Currently active threads in this thread group */
     private volatile int groupThreads = 0;
@@ -267,7 +267,7 @@ public class SampleResult implements Ser
      * Cache for responseData as string to avoid multiple computations
      */
     private volatile transient String responseDataAsString;
-
+    
     private long sentBytes;
 
     private long initOffset(){
@@ -613,10 +613,10 @@ public class SampleResult implements Ser
         // Extend the time to the end of the added sample
         setEndTime(Math.max(getEndTime(), subResult.getEndTime() + 
nanoTimeOffset - subResult.nanoTimeOffset)); // Bug 51855
         // Include the byte count for the added sample
-        setBytes(getBytes() + subResult.getBytes());
+        setBytes(getBytesAsLong() + subResult.getBytesAsLong());
         setSentBytes(getSentBytes() + subResult.getSentBytes());
         setHeadersSize(getHeadersSize() + subResult.getHeadersSize());
-        setBodySize(getBodySize() + subResult.getBodySize());
+        setBodySize(getBodySizeAsLong() + subResult.getBodySizeAsLong());
         addRawSubResult(subResult);
     }
     
@@ -1186,6 +1186,7 @@ public class SampleResult implements Ser
      * errors in remote statistical batch mode.
      *
      */
+    
     /**
      * In the event the sampler does want to pass back the actual contents, we
      * still want to calculate the throughput. The bytes are the bytes of the
@@ -1194,10 +1195,24 @@ public class SampleResult implements Ser
      * @param length
      *            the number of bytes of the response data for this sample
      */
-    public void setBytes(int length) {
+    public void setBytes(long length) {
         bytes = length;
     }
-
+    
+    /**
+     * In the event the sampler does want to pass back the actual contents, we
+     * still want to calculate the throughput. The bytes are the bytes of the
+     * response data.
+     *
+     * @param length
+     *            the number of bytes of the response data for this sample
+     * @deprecated use setBytes(long)
+     */
+    @Deprecated 
+    public void setBytes(int length) {
+        setBytes((long) length);
+    }
+    
     /**
      * 
      * @param sentBytesCount long sent bytes
@@ -1217,15 +1232,26 @@ public class SampleResult implements Ser
      * return the bytes returned by the response.
      *
      * @return byte count
+     * @deprecated use getBytesAsLong 
      */
+    @Deprecated
     public int getBytes() {
+        return (int) getBytesAsLong();
+    }
+
+    /**
+     * return the bytes returned by the response.
+     *
+     * @return byte count
+     */
+    public long getBytesAsLong() {
         if (GETBYTES_NETWORK_SIZE) {
-            int tmpSum = this.getHeadersSize() + this.getBodySize();
+            long tmpSum = this.getHeadersSize() + this.getBodySizeAsLong();
             return tmpSum == 0 ? bytes : tmpSum;
         } else if (GETBYTES_HEADERS_SIZE) {
             return this.getHeadersSize();
         } else if (GETBYTES_BODY_REALSIZE) {
-            return this.getBodySize();
+            return this.getBodySizeAsLong();
         }
         return bytes == 0 ? responseData.length : bytes;
     }
@@ -1383,14 +1409,22 @@ public class SampleResult implements Ser
     /**
      * @return the body size in bytes
      */
+    @Deprecated
     public int getBodySize() {
+        return (int) getBodySizeAsLong();
+    }
+    
+    /**
+     * @return the body size in bytes
+     */
+    public long getBodySizeAsLong() {
         return bodySize == 0 ? responseData.length : bodySize;
     }
 
     /**
      * @param bodySize the body size to set
      */
-    public void setBodySize(int bodySize) {
+    public void setBodySize(long bodySize) {
         this.bodySize = bodySize;
     }
 

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java 
(original)
+++ 
jmeter/trunk/src/core/org/apache/jmeter/samplers/StatisticalSampleResult.java 
Wed Oct 12 08:06:16 2016
@@ -72,7 +72,7 @@ public class StatisticalSampleResult ext
         // Add Sample Counter
         setSampleCount(getSampleCount() + res.getSampleCount());
 
-        setBytes(getBytes() + res.getBytes());
+        setBytes(getBytesAsLong() + res.getBytesAsLong());
         setSentBytes(getSentBytes() + res.getSentBytes());
 
         // Add Error Counter

Modified: jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java Wed Oct 12 
08:06:16 2016
@@ -299,9 +299,9 @@ public final class CSVSaveService {
             if (saveConfig.saveBytes()) {
                 field = CSV_BYTES;
                 text = parts[i++];
-                result.setBytes(Integer.parseInt(text));
+                result.setBytes(Long.parseLong(text));
             }
-            
+
             if (saveConfig.saveSentBytes()) {
                 field = CSV_SENT_BYTES;
                 text = parts[i++];
@@ -453,7 +453,7 @@ public final class CSVSaveService {
             text.append(CSV_BYTES);
             text.append(delim);
         }
-        
+
         if (saveConfig.saveSentBytes()) {
             text.append(CSV_SENT_BYTES);
             text.append(delim);
@@ -936,9 +936,9 @@ public final class CSVSaveService {
         }
 
         if (saveConfig.saveBytes()) {
-            text.append(sample.getBytes());
+            text.append(sample.getBytesAsLong());
         }
-        
+
         if (saveConfig.saveSentBytes()) {
             text.append(sample.getSentBytes());
         }

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
 (original)
+++ 
jmeter/trunk/src/core/org/apache/jmeter/save/converters/SampleResultConverter.java
 Wed Oct 12 08:06:16 2016
@@ -320,7 +320,7 @@ public class SampleResultConverter exten
             writer.addAttribute(ATT_DATA_ENCODING, 
ConversionHelp.encode(res.getDataEncodingNoDefault()));
         }
         if (save.saveBytes()) {
-            writer.addAttribute(ATT_BYTES, String.valueOf(res.getBytes()));
+            writer.addAttribute(ATT_BYTES, 
String.valueOf(res.getBytesAsLong()));
         }
         if (save.saveSentBytes()) {
             writer.addAttribute(ATT_SENT_BYTES, 
String.valueOf(res.getSentBytes()));
@@ -449,7 +449,7 @@ public class SampleResultConverter exten
         res.setIdleTime(Converter.getLong(reader.getAttribute(ATT_IDLETIME)));
         res.setLatency(Converter.getLong(reader.getAttribute(ATT_LATENCY)));
         
res.setConnectTime(Converter.getLong(reader.getAttribute(ATT_CONNECT_TIME)));
-        res.setBytes(Converter.getInt(reader.getAttribute(ATT_BYTES)));
+        res.setBytes(Converter.getLong(reader.getAttribute(ATT_BYTES)));
         
res.setSentBytes(Converter.getLong(reader.getAttribute(ATT_SENT_BYTES)));
         
res.setSampleCount(Converter.getInt(reader.getAttribute(ATT_SAMPLE_COUNT),1)); 
// default is 1
         
res.setErrorCount(Converter.getInt(reader.getAttribute(ATT_ERROR_COUNT),0)); // 
default is 0
@@ -461,7 +461,7 @@ public class SampleResultConverter exten
         File in = new File(resultFileName);
         try (FileInputStream fis = new FileInputStream(in);
                 BufferedInputStream bis = new BufferedInputStream(fis)){
-            ByteArrayOutputStream outstream = new 
ByteArrayOutputStream(res.getBytes());
+            ByteArrayOutputStream outstream = new ByteArrayOutputStream(4096);
             byte[] buffer = new byte[4096];
             int len;
             while ((len = bis.read(buffer)) > 0) {
@@ -474,7 +474,6 @@ public class SampleResultConverter exten
         } 
     }
 
-
     /**
      * @param arg0 the mapper
      */

Modified: jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java (original)
+++ jmeter/trunk/src/core/org/apache/jmeter/util/Calculator.java Wed Oct 12 
08:06:16 2016
@@ -110,7 +110,7 @@ public class Calculator {
      * @param res the sample result; might represent multiple values
      */
     public void addSample(SampleResult res) {
-        addBytes(res.getBytes());
+        addBytes(res.getBytesAsLong());
         addValue(res.getTime(),res.getSampleCount());
         errors+=res.getErrorCount(); // account for multiple samples
         if (startTime == 0){ // not yet intialised

Modified: 
jmeter/trunk/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java 
(original)
+++ 
jmeter/trunk/src/core/org/apache/jmeter/visualizers/SamplingStatCalculator.java 
Wed Oct 12 08:06:16 2016
@@ -157,7 +157,7 @@ public class SamplingStatCalculator {
         boolean rbool;
         synchronized (calculator) {
             calculator.addValue(res.getTime(), res.getSampleCount());
-            calculator.addBytes(res.getBytes());
+            calculator.addBytes(res.getBytesAsLong());
             setStartTime(res);
             eCount = getCurrentSample().getErrorCount();
             eCount += res.getErrorCount();

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPAbstractImpl.java
 Wed Oct 12 08:06:16 2016
@@ -395,7 +395,7 @@ public abstract class HTTPAbstractImpl i
      * Closes the inputStream
      * <p>
      * Invokes
-     * {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, int)}
+     * {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, long)}
      * 
      * @param res
      *            sample to store information about the response into
@@ -409,6 +409,32 @@ public abstract class HTTPAbstractImpl i
      */
     protected byte[] readResponse(SampleResult res, InputStream instream,
             int responseContentLength) throws IOException {
+        return readResponse(res, instream, (long)responseContentLength);
+    }
+    /**
+     * Read response from the input stream, converting to MD5 digest if the
+     * useMD5 property is set.
+     * <p>
+     * For the MD5 case, the result byte count is set to the size of the
+     * original response.
+     * <p>
+     * Closes the inputStream
+     * <p>
+     * Invokes
+     * {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, long)}
+     * 
+     * @param res
+     *            sample to store information about the response into
+     * @param instream
+     *            input stream from which to read the response
+     * @param responseContentLength
+     *            expected input length or zero
+     * @return the response or the MD5 of the response
+     * @throws IOException
+     *             if reading the result fails
+     */
+    protected byte[] readResponse(SampleResult res, InputStream instream,
+            long responseContentLength) throws IOException {
         return testElement.readResponse(res, instream, responseContentLength);
     }
 
@@ -421,7 +447,7 @@ public abstract class HTTPAbstractImpl i
      * <p>
      * Closes the inputStream
      * <p>
-     * Invokes {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, 
int)}
+     * Invokes {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, 
long)}
      * 
      * @param res
      *            sample to store information about the response into
@@ -432,11 +458,39 @@ public abstract class HTTPAbstractImpl i
      * @return the response or the MD5 of the response
      * @throws IOException
      *             when reading the result fails
+     * @deprecated use {@link HTTPAbstractImpl#readResponse(SampleResult, 
BufferedInputStream, long)
      */
+    @Deprecated
     protected byte[] readResponse(SampleResult res, BufferedInputStream in,
             int contentLength) throws IOException {
         return testElement.readResponse(res, in, contentLength);
     }
+    
+    /**
+     * Read response from the input stream, converting to MD5 digest if the
+     * useMD5 property is set.
+     * <p>
+     * For the MD5 case, the result byte count is set to the size of the
+     * original response.
+     * <p>
+     * Closes the inputStream
+     * <p>
+     * Invokes {@link HTTPSamplerBase#readResponse(SampleResult, InputStream, 
long)}
+     * 
+     * @param res
+     *            sample to store information about the response into
+     * @param in
+     *            input stream from which to read the response
+     * @param contentLength
+     *            expected input length or zero
+     * @return the response or the MD5 of the response
+     * @throws IOException
+     *             when reading the result fails
+     */
+    protected byte[] readResponse(SampleResult res, BufferedInputStream in,
+            long contentLength) throws IOException {
+        return testElement.readResponse(res, in, contentLength);
+    }
 
     /**
      * Follow redirects and download page resources if appropriate. this works,

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPFileImpl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPFileImpl.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPFileImpl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPFileImpl.java
 Wed Oct 12 08:06:16 2016
@@ -26,11 +26,14 @@ import java.net.URLConnection;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.jmeter.protocol.http.util.HTTPConstants;
+import org.apache.jmeter.util.JMeterUtils;
 
 /**
  * HTTP Sampler which can read from file: URLs
  */
 public class HTTPFileImpl extends HTTPAbstractImpl {
+    private static final int MAX_BYTES_TO_STORE_PER_REQUEST =
+            
JMeterUtils.getPropDefault("httpsampler.max_bytes_to_store_per_request", 10 * 
1024 *1024); // $NON-NLS-1$ // default value: 10MB
 
     protected HTTPFileImpl(HTTPSamplerBase base) {
         super(base);
@@ -51,13 +54,24 @@ public class HTTPFileImpl extends HTTPAb
         res.setSampleLabel(url.toString());
         InputStream is = null;
         res.sampleStart();
-        try {
+        int bufferSize = 4096;
+        try ( org.apache.commons.io.output.ByteArrayOutputStream bos = new 
org.apache.commons.io.output.ByteArrayOutputStream(bufferSize) ) {
             byte[] responseData;
             URLConnection conn = url.openConnection();
             is = conn.getInputStream();
-            responseData = IOUtils.toByteArray(is);
+            byte[] readBuffer = new byte[bufferSize];
+            int bytesReadInBuffer = 0;
+            long totalBytes = 0;
+            while ((bytesReadInBuffer = is.read(readBuffer)) > -1) {
+                
if(totalBytes+bytesReadInBuffer<=MAX_BYTES_TO_STORE_PER_REQUEST) {
+                    bos.write(readBuffer, 0, bytesReadInBuffer);
+                }
+                totalBytes += bytesReadInBuffer;
+            }
+            responseData = bos.toByteArray();
             res.sampleEnd();
             res.setResponseData(responseData);
+            res.setBodySize(totalBytes);
             res.setResponseCodeOK();
             res.setResponseMessageOK();
             res.setSuccessful(true);

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC3Impl.java
 Wed Oct 12 08:06:16 2016
@@ -285,9 +285,9 @@ public class HTTPHC3Impl extends HTTPHCA
                     Header responseHeader = 
httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_ENCODING);
                     if (responseHeader!= null && 
HTTPConstants.ENCODING_GZIP.equals(responseHeader.getValue())) {
                         InputStream tmpInput = new GZIPInputStream(instream); 
// tmp inputstream needs to have a good counting
-                        res.setResponseData(readResponse(res, tmpInput, (int) 
httpMethod.getResponseContentLength()));                        
+                        res.setResponseData(readResponse(res, tmpInput, 
httpMethod.getResponseContentLength()));                        
                     } else {
-                        res.setResponseData(readResponse(res, instream, (int) 
httpMethod.getResponseContentLength()));
+                        res.setResponseData(readResponse(res, instream, 
httpMethod.getResponseContentLength()));
                     }
                 } finally {
                     JOrphanUtils.closeQuietly(instream);
@@ -328,12 +328,12 @@ public class HTTPHC3Impl extends HTTPHCA
 
             // record some sizes to allow HTTPSampleResult.getBytes() with 
different options
             if (instream != null) {
-                res.setBodySize(((CountingInputStream) instream).getCount());
+                res.setBodySize(((CountingInputStream) 
instream).getByteCount());
             }
             res.setHeadersSize(calculateHeadersSize(httpMethod));
             if (log.isDebugEnabled()) {
-                log.debug("Response headersSize=" + res.getHeadersSize() + " 
bodySize=" + res.getBodySize()
-                        + " Total=" + (res.getHeadersSize() + 
res.getBodySize()));
+                log.debug("Response headersSize=" + res.getHeadersSize() + " 
bodySize=" + res.getBodySizeAsLong()
+                        + " Total=" + (res.getHeadersSize() + 
res.getBodySizeAsLong()));
             }
             
             // If we redirected automatically, the URL may have changed

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPHC4Impl.java
 Wed Oct 12 08:06:16 2016
@@ -406,7 +406,7 @@ public class HTTPHC4Impl extends HTTPHCA
             }
             HttpEntity entity = httpResponse.getEntity();
             if (entity != null) {
-                res.setResponseData(readResponse(res, entity.getContent(), 
(int) entity.getContentLength()));
+                res.setResponseData(readResponse(res, entity.getContent(), 
entity.getContentLength()));
             }
             
             res.sampleEnd(); // Done with the sampling proper.
@@ -437,12 +437,12 @@ public class HTTPHC4Impl extends HTTPHCA
               + 1 // Add \r for initial header
               + 2; // final \r\n before data
             long totalBytes = metrics.getReceivedBytesCount();
-            res.setHeadersSize((int) headerBytes);
-            res.setBodySize((int)(totalBytes - headerBytes));
+            res.setHeadersSize((int)headerBytes);
+            res.setBodySize(totalBytes - headerBytes);
             res.setSentBytes(metrics.getSentBytesCount());
             if (log.isDebugEnabled()) {
-                log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " 
Content-Length=" + res.getBodySize()
-                        + " Total=" + (res.getHeadersSize() + 
res.getBodySize()));
+                log.debug("ResponseHeadersSize=" + res.getHeadersSize() + " 
Content-Length=" + res.getBodySizeAsLong()
+                        + " Total=" + (res.getHeadersSize() + 
res.getBodySizeAsLong()));
             }
 
             // If we redirected automatically, the URL may have changed

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPJavaImpl.java
 Wed Oct 12 08:06:16 2016
@@ -223,7 +223,7 @@ public class HTTPJavaImpl extends HTTPAb
     protected byte[] readResponse(HttpURLConnection conn, SampleResult res) 
throws IOException {
         BufferedInputStream in;
 
-        final int contentLength = conn.getContentLength();
+        final long contentLength = conn.getContentLength();
         if ((contentLength == 0)
             && OBEY_CONTENT_LENGTH) {
             log.info("Content-Length: 0, not reading http-body");
@@ -284,7 +284,7 @@ public class HTTPJavaImpl extends HTTPAb
         // N.B. this closes 'in'
         byte[] responseData = readResponse(res, in, contentLength);
         if (instream != null) {
-            res.setBodySize(((CountingInputStream) instream).getCount());
+            res.setBodySize(((CountingInputStream) instream).getByteCount());
             instream.close();
         }
         return responseData;
@@ -566,8 +566,8 @@ public class HTTPJavaImpl extends HTTPAb
             res.setHeadersSize(responseHeaders.replaceAll("\n", "\r\n") // 
$NON-NLS-1$ $NON-NLS-2$
                     .length() + 2); // add 2 for a '\r\n' at end of headers 
(before data) 
             if (log.isDebugEnabled()) {
-                log.debug("Response headersSize=" + res.getHeadersSize() + " 
bodySize=" + res.getBodySize()
-                        + " Total=" + (res.getHeadersSize() + 
res.getBodySize()));
+                log.debug("Response headersSize=" + res.getHeadersSize() + " 
bodySize=" + res.getBodySizeAsLong()
+                        + " Total=" + (res.getHeadersSize() + 
res.getBodySizeAsLong()));
             }
             
             // If we redirected automatically, the URL may have changed

Modified: 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
 (original)
+++ 
jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
 Wed Oct 12 08:06:16 2016
@@ -189,6 +189,12 @@ public abstract class HTTPSamplerBase ex
 
     public static final boolean BROWSER_COMPATIBLE_MULTIPART_MODE_DEFAULT = 
false; // The default setting to be used (i.e. historic)
 
+    private static final int MAX_BYTES_TO_STORE_PER_REQUEST =
+            
JMeterUtils.getPropDefault("httpsampler.max_bytes_to_store_per_request", 10 * 
1024 *1024); // $NON-NLS-1$ // default value: 10MB
+
+    private static final int MAX_BUFFER_SIZE = 
+            JMeterUtils.getPropDefault("httpsampler.max_buffer_size", 65 * 
1024); // $NON-NLS-1$
+
     private static final boolean IGNORE_FAILED_EMBEDDED_RESOURCES =
             
JMeterUtils.getPropDefault("httpsampler.ignore_failed_embedded_resources", 
false); // $NON-NLS-1$ // default value: false
 
@@ -926,6 +932,7 @@ public abstract class HTTPSamplerBase ex
     private static final boolean SEPARATE_CONTAINER =
             JMeterUtils.getPropDefault("httpsampler.separate.container", 
true); // $NON-NLS-1$
 
+
     /**
      * Get the URL, built from its component parts.
      *
@@ -1757,7 +1764,7 @@ public abstract class HTTPSamplerBase ex
      * @return the response or the MD5 of the response
      * @throws IOException if reading the result fails
      */
-    public byte[] readResponse(SampleResult sampleResult, InputStream in, int 
length) throws IOException {
+    public byte[] readResponse(SampleResult sampleResult, InputStream in, long 
length) throws IOException {
         
         OutputStream w = null;
         try {
@@ -1776,34 +1783,36 @@ public abstract class HTTPSamplerBase ex
                 if (!knownResponseLength) {
                     bufferSize = 4 * 1024;
                 } else {
-                    bufferSize = length;
+                    bufferSize = (int) Math.min(MAX_BUFFER_SIZE, length);
                 }
             }
             
             
-            int bytesRead = 0;
-            int totalBytes = 0;
+            int bytesReadInBuffer = 0;
+            long totalBytes = 0;
             boolean first = true;
-            while ((bytesRead = in.read(readBuffer)) > -1) {
+            while ((bytesReadInBuffer = in.read(readBuffer)) > -1) {
                 if (first) {
                     sampleResult.latencyEnd();
                     first = false;
                     if(md == null) {
-                        if(knownResponseLength) {
-                            w = new 
DirectAccessByteArrayOutputStream(bufferSize);
+                        if(!knownResponseLength) {
+                            w = new 
org.apache.commons.io.output.ByteArrayOutputStream(bufferSize);
                         }
                         else {
-                            w = new 
org.apache.commons.io.output.ByteArrayOutputStream(bufferSize);
+                            w = new 
DirectAccessByteArrayOutputStream(bufferSize);
                         }
                     }
                 }
                 
                 if (md == null) {
-                    w.write(readBuffer, 0, bytesRead);
+                    
if(totalBytes+bytesReadInBuffer<=MAX_BYTES_TO_STORE_PER_REQUEST) {
+                        w.write(readBuffer, 0, bytesReadInBuffer);
+                    } 
                 } else {
-                    md.update(readBuffer, 0, bytesRead);
-                    totalBytes += bytesRead;
+                    md.update(readBuffer, 0, bytesReadInBuffer);
                 }
+                totalBytes += bytesReadInBuffer;
             }
             
             if (first) { // Bug 46838 - if there was no data, still need to 
set latency
@@ -1811,13 +1820,14 @@ public abstract class HTTPSamplerBase ex
                 return new byte[0];
             }
             
-            if (md != null) {
+            if (md == null) {
+                return toByteArray(w);
+            } else {
                 byte[] md5Result = md.digest();
                 sampleResult.setBytes(totalBytes);
-                return JOrphanUtils.baToHexBytes(md5Result);
+                return JOrphanUtils.baToHexBytes(md5Result);                
             }
             
-            return toByteArray(w);
         } finally {
             IOUtils.closeQuietly(in);
             IOUtils.closeQuietly(w);

Modified: jmeter/trunk/test/src/org/apache/jmeter/samplers/TestSampleResult.java
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/test/src/org/apache/jmeter/samplers/TestSampleResult.java?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/test/src/org/apache/jmeter/samplers/TestSampleResult.java 
(original)
+++ jmeter/trunk/test/src/org/apache/jmeter/samplers/TestSampleResult.java Wed 
Oct 12 08:06:16 2016
@@ -146,7 +146,7 @@ public class TestSampleResult {
             res.setBytes(100);
             res.setSampleLabel("sample of size 100 bytes");
             res.sampleEnd();
-            assertEquals(100, res.getBytes());
+            assertEquals(100, res.getBytesAsLong());
             assertEquals("sample of size 100 bytes", res.getSampleLabel());
         }
 
@@ -234,7 +234,7 @@ public class TestSampleResult {
             long child1Elapsed = child1.getTime();
 
             assertTrue(child1.isSuccessful());
-            assertEquals(100, child1.getBytes());
+            assertEquals(100, child1.getBytesAsLong());
             assertEquals("Child1 Sample", child1.getSampleLabel());
             assertEquals(1, child1.getSampleCount());
             assertEquals(0, child1.getSubResults().length);
@@ -257,7 +257,7 @@ public class TestSampleResult {
             long child2Elapsed = child2.getTime();
 
             assertTrue(child2.isSuccessful());
-            assertEquals(200, child2.getBytes());
+            assertEquals(200, child2.getBytesAsLong());
             assertEquals("Child2 Sample", child2.getSampleLabel());
             assertEquals(1, child2.getSampleCount());
             assertEquals(0, child2.getSubResults().length);
@@ -266,7 +266,7 @@ public class TestSampleResult {
             parent.addSubResult(child1);
             parent.addSubResult(child2);
             assertTrue(parent.isSuccessful());
-            assertEquals(600, parent.getBytes());
+            assertEquals(600, parent.getBytesAsLong());
             assertEquals("Parent Sample", parent.getSampleLabel());
             assertEquals(1, parent.getSampleCount());
             assertEquals(2, parent.getSubResults().length);

Modified: jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1764397&r1=1764396&r2=1764397&view=diff
==============================================================================
--- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
+++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Oct 12 08:06:16 2016
@@ -75,6 +75,13 @@ Summary
     <li>Since version 3.1, Random Timer subclasses (Gaussian Random Timer, 
Uniform Random Timer and Poisson Random Timer) implement interface <code><a 
href="./api/org/apache/jmeter/timers/ModifiableTimer.html">org.apache.jmeter.timers.ModifiableTimer</a></code></li>
     <li>Since version 3.1, if you don't select any language in JSR223 Test 
Elements, Apache Groovy language will be used. See 
<bugzilla>59945</bugzilla></li>
     <li>Since version 3.1, CSV DataSet now trims variable names to avoid 
issues due to spaces between variables names when configuring CSV DataSet. This 
should not have any impact for you unless you use space at the begining or end 
of your variable names. See <bugzilla>60221</bugzilla></li>
+    <li>Since version 3.1, HTTP Request is able when using HttpClient4 
(default) implementation to handle responses bigger than 
<code>2147483647</code>. To allow this 2 properties have been introduced:
+    <ul>
+        <li><code>httpsampler.max_bytes_to_store_per_request</code> (defaults 
to 10MB)will control what is held in memory, by default JMeter will only keep 
in memory the first 10MB of a response. If you have responses larger than this 
value and use assertions that are after the first 10MB, then you must increase 
this value</li>
+        <li><code>httpsampler.max_buffer_size</code> will control the buffer 
used to read the data. Previously JMeter used a buffer equal to Content-Length 
header which could lead to failures and make JMeter less resistant to faulty 
applications, but note this may impact response times and give slightly 
different results
+         than previous versions if your application returned a Content-Length 
header higher than current default value (65KB) </li>
+    </ul>
+    See <bugzilla>53039</bugzilla></li>
 </ul>
 
 <h3>Deprecated and removed elements or functions</h3>
@@ -94,6 +101,7 @@ Summary
     <li><bug>59885</bug>Optimize css parsing for embedded resources download 
by introducing a cache. Contributed by Benoit Wiart (b.wiart at 
ubik-ingenierie.com) through <pr>219</pr></li>
     <li><bug>60092</bug>Add shortened version of the PUT body to sampler 
result.</li>
     <li><bug>60229</bug>Add a new metric : sent_bytes. Implemented by Philippe 
Mouawad (p.mouawad at ubik-ingenierie.com) and contributed by Ubik Load Pack 
(support at ubikloadpack.com)</li>
+    <li><bug>53039</bug>HTTP Request : Be able to handle responses which size 
exceeds <code>2147483647</code> bytes</li>
 </ul>
 
 <h3>Other samplers</h3>



Reply via email to