Merge remote-tracking branch 'origin/master' into jetty-9.1
Conflicts: jetty-server/src/main/java/org/eclipse/jetty/server/HttpInput.java jetty-server/src/test/java/org/eclipse/jetty/server/HttpConnectionTest.java jetty-servlet/src/main/java/org/eclipse/jetty/servlet/ServletHandler.java
This commit is contained in:
commit
a3f6633385
|
@ -71,11 +71,14 @@ public class DumpHandler extends AbstractHandler
|
|||
if (!isStarted())
|
||||
return;
|
||||
|
||||
StringBuilder read = null;
|
||||
if (request.getParameter("read")!=null)
|
||||
{
|
||||
read=new StringBuilder();
|
||||
int len=Integer.parseInt(request.getParameter("read"));
|
||||
Reader in = request.getReader();
|
||||
for (int i=Integer.parseInt(request.getParameter("read"));i-->0;)
|
||||
in.read();
|
||||
for (int i=len;i-->0;)
|
||||
read.append((char)in.read());
|
||||
}
|
||||
|
||||
if (request.getParameter("ISE")!=null)
|
||||
|
@ -190,16 +193,23 @@ public class DumpHandler extends AbstractHandler
|
|||
|
||||
writer.write("</pre>\n<h3>Content:</h3>\n<pre>");
|
||||
|
||||
char[] content= new char[4096];
|
||||
int len;
|
||||
try{
|
||||
Reader in=request.getReader();
|
||||
while((len=in.read(content))>=0)
|
||||
writer.write(new String(content,0,len));
|
||||
}
|
||||
catch(IOException e)
|
||||
if (read!=null)
|
||||
{
|
||||
writer.write(e.toString());
|
||||
writer.write(read.toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
char[] content= new char[4096];
|
||||
int len;
|
||||
try{
|
||||
Reader in=request.getReader();
|
||||
while((len=in.read(content))>=0)
|
||||
writer.write(new String(content,0,len));
|
||||
}
|
||||
catch(IOException e)
|
||||
{
|
||||
writer.write(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
writer.write("</pre>\n");
|
||||
|
|
|
@ -68,6 +68,7 @@ public class HttpConnectionTest
|
|||
http.getHttpConfiguration().setResponseHeaderSize(1024);
|
||||
|
||||
connector = new LocalConnector(server,http,null);
|
||||
connector.setIdleTimeout(500);
|
||||
server.addConnector(connector);
|
||||
server.setHandler(new DumpHandler());
|
||||
server.start();
|
||||
|
@ -384,6 +385,73 @@ public class HttpConnectionTest
|
|||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnconsumed() throws Exception
|
||||
{
|
||||
String response=null;
|
||||
String requests=null;
|
||||
int offset=0;
|
||||
|
||||
offset=0;
|
||||
requests=
|
||||
"GET /R1?read=4 HTTP/1.1\n"+
|
||||
"Host: localhost\n"+
|
||||
"Transfer-Encoding: chunked\n"+
|
||||
"Content-Type: text/plain; charset=utf-8\n"+
|
||||
"\015\012"+
|
||||
"5;\015\012"+
|
||||
"12345\015\012"+
|
||||
"5;\015\012"+
|
||||
"67890\015\012"+
|
||||
"0;\015\012\015\012"+
|
||||
"GET /R2 HTTP/1.1\n"+
|
||||
"Host: localhost\n"+
|
||||
"Content-Type: text/plain; charset=utf-8\n"+
|
||||
"Content-Length: 10\n"+
|
||||
"Connection: close\n"+
|
||||
"\n"+
|
||||
"abcdefghij\n";
|
||||
|
||||
response=connector.getResponses(requests);
|
||||
|
||||
offset = checkContains(response,offset,"HTTP/1.1 200");
|
||||
offset = checkContains(response,offset,"pathInfo=/R1");
|
||||
offset = checkContains(response,offset,"1234");
|
||||
checkNotContained(response,offset,"56789");
|
||||
offset = checkContains(response,offset,"HTTP/1.1 200");
|
||||
offset = checkContains(response,offset,"pathInfo=/R2");
|
||||
offset = checkContains(response,offset,"encoding=UTF-8");
|
||||
offset = checkContains(response,offset,"abcdefghij");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnconsumedTimeout() throws Exception
|
||||
{
|
||||
String response=null;
|
||||
String requests=null;
|
||||
int offset=0;
|
||||
|
||||
offset=0;
|
||||
requests=
|
||||
"GET /R1?read=4 HTTP/1.1\n"+
|
||||
"Host: localhost\n"+
|
||||
"Transfer-Encoding: chunked\n"+
|
||||
"Content-Type: text/plain; charset=utf-8\n"+
|
||||
"\015\012"+
|
||||
"5;\015\012"+
|
||||
"12345\015\012";
|
||||
|
||||
long start=System.currentTimeMillis();
|
||||
response=connector.getResponses(requests,2000,TimeUnit.MILLISECONDS);
|
||||
if ((System.currentTimeMillis()-start)>=2000)
|
||||
Assert.fail();
|
||||
|
||||
offset = checkContains(response,offset,"HTTP/1.1 200");
|
||||
offset = checkContains(response,offset,"pathInfo=/R1");
|
||||
offset = checkContains(response,offset,"1234");
|
||||
checkNotContained(response,offset,"56789");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUnconsumedErrorRead() throws Exception
|
||||
{
|
||||
|
|
|
@ -197,7 +197,14 @@ public class ServletHandler extends ScopedHandler
|
|||
{
|
||||
for (int i=_filters.length; i-->0;)
|
||||
{
|
||||
try { _filters[i].stop(); }catch(Exception e){LOG.warn(Log.EXCEPTION,e);}
|
||||
try
|
||||
{
|
||||
_filters[i].stop();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
LOG.warn(Log.EXCEPTION,e);
|
||||
}
|
||||
if (_filters[i].getSource() != Source.EMBEDDED)
|
||||
{
|
||||
//remove all of the mappings that were for non-embedded filters
|
||||
|
@ -234,7 +241,14 @@ public class ServletHandler extends ScopedHandler
|
|||
{
|
||||
for (int i=_servlets.length; i-->0;)
|
||||
{
|
||||
try { _servlets[i].stop(); }catch(Exception e){LOG.warn(Log.EXCEPTION,e);}
|
||||
try
|
||||
{
|
||||
_servlets[i].stop();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
LOG.warn(Log.EXCEPTION,e);
|
||||
}
|
||||
|
||||
if (_servlets[i].getSource() != Source.EMBEDDED)
|
||||
{
|
||||
|
@ -525,35 +539,25 @@ public class ServletHandler extends ScopedHandler
|
|||
|
||||
// unwrap cause
|
||||
Throwable th=e;
|
||||
if (th instanceof UnavailableException)
|
||||
{
|
||||
LOG.debug(th);
|
||||
}
|
||||
else if (th instanceof ServletException)
|
||||
if (th instanceof ServletException)
|
||||
{
|
||||
if (th instanceof QuietServletException)
|
||||
{
|
||||
LOG.debug(th);
|
||||
LOG.warn(th.toString());
|
||||
LOG.debug(th);
|
||||
}
|
||||
else
|
||||
LOG.warn(th);
|
||||
}
|
||||
// handle or log exception
|
||||
else if (th instanceof EofException)
|
||||
{
|
||||
throw (EofException)th;
|
||||
else if (LOG.isDebugEnabled())
|
||||
{
|
||||
LOG.warn(request.getRequestURI(), th);
|
||||
LOG.debug(request.toString());
|
||||
}
|
||||
else if (th instanceof IOException || th instanceof UnavailableException)
|
||||
{
|
||||
LOG.debug(request.getRequestURI(),th);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG.warn(request.getRequestURI(),th);
|
||||
if (LOG.isDebugEnabled())
|
||||
LOG.debug(request.toString());
|
||||
}
|
||||
|
||||
if (!response.isCommitted())
|
||||
|
|
Loading…
Reference in New Issue