I am using Wiremock (which appears to use jetty) to stub some http responses.
I am sending a multipart http request but Wiremock/jetty responds to with a 500 error and some html which details a MalformedStreamException
.
This has only broken since a version upgrade of Wiremock from 2.31.0 to 2.32.0.
I am sending the following request in Postman to my stub endpoint:
Headers
Content-Type: multipart/related; boundary=xxx
Request body
--xxx
Content-Type: text/xml; charset=UTF-8
<?xml version="1.0" encoding="utf-8"?>
<test></test>
--xxx
Content-Type: text/xml; charset=UTF-8
<?xml version="1.0" encoding="utf-8"?>
<test></test>
--xxx--
Error
Caused by: wiremock.org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
at wiremock.org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:361)
at com.github.tomakehurst.wiremock.http.multipart.PartParser.parseFrom(PartParser.java:51)
at com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter.getParts(WireMockHttpServletRequestAdapter.java:286)
at com.github.tomakehurst.wiremock.verification.LoggedRequest.createFrom(LoggedRequest.java:71)
at com.github.tomakehurst.wiremock.stubbing.InMemoryStubMappings.serveFor(InMemoryStubMappings.java:88)
at com.github.tomakehurst.wiremock.core.WireMockApp.serveStubFor(WireMockApp.java:226)
at com.github.tomakehurst.wiremock.http.StubRequestHandler.handleRequest(StubRequestHandler.java:57)
at com.github.tomakehurst.wiremock.http.AbstractRequestHandler.handle(AbstractRequestHandler.java:69)
at com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet.service(WireMockHandlerDispatchingServlet.java:142)
at wiremock.javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at wiremock.org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)
at wiremock.org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1631)
at wiremock.org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:548)
at wiremock.org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at wiremock.org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at wiremock.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at wiremock.org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501)
at wiremock.org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at wiremock.org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at wiremock.org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at wiremock.org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:763)
at wiremock.org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
... 17 more
Caused by: wiremock.org.apache.commons.fileupload.MultipartStream$MalformedStreamException: Stream ended unexpectedly
at wiremock.org.apache.commons.fileupload.MultipartStream.readHeaders(MultipartStream.java:570)
at wiremock.org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:1052)
at wiremock.org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:1017)
at wiremock.org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:309)
at wiremock.org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:333)
... 38 more
Can anyone spot anything I am doing wrong or have any suggestions of things to rule out or try?
Could there be a bug in Wiremock or one of its dependences or is my multipart request malformed?
Update I've opened a bug on Github: https://github.com/wiremock/wiremock/issues/1973