-
Bug
-
Resolution: Fixed
-
Major
-
8.5.0, 8.5.1.2
-
Security Level: Jean
-
All browsers (FF more often ... not sure why, must be a timing issue)
Tested/Reproduced with Tomcat 8.5.29 (Jetty didn't show this issue)
-
ZK 8.5.2 S1, ZK 8.5.2 S2
-
None
Steps to Reproduce
enable websockets
run the following zul file
<zk> <button label="cause problem" onClick='Executions.getCurrent().getParameter("")'/> <button label="upload" upload="true" onUpload='Clients.log("uploaded: " + event.getMedia().getName());'/> </zk>
follow the sequence:
- upload a file -> Works (upload succeeds)
- press the button "cause problem" -> Works (ws request is sent/received - just for the side effect)
- upload a file (don't wait too long) -> Sometimes FAILS with a NPE
Current Result
If timing is right an exception is thrown:
Apr 17, 2018 10:28:24 AM org.zkoss.zk.au.http.AuUploader handleError SEVERE: Failed to upload java.lang.NullPointerException at org.zkoss.xml.XMLs.encodeText(XMLs.java:83) at org.zkoss.zk.au.http.AuUploader.escapeParam(AuUploader.java:477) at org.zkoss.zk.au.http.AuUploader.service(AuUploader.java:143) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:455) at org.zkoss.zk.au.http.DHtmlUpdateServlet.doPost(DHtmlUpdateServlet.java:495) at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)
Expected Result
Upload works / No exception
Debug Info
Problem happens more reliable on FF but can also be reproduced on Chrome/Edge
The attachment ws-fileupload.zul contains a more debuggable version avoiding additional requests polling for upload percentage.
The button "cause problem" triggers a WS request accessing calling request.getParameter() on the WSHandshakeRequest.
- relates to
-
ZK-3931 user agent information missing during websocket request
- Closed