HADOOP-8816. HTTP Error 413 full HEAD if using kerberos authentication. (moritzmoeller via tucu)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1433567 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Alejandro Abdelnur 2013-01-15 18:27:30 +00:00
parent 72e631098d
commit 8ab69eb0c3
3 changed files with 33 additions and 0 deletions

View File

@ -546,6 +546,9 @@ Release 2.0.3-alpha - Unreleased
HADOOP-9178. src/main/conf is missing hadoop-policy.xml. HADOOP-9178. src/main/conf is missing hadoop-policy.xml.
(Sandy Ryza via eli) (Sandy Ryza via eli)
HADOOP-8816. HTTP Error 413 full HEAD if using kerberos authentication.
(moritzmoeller via tucu)
Release 2.0.2-alpha - 2012-09-07 Release 2.0.2-alpha - 2012-09-07
INCOMPATIBLE CHANGES INCOMPATIBLE CHANGES

View File

@ -305,6 +305,7 @@ public class HttpServer implements FilterContainer {
ret.setAcceptQueueSize(128); ret.setAcceptQueueSize(128);
ret.setResolveNames(false); ret.setResolveNames(false);
ret.setUseDirectBuffers(false); ret.setUseDirectBuffers(false);
ret.setHeaderBufferSize(1024*64);
return ret; return ret;
} }

View File

@ -119,6 +119,18 @@ public class TestHttpServer extends HttpServerFunctionalTest {
} }
} }
@SuppressWarnings("serial")
public static class LongHeaderServlet extends HttpServlet {
@SuppressWarnings("unchecked")
@Override
public void doGet(HttpServletRequest request,
HttpServletResponse response
) throws ServletException, IOException {
Assert.assertEquals(63 * 1024, request.getHeader("longheader").length());
response.setStatus(HttpServletResponse.SC_OK);
}
}
@SuppressWarnings("serial") @SuppressWarnings("serial")
public static class HtmlContentServlet extends HttpServlet { public static class HtmlContentServlet extends HttpServlet {
@Override @Override
@ -139,6 +151,7 @@ public class TestHttpServer extends HttpServerFunctionalTest {
server.addServlet("echo", "/echo", EchoServlet.class); server.addServlet("echo", "/echo", EchoServlet.class);
server.addServlet("echomap", "/echomap", EchoMapServlet.class); server.addServlet("echomap", "/echomap", EchoMapServlet.class);
server.addServlet("htmlcontent", "/htmlcontent", HtmlContentServlet.class); server.addServlet("htmlcontent", "/htmlcontent", HtmlContentServlet.class);
server.addServlet("longheader", "/longheader", LongHeaderServlet.class);
server.addJerseyResourcePackage( server.addJerseyResourcePackage(
JerseyResource.class.getPackage().getName(), "/jersey/*"); JerseyResource.class.getPackage().getName(), "/jersey/*");
server.start(); server.start();
@ -197,6 +210,22 @@ public class TestHttpServer extends HttpServerFunctionalTest {
readOutput(new URL(baseUrl, "/echomap?a=b&c<=d&a=>"))); readOutput(new URL(baseUrl, "/echomap?a=b&c<=d&a=>")));
} }
/**
* Test that verifies headers can be up to 64K long.
* The test adds a 63K header leaving 1K for other headers.
* This is because the header buffer setting is for ALL headers,
* names and values included. */
@Test public void testLongHeader() throws Exception {
URL url = new URL(baseUrl, "/longheader");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
for (int i = 0 ; i < 63 * 1024; i++) {
sb.append("a");
}
conn.setRequestProperty("longheader", sb.toString());
assertEquals(HttpURLConnection.HTTP_OK, conn.getResponseCode());
}
@Test public void testContentTypes() throws Exception { @Test public void testContentTypes() throws Exception {
// Static CSS files should have text/css // Static CSS files should have text/css
URL cssUrl = new URL(baseUrl, "/static/test.css"); URL cssUrl = new URL(baseUrl, "/static/test.css");