Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jetty-dev] WindowsPathParser bug in 9.3.10?

3 things ...

  1. There's a encoding bug on our end - opened an issue for the quote (") character - https://github.com/eclipse/jetty.project/issues/715
  2. The raw request you are getting from your browser is entirely wacky, the existence of the square brackets ([) and quotes (") are highly suspect.  Do you have those characters as path names on disk??
  3. And on a minor note, set the resourceBase properly on the ServletContextHandler.
Don't use 

sdkContextHandler.setInitParameter("resourceBase", cfg.sdkRootDir.getAbsolutePath());

use this instead

sdkContextHandler.setBaseResource(new PathResource(cfg.sdkRootDir));


Joakim Erdfelt / joakim@xxxxxxxxxxx

On Tue, Jul 12, 2016 at 6:13 AM, Michele Rossi <michele.rossi@xxxxxxxxx> wrote:
it's a context path.

I have an embedded version of Jetty for dev and a normal Jetty distro for production / staging.

This occurs in the Jetty that I build by myself using Java code.

Perhaps I am doing something wrong then?


Here is the code.. as I said I only use it so that I can run my system easily in Eclipse.


thanks,
Michele



        ServletHolder sdkHld = new ServletHolder();
        sdkHld.setClassName(DefaultServlet.class.getName());
        sdkHld.setDisplayName("Resources Servlet");
        sdkHld.setAsyncSupported(false);
        sdkHld.setEnabled(true);

        sdkHld.setInitParameter("cacheControl", "max-age=0, no-cache, no-store");
        sdkHld.setInitParameter("useFileMappedBuffer", "false");
        sdkHld.setInitParameter("gzip", "false");
        sdkHld.setInitParameter("etags", "true");
        sdkHld.setInitParameter("redirectWelcome", "false");
        sdkHld.setInitParameter("welcomeServlets", "false");
        sdkHld.setInitParameter("dirAllowed", "true");
        sdkHld.setInitParameter("maxCachedFiles", "2048");
        sdkHld.setInitParameter("maxCachedFileSize", "200000000");
        sdkHld.setInitParameter("maxCacheSize", "256000000");
        sdkHld.setInitParameter("acceptRanges", "true");
        sdkHld.setInitParameter("aliases", "true");
        sdkHld.setInitParameter("acceptRanges", "true");
        sdkHld.setInitParameter("resourceBase", cfg.sdkRootDir.getAbsolutePath());

        ServletContextHandler sdkContextHandler = new ServletContextHandler(ServletContextHandler.NO_SECURITY
                | ServletContextHandler.NO_SESSIONS);


// ============>>> here it is ===========>
        sdkContextHandler.setContextPath("/js");

        sdkContextHandler.setDisplayName("IOD SDK Resources Servlet Context");
        sdkContextHandler.addServlet(sdkHld, "/*");
        sdkContextHandler.setInitParameter("resourceBase", cfg.sdkRootDir.getAbsolutePath());
        sdkContextHandler.setInitParameter("cacheControl", "max-age=0, no-cache, no-store");
        sdkContextHandler.setInitParameter("useFileMappedBuffer", "false");
        sdkContextHandler.setInitParameter("gzip", "false");
        sdkContextHandler.setInitParameter("etags", "true");
        sdkContextHandler.setInitParameter("redirectWelcome", "false");
        sdkContextHandler.setInitParameter("welcomeServlets", "false");
        sdkContextHandler.setInitParameter("dirAllowed", "true");
        sdkContextHandler.setInitParameter("maxCachedFiles", "2048");
        sdkContextHandler.setInitParameter("maxCachedFileSize", "200000000");
        sdkContextHandler.setInitParameter("maxCacheSize", "256000000");
        sdkContextHandler.setInitParameter("acceptRanges", "true");
        sdkContextHandler.setInitParameter("aliases", "true");
        sdkContextHandler.setInitParameter("acceptRanges", "true");
        sdkContextHandler.setInitParameter("resourceBase", cfg.sdkRootDir.getAbsolutePath());
        sdkContextHandler.setServer(server);

On 12 July 2016 at 15:06, Joakim Erdfelt <joakim@xxxxxxxxxxx> wrote:
That seems like a horribly bad request to me.

Is /js/ a webapp Context Path? a servlet mapping? or a directory?

Joakim Erdfelt / joakim@xxxxxxxxxxx

On Tue, Jul 12, 2016 at 6:02 AM, Michele Rossi <michele.rossi@xxxxxxxxx> wrote:
here it is, I am not sure what JS library is producing those weird requests.

In any case, there is no problem on Linux for some reason.


thanks,
Michele




Host: localhost:8686
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: test; iod_session=FCD9AC5D1C23F25310; BAYEUX_BROWSER=ehsfdtllbaa518nf
Connection: keep-alive





On 12 July 2016 at 14:50, Joakim Erdfelt <joakim@xxxxxxxxxxx> wrote:
Can you capture/inspect the request from your browser and copy/paste it here?

Joakim Erdfelt / joakim@xxxxxxxxxxx

On Tue, Jul 12, 2016 at 5:26 AM, Michele Rossi <michele.rossi@xxxxxxxxx> wrote:
hi all,

when running my Jetty 9.3.10 system on Windows 7 I am observing the behaviour below which looks wrong.

I don't understand what that code is trying to do but it looks like it's somehow forming paths with some of the content of the files a client is downloading and it's then trying to normalise them using WindowsPathParser?


In any case I thought you might want to know.

Many thanks,
Michele




14:21:49.211|WARN |   o.e.j.s.DefaultServlet|7C662196D528189A4E|a_bates   |UBSW_LON| EXCEPTION 
java.nio.file.InvalidPathException: Illegal char <"> at index 66: C:\Work\Workspaces\idr\iod-aggregator\iod-html\src\main\js\dist\/["dojo/_base/lang"]/</p.hitch/<@http://localhost:8686/js/html5/lib/gridx/gridx/grid-all.js
at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
at org.eclipse.jetty.util.resource.PathResource.<init>(PathResource.java:202)
at org.eclipse.jetty.util.resource.PathResource.addPath(PathResource.java:293)
at org.eclipse.jetty.servlet.DefaultServlet.getResource(DefaultServlet.java:401)
at org.eclipse.jetty.server.ResourceCache.getContent(ResourceCache.java:202)
at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:468)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:837)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:583)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1180)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:119)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:524)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:319)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:253)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:273)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:93)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.executeProduceConsume(ExecuteProduceConsume.java:303)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceConsume(ExecuteProduceConsume.java:148)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:671)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:589)
at java.lang.Thread.run(Thread.java:745)

_______________________________________________
jetty-dev mailing list
jetty-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-dev


_______________________________________________
jetty-dev mailing list
jetty-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-dev


_______________________________________________
jetty-dev mailing list
jetty-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-dev


_______________________________________________
jetty-dev mailing list
jetty-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-dev


_______________________________________________
jetty-dev mailing list
jetty-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/jetty-dev


Back to the top