Willem Salembier created CXF-7767:
-------------------------------------

             Summary: Support 100-Continue in Undertow transport
                 Key: CXF-7767
                 URL: https://issues.apache.org/jira/browse/CXF-7767
             Project: CXF
          Issue Type: Improvement
          Components: Transports
    Affects Versions: 3.2.4
            Reporter: Willem Salembier


One of our clients always sends 'Expect: 100-continue' headers and expects the 
server to respond with status code 100 Continue before sending the payload of 
the request. With transport untertow, this is currently not supported (we see 
an additional delay of 2s per request)

The issue can be resolved by wiring in the 
io.undertow.server.handlers.HttpContinueReadHandler.

For example modifying these lines works:

https://github.com/apache/cxf/blob/master/rt/transports/http-undertow/src/main/java/org/apache/cxf/transport/http_undertow/UndertowHTTPServerEngine.java#L211-L221

{code}
if (url.getPath().length() == 0) {
  result = result.setHandler(Handlers.trace(new 
HttpContinueReadHandler(undertowHTTPHandler)));
} else {
  if (undertowHTTPHandler.isContextMatchExact()) {
    this.path.addExactPath(url.getPath(), new 
HttpContinueReadHandler(undertowHTTPHandler));
  } else {
    this.path.addPrefixPath(url.getPath(), new 
HttpContinueReadHandler(undertowHTTPHandler));
  }

Alternative impl to integrate this handler in UndertowHTTPHandler.
Also the config should really be set via cxf.xml.

Test case:
* Deploy a simple SOAP service using javax.xml.ws.Endpoint.publish
* Configure SoapUI in preferences > HTTP Settings (Expect-Continue: true)
* Call a SOAP operation


  result = result.setHandler(this.wrapHandler(this.path));
}
{code}

100-Continue is well supported in the jetty transport, but with netty we see a 
similar issue. With netty the server hangs and doesn't respond



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to