Details
Description
We have a production environment in which the Jetty 6.1.9 server is receiving requests for static content with a bogus request header: If-Modified-Since with no date. An IllegalArgumentException ensues:
[25 17:10:12.239 pool-1-thread-4 - /ima] 2008-06-25 17:10:12.615::WARN: EXCEPTION
[25 17:10:12.239 pool-1-thread-4 - /ima] EXCEPTION java.lang.IllegalArgumentException
java.lang.IllegalArgumentException: Cannot convert date:
at org.mortbay.jetty.HttpFields.getDateField(HttpFields.java:831)
at org.mortbay.jetty.Request.getDateHeader(Request.java:558)
at org.mortbay.jetty.servlet.DefaultServlet.passConditionalHeaders(DefaultServlet.java:559)
at org.mortbay.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:405)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at net.consilient.c4.console.servlets.filters.DisableCaching.doFilter(DisableCaching.java:49)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at net.consilient.c4.console.servlets.filters.CharEncoding.doFilter(CharEncoding.java:58)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:320)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
which is reasonable, however the response is 200 OK with empty content. If it's just a warning, then shouldn't the exception be caught lower down in passConditionalHeaders so request processing continues normally? Or if the content isn't to be served, then shouldn't the response be 5xx?
Thanks!
Hi David, please coordinate with gregw on this one.
cheers
Jan