Author: sebb Date: Tue Apr 7 17:54:16 2009 New Revision: 762874 URL: http://svn.apache.org/viewvc?rev=762874&view=rev Log: Bug 46977 - JMeter does not handle HTTP headers not delimited by whitespace
Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java jakarta/jmeter/trunk/xdocs/changes.xml Modified: jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java?rev=762874&r1=762873&r2=762874&view=diff ============================================================================== --- jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java (original) +++ jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/proxy/HttpRequestHdr.java Tue Apr 7 17:54:16 2009 @@ -218,16 +218,12 @@ * If name = "content-length", then return value as int, else return 0 */ private int parseLine(String nextLine) { - StringTokenizer tz; - tz = new StringTokenizer(nextLine); - String token = getToken(tz); - // look for termination of HTTP command - if (0 == token.length()) { - return 0; - } - String trimmed = token.trim(); - String name = trimmed.substring(0, trimmed.length() - 1);// drop ':' - String value = getRemainder(tz); + int colon = nextLine.indexOf(':'); + if (colon <= 0){ + return 0; // Nothing to do + } + String name = nextLine.substring(0, colon).trim(); + String value = nextLine.substring(colon+1).trim(); headers.put(name.toLowerCase(java.util.Locale.ENGLISH), new Header(name, value)); if (name.equalsIgnoreCase(CONTENT_LENGTH)) { return Integer.parseInt(value); Modified: jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java?rev=762874&r1=762873&r2=762874&view=diff ============================================================================== --- jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java (original) +++ jakarta/jmeter/trunk/test/src/org/apache/jmeter/protocol/http/proxy/TestHttpRequestHdr.java Tue Apr 7 17:54:16 2009 @@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Collections; import java.util.HashMap; @@ -27,6 +28,8 @@ import org.apache.jmeter.config.Arguments; import org.apache.jmeter.junit.JMeterTestCase; +import org.apache.jmeter.protocol.http.control.Header; +import org.apache.jmeter.protocol.http.control.HeaderManager; import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase; import org.apache.jmeter.protocol.http.util.HTTPArgument; @@ -443,6 +446,34 @@ checkArgument((HTTPArgument)arguments.getArgument(1), "description", descriptionValue, descriptionValue, contentEncoding, false); } + public void testParse1() throws Exception {// no space after : + HttpRequestHdr req = new HttpRequestHdr(); + ByteArrayInputStream bis = null; + bis = new ByteArrayInputStream("GET xxx HTTP/1.0\r\nname:value \r\n".getBytes("ISO-8859-1")); + req.parse(bis); + bis.close(); + HeaderManager mgr = req.getHeaderManager(); + Header header; + mgr.getHeaders(); + header = mgr.getHeader(0); + assertEquals("name",header.getName()); + assertEquals("value",header.getValue()); + } + + public void testParse2() throws Exception {// spaces after : + HttpRequestHdr req = new HttpRequestHdr(); + ByteArrayInputStream bis = null; + bis = new ByteArrayInputStream("GET xxx HTTP/1.0\r\nname: value \r\n".getBytes("ISO-8859-1")); + req.parse(bis); + bis.close(); + HeaderManager mgr = req.getHeaderManager(); + Header header; + mgr.getHeaders(); + header = mgr.getHeader(0); + assertEquals("name",header.getName()); + assertEquals("value",header.getValue()); + } + public void testPostMultipartFileUpload() throws Exception { String url = "http://localhost/matrix.html"; // A HTTP POST request, multipart/form-data, simple values, Modified: jakarta/jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=762874&r1=762873&r2=762874&view=diff ============================================================================== --- jakarta/jmeter/trunk/xdocs/changes.xml (original) +++ jakarta/jmeter/trunk/xdocs/changes.xml Tue Apr 7 17:54:16 2009 @@ -198,6 +198,7 @@ JMeter now removes extraneous leading "../" segments (as do many browsers) </li> <li>Bug 46844 - "Library" label in test plan are not I18N</li> +<li>Bug 46977 - JMeter does not handle HTTP headers not delimited by whitespace</li> </ul> <h3>Improvements</h3> @@ -235,6 +236,7 @@ <li>Added locales.add property to allow for new Locales</li> <li>Bug 40045 - Allow Results monitor to select a specific connector</li> <li>Bug 46636 - rmi ports</li> +<li>Mirror server now supports "X-Sleep" header - if this is set, the responding thread will wait for the specified number of milliseconds</li> </ul> <h3>Non-functional changes</h3> --------------------------------------------------------------------- To unsubscribe, e-mail: jmeter-dev-unsubscr...@jakarta.apache.org For additional commands, e-mail: jmeter-dev-h...@jakarta.apache.org