Support Article
Not able to receive Request from External service
SA-1222
Summary
The application receives a file upload (to a Service HTTP) using a Multi-Part encoded form (as a POST) and then it transfers that request to an Anti-Virus service which will scan the file content and transfer the request back to PRPC.
When the request is made directly to PRPC HTTP Service, everything works fine.
But when Anti-Virus service sends the request to the HTTP service, it is adding an additional new line character before the multi-part data boundary. This results in PRPC failing to parse the data correctly.
Error Messages
2014-09-01 15:26:35,164 [fault (self-tuning)'] [ ] [ ] ( web.impl.WebStandardImpl) ERROR - gatewaytest.nehr.sg: Problem retrieving input data:
java.io.IOException: Corrupt form data: no leading boundary: != -----------------------------7de2f81e2b086a
at com.pega.pegarules.web.fileupload.MultipartParser.<init>(MultipartParser.java:201)
at com.pega.pegarules.web.fileupload.MultipartParser.<init>(MultipartParser.java:118)
at com.pega.pegarules.web.fileupload.MultipartRequest.<init>(MultipartRequest.java:175)
at com.pega.pegarules.web.impl.HttpUtilities.fileUpload(HttpUtilities.java:447)
at com.pega.pegarules.web.impl.HttpUtilities.extractRequest(HttpUtilities.java:313)
at com.pega.pegarules.web.impl.WebStandardImpl.makeEtierRequest(WebStandardImpl.java:349)
at com.pega.pegarules.web.impl.WebStandardImpl.doPost(WebStandardImpl.java:278)
...
at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doPost(WebStandardBoot.java:118)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
...
Steps to Reproduce
1. Create a Service HTTP which acceps a file upload in a multi-part form POST.
2. Make sure it works fine and can read all submit parameters from form.
3. Capture the request in Fiddler and then manually edit the request in Fiddler composer to add an additional new Line before the multi part boundary (also increase length by 2)
4. Submit that request manually using Fiddler and we can see the error.
Root Cause
The root cause of this problem is a defect in Pegasystems’ code/rules.
When an additional new line (CRLF) was present before multi-part data started, the parsing code will throw an error.
Resolution
This issue is resolved by hotfix item: Hfix-9980 (port of Hfix-9630 in 6.1 SP2)
Published January 31, 2016 - Updated October 8, 2020
Have a question? Get answers now.
Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.