[
https://issues.apache.org/jira/browse/AXIS2-2236?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul O'Connor updated AXIS2-2236:
---------------------------------
Description:
There is a missing CRLF before the first MIME boundary in SwA messages when
chunking is enabled. Chunking requires one CRLF after the chunk size, but the
MIME boundary also requires a preceding CRLF:
http://www.freesoft.org/CIE/RFC/1521/16.htm
"Note that the encapsulation boundary must occur at the beginning of a line,
i.e., following a CRLF"
The HTTPTracer output for a chunked Axis2 client invocation:
==============
Listen Port: 8888
Target Host: rtigdev.axa-equitable.com
Target Port: 5005
==== Request ====
POST /iPipelineService HTTP/1.1
SOAPAction: ""
User-Agent: Axis2
Host: rtigdev.axa-equitable.com:8888
Transfer-Encoding: chunked
Content-Type: multipart/related;
boundary=MIMEBoundaryurn_uuid_F93DD7B5E1A1F48B2E11721590520621;
type="text/xml"; start="<0.urn:uuid:[EMAIL PROTECTED]>"; charset=UTF-8
22a6
--MIMEBoundaryurn_uuid_F93DD7B5E1A1F48B2E11721590520621
content-type: text/xml; charset=UTF-8
content-transfer-encoding: 8bit
content-id: <0.urn:uuid:[EMAIL PROTECTED]>
A successful chunked client invocation using cURL includes 2 CRLFs:
==============
Listen Port: 8888
Target Host: rtigdev.axa-equitable.com
Target Port: 5005
==== Request ====
POST /iPipelineService HTTP/1.1
User-Agent: curl/7.16.0 (i586-pc-mingw32msvc) libcurl/7.16.0 OpenSSL/0.9.7e
zlib/1.2.2
Host: rtigdev.axa-equitable.com:8888
Accept: */*
Content-Type: multipart/related; type="text/xml";
boundary="MIMEBoundaryurn_uuid_C4BC93C65C31CE0E7D11721557687501";
start="<0.urn:uuid:[EMAIL PROTECTED]>"
Transfer-Encoding: chunked
Expect: 100-continue
3ff4
--MIMEBoundaryurn_uuid_C4BC93C65C31CE0E7D11721557687501
content-type: text/xml; charset=UTF-8
content-transfer-encoding: 8bit
content-id: <0.urn:uuid:[EMAIL PROTECTED]>
was:
Extraneous characters appear before the first MIME boundary in SwA messages
(both client and service) under Axis2. Axis2 client -to- Axis2 service has no
problem moving past the extraneous characters to the first MIME boundary. Other
infrastructure elements added as proxies are expecting only <CR><LF>s preceding
the first boundary.
The following HTTPTracer output lists the problem (includes HTTP headers). Note
the extraneous '2291' before the first MIME boundary':
POST /iPipelineService HTTP/1.1
Content-Type: multipart/related;
boundary=MIMEBoundaryurn_uuid_836F9BE5DD4ED2CFC81172084603850; type="text/xml";
start="<0.urn:uuid:[EMAIL PROTECTED]>"; charset=UTF-8
SOAPAction: "TXLifeRequestWithAttachment"
User-Agent: Axis2
Host: rtigdev.axa-equitable.com:8888
Transfer-Encoding: chunked
2291
--MIMEBoundaryurn_uuid_836F9BE5DD4ED2CFC81172084603850
content-type: text/xml; charset=UTF-8
content-transfer-encoding: 8bit
content-id: <0.urn:uuid:[EMAIL PROTECTED]>
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><q0:TXLifeRequest
xmlns:q0="http://ACORD.org/Standards/Life/2">
<q0:TransRefGUID />
<q0:TransType tc="1" />
</q0:TXLifeRequest></soapenv:Body></soapenv:Envelope>
--MIMEBoundaryurn_uuid_836F9BE5DD4ED2CFC81172084603850
content-type: application/octet-stream
content-transfer-encoding: binary
content-id: <foo.pdf>
The client code segement used to generate the message is as follows:
XMLStreamReader parser =
XMLInputFactory.newInstance().createXMLStreamReader(soapBodyStream);
StAXOMBuilder builder = new StAXOMBuilder(parser);
OMElement soapBodyPayload =
builder.getDocumentElement();
Options options = new Options();
options.setTo(new EndpointReference(args[3]));
options.setProperty(Constants.Configuration.ENABLE_SWA,
Constants.VALUE_TRUE);
options.setProperty(Constants.Configuration.DISABLE_SOAP_ACTION,
Constants.VALUE_TRUE);
options.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
// Increase the time out when sending large attachments
options.setTimeOutInMilliSeconds(10000);
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OperationClient mepClient =
sender.createClient(ServiceClient.ANON_OUT_IN_OP);
MessageContext mc = new MessageContext();
FileDataSource fileDataSource = new FileDataSource(new
File(args[2]));
// Create a dataHandler using the fileDataSource. Any
implementation of
// javax.activation.DataSource interface can fit here.
DataHandler dataHandler = new
DataHandler(fileDataSource);
mc.addAttachment(filename, dataHandler);
SOAPFactory fac = OMAbstractFactory.getSOAP11Factory();
SOAPEnvelope env = fac.getDefaultEnvelope();
env.getBody().addChild(soapBodyPayload);
mc.setEnvelope(env);
> Missing CRLF Before First MIME Boundary in Chunked SwA Messages
> ---------------------------------------------------------------
>
> Key: AXIS2-2236
> URL: https://issues.apache.org/jira/browse/AXIS2-2236
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Affects Versions: 1.1.1, 1.1, nightly
> Environment: WinXP, Java 1.5.0_07-B03
> Reporter: Paul O'Connor
>
> There is a missing CRLF before the first MIME boundary in SwA messages when
> chunking is enabled. Chunking requires one CRLF after the chunk size, but the
> MIME boundary also requires a preceding CRLF:
> http://www.freesoft.org/CIE/RFC/1521/16.htm
> "Note that the encapsulation boundary must occur at the beginning of a line,
> i.e., following a CRLF"
> The HTTPTracer output for a chunked Axis2 client invocation:
> ==============
> Listen Port: 8888
> Target Host: rtigdev.axa-equitable.com
> Target Port: 5005
> ==== Request ====
> POST /iPipelineService HTTP/1.1
> SOAPAction: ""
> User-Agent: Axis2
> Host: rtigdev.axa-equitable.com:8888
> Transfer-Encoding: chunked
> Content-Type: multipart/related;
> boundary=MIMEBoundaryurn_uuid_F93DD7B5E1A1F48B2E11721590520621;
> type="text/xml"; start="<0.urn:uuid:[EMAIL PROTECTED]>"; charset=UTF-8
> 22a6
> --MIMEBoundaryurn_uuid_F93DD7B5E1A1F48B2E11721590520621
> content-type: text/xml; charset=UTF-8
> content-transfer-encoding: 8bit
> content-id: <0.urn:uuid:[EMAIL PROTECTED]>
> A successful chunked client invocation using cURL includes 2 CRLFs:
> ==============
> Listen Port: 8888
> Target Host: rtigdev.axa-equitable.com
> Target Port: 5005
> ==== Request ====
> POST /iPipelineService HTTP/1.1
> User-Agent: curl/7.16.0 (i586-pc-mingw32msvc) libcurl/7.16.0 OpenSSL/0.9.7e
> zlib/1.2.2
> Host: rtigdev.axa-equitable.com:8888
> Accept: */*
> Content-Type: multipart/related; type="text/xml";
> boundary="MIMEBoundaryurn_uuid_C4BC93C65C31CE0E7D11721557687501";
> start="<0.urn:uuid:[EMAIL PROTECTED]>"
> Transfer-Encoding: chunked
> Expect: 100-continue
> 3ff4
> --MIMEBoundaryurn_uuid_C4BC93C65C31CE0E7D11721557687501
> content-type: text/xml; charset=UTF-8
> content-transfer-encoding: 8bit
> content-id: <0.urn:uuid:[EMAIL PROTECTED]>
>
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]