Uploaded image for project: 'Mule'
  1. Mule
  2. MULE-7828

Missing initial multi part boundary at org.mule.transport.http.multipart.MultiPartInputStream.parse(MultiPartInputStream.java:357)

    Details

    • Severity:
      S1
    • Log Output:
      Hide
      Root Exception stack trace:
      java.io.IOException: Missing initial multi part boundary
      at org.mule.transport.http.multipart.MultiPartInputStream.parse(MultiPartInputStream.java:357)
      at org.mule.transport.http.multipart.MultiPartInputStream.getParts(MultiPartInputStream.java:304)
      at org.mule.transport.http.HttpMultipartMuleMessageFactory.extractPayloadFromHttpRequest(HttpMultipartMuleMessageFactory.java:35)
      at org.mule.transport.http.HttpMuleMessageFactory.extractPayload(HttpMuleMessageFactory.java:75)
      at org.mule.transport.AbstractMuleMessageFactory.doCreate(AbstractMuleMessageFactory.java:79)
      at org.mule.transport.AbstractMuleMessageFactory.create(AbstractMuleMessageFactory.java:63)
      at org.mule.transport.AbstractTransportMessageHandler.createMuleMessage(AbstractTransportMessageHandler.java:458)
      at org.mule.transport.AbstractTransportMessageProcessTemplate.createMessageFromSource(AbstractTransportMessageProcessTemplate.java:147)
      at org.mule.transport.http.HttpMessageProcessTemplate.createMessageFromSource(HttpMessageProcessTemplate.java:284)
      at org.mule.transport.AbstractTransportMessageProcessTemplate.getMuleEvent(AbstractTransportMessageProcessTemplate.java:48)
      at org.mule.execution.FlowProcessingPhase$1$1.process(FlowProcessingPhase.java:74)
      at org.mule.execution.FlowProcessingPhase$1$1.process(FlowProcessingPhase.java:63)
      at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:16)
      at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:30)
      at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:14)
      at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:54)
      at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:44)
      at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:50)
      at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:40)
      at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:41)
      at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:48)
      at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:28)
      at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:13)
      at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:109)
      at org.mule.execution.FlowProcessingPhase$1.run(FlowProcessingPhase.java:62)
      at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267)
      at org.mule.work.WorkerContext.run(WorkerContext.java:286)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      at java.lang.Thread.run(Thread.java:744)

      ********************************************************************************
      Show
      Root Exception stack trace: java.io.IOException: Missing initial multi part boundary at org.mule.transport.http.multipart.MultiPartInputStream.parse(MultiPartInputStream.java:357) at org.mule.transport.http.multipart.MultiPartInputStream.getParts(MultiPartInputStream.java:304) at org.mule.transport.http.HttpMultipartMuleMessageFactory.extractPayloadFromHttpRequest(HttpMultipartMuleMessageFactory.java:35) at org.mule.transport.http.HttpMuleMessageFactory.extractPayload(HttpMuleMessageFactory.java:75) at org.mule.transport.AbstractMuleMessageFactory.doCreate(AbstractMuleMessageFactory.java:79) at org.mule.transport.AbstractMuleMessageFactory.create(AbstractMuleMessageFactory.java:63) at org.mule.transport.AbstractTransportMessageHandler.createMuleMessage(AbstractTransportMessageHandler.java:458) at org.mule.transport.AbstractTransportMessageProcessTemplate.createMessageFromSource(AbstractTransportMessageProcessTemplate.java:147) at org.mule.transport.http.HttpMessageProcessTemplate.createMessageFromSource(HttpMessageProcessTemplate.java:284) at org.mule.transport.AbstractTransportMessageProcessTemplate.getMuleEvent(AbstractTransportMessageProcessTemplate.java:48) at org.mule.execution.FlowProcessingPhase$1$1.process(FlowProcessingPhase.java:74) at org.mule.execution.FlowProcessingPhase$1$1.process(FlowProcessingPhase.java:63) at org.mule.execution.ExecuteCallbackInterceptor.execute(ExecuteCallbackInterceptor.java:16) at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:30) at org.mule.execution.HandleExceptionInterceptor.execute(HandleExceptionInterceptor.java:14) at org.mule.execution.BeginAndResolveTransactionInterceptor.execute(BeginAndResolveTransactionInterceptor.java:54) at org.mule.execution.ResolvePreviousTransactionInterceptor.execute(ResolvePreviousTransactionInterceptor.java:44) at org.mule.execution.SuspendXaTransactionInterceptor.execute(SuspendXaTransactionInterceptor.java:50) at org.mule.execution.ValidateTransactionalStateInterceptor.execute(ValidateTransactionalStateInterceptor.java:40) at org.mule.execution.IsolateCurrentTransactionInterceptor.execute(IsolateCurrentTransactionInterceptor.java:41) at org.mule.execution.ExternalTransactionInterceptor.execute(ExternalTransactionInterceptor.java:48) at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:28) at org.mule.execution.RethrowExceptionInterceptor.execute(RethrowExceptionInterceptor.java:13) at org.mule.execution.TransactionalErrorHandlingExecutionTemplate.execute(TransactionalErrorHandlingExecutionTemplate.java:109) at org.mule.execution.FlowProcessingPhase$1.run(FlowProcessingPhase.java:62) at org.mule.transport.TrackingWorkManager$TrackeableWork.run(TrackingWorkManager.java:267) at org.mule.work.WorkerContext.run(WorkerContext.java:286) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) ********************************************************************************

      Description

      I created an APIKit project that expects multipart/form-data with attachments. I tested it with several clients and most of them (e.g. SoapUI or CocoaRestClient) cause an IOException. The reason for that is that MultiPartInputStream expects EXACTLY ONE empty line between the last header and the boundary of the first part - whereas many clients insert two or more lines, which is OK by the HTTP standard. Attached are good and bad requests which are only different by the number of CRLF between the last header and the first boundary.

      This is extremely urgent!

        Attachments

          Activity

            People

            • Assignee:
              svacas Santiago Vacas
              Reporter:
              javaduke_OLD Eugene Berman
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: