Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.7.2
-
None
-
Unknown
Description
The soap 1.1 endpoint (i.e., soap 1.2 binding not enabled) is supposed to returns a soap fault when a soap 1.2 message is received. The fault is correctly raised, however, the returned fault message is inconsistent and has the soap 1.2 fault containing the soap 1.1 fault content, as
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<soap:Fault>
<faultcode xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">ns1:VersionMismatch</faultcode>
<faultstring>A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.</faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
This will lead to problems at most soap clients (including CXF which gets an NPE), as the fault code is not found at the expected element.
We can fix this by returning either the soap 1.1 fault or the soap 1.2 fault. The client that sent the soap 1.2 request message obviously understands both soap 1.2 and 1.1, it is not clear whether the service must return the soap 1.1 message or may return the message of the same version as the request message, in this case, the soap 1.2 message.