Author: sebb
Date: Mon Feb  5 14:36:40 2007
New Revision: 503908

URL: http://svn.apache.org/viewvc?view=rev&rev=503908
Log:
Bug 41543 - exception when webserver returns "500 Internal Server Error" and 
content-length is 0 

Modified:
    
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java

Modified: 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java?view=diff&rev=503908&r1=503907&r2=503908
==============================================================================
--- 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
 (original)
+++ 
jakarta/jmeter/branches/rel-2-2/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSampler.java
 Mon Feb  5 14:36:40 2007
@@ -41,6 +41,7 @@
 import org.apache.jmeter.testelement.property.CollectionProperty;
 import org.apache.jmeter.testelement.property.PropertyIterator;
 
+import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jmeter.util.SSLManager;
 
 import org.apache.jorphan.logging.LoggingManager;
@@ -57,6 +58,8 @@
 
        private static final int MAX_CONN_RETRIES = 10; // Maximum connection 
retries
 
+       private static final byte[] NULL_BA = new byte[0];// can share these
+       
        /**
         * Constructor for the HTTPSampler object.
      * 
@@ -205,6 +208,13 @@
        protected byte[] readResponse(HttpURLConnection conn, SampleResult res) 
throws IOException {
                byte[] readBuffer = getThreadContext().getReadBuffer();
                BufferedInputStream in;
+
+        if ((conn.getContentLength() == 0) && 
JMeterUtils.getPropDefault("httpsampler.obey_contentlength", false)) {
+            log.info("Content-Length: 0, not reading http-body");
+                       res.setResponseHeaders(getResponseHeaders(conn));
+                       return NULL_BA;
+               }
+
                try {
             // works OK even if ContentEncoding is null
                        if (ENCODING_GZIP.equals(conn.getContentEncoding())) {
@@ -222,7 +232,16 @@
                                }
                        }
                        // Normal InputStream is not available
-                       in = new BufferedInputStream(conn.getErrorStream());
+                       InputStream errorStream = conn.getErrorStream();
+                       if (errorStream == null) {
+                               log.info("Error Response Code: 
"+conn.getResponseCode()+", Server sent no Errorpage");
+                               
res.setResponseHeaders(getResponseHeaders(conn));
+                               return NULL_BA;
+                       }
+                       else {
+                               log.info("Error Response Code: 
"+conn.getResponseCode());
+                       }
+                       in = new BufferedInputStream(errorStream);
                } catch (Exception e) {
                        log.error("readResponse: "+e.toString());
                        Throwable cause = e.getCause();



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to