quarkusio / quarkus

Quarkus: Supersonic Subatomic Java.
https://quarkus.io
Apache License 2.0
13.58k stars 2.63k forks source link

Webdav/Custom-Verbs not working in Undertow-Servlets #13084

Open Sabartius opened 3 years ago

Sabartius commented 3 years ago

Describe the bug We're trying to port a Wildfly-Application to Quarkus, which has a custom WebDav-Servlet. After registering the Servlet in quarkus-undertow, part of it works fine, but as soon as a web-dav specific http-verb is used in the request, the servlet is not working. The cause we found was, that the http-method in the HttpServletRequest is not anymore the original http-verb like LOCK but it got changed to OTHER. This seems to originate somewhere in Vertx. After debbuging the error it was still possible to find the original http-verb, but deeply nested inside the request in some vertx-classes, for example ((DefaultHttpRequest)((HttpServerRequestImpl)((ResumingRequestWrapper)((ForwardedServerRequestWrapper)((HttpServerRequestWrapper)((VertxHttpExchange)((HttpServerExchange)((HttpServletRequestImpl)((ServletWebdavRequest)req).req).exchange).delegate).request).delegate).delegate).delegate).request).method returns the original http-verb.

Expected behavior HttpServletRequest returns the actual http-verb/method the request was made with, not OTHER

Actual behavior Every Request with custom-method is transformed to a request with the method OTHER

To Reproduce

Steps to reproduce the behavior:

  1. Register a Servlet in Quarkus-Undertow
  2. Make a Http-Request with a Custom-Verb, like LOCK
  3. See that the servlet gets a Request containing the Verb OTHER

Environment (please complete the following information):

geoand commented 1 day ago

Is this still an issue?