Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.3.0, 1.4.0
-
None
-
None
-
Windows XP SP2
Description
In axis2/c ws-addressing module, I've noticed something strange with Reference Parameters in EPR:
I have a message with a <soapenv:Header> like
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:test="http://example.com/test">
<wsa:To>http://example.com/services/testSvc</wsa:To>
<test:CorrID wsa:IsReferenceParameter="true">123456789</test:CorrID>
<wsa:Action>http://example.com/actionTest</wsa:Action>
<wsa:MessageID>6dc6e535-1a70-4544-9715-26f06cdcf7bb</wsa:MessageID>
</soapenv:Header>
In the axis2_addr_in_extract_ref_params() function of the ws-addressing module, the wsa_qname variable is defined with axutil_qname_create(env, "IsReferenceParameter", "http://www.w3.org/2005/08/addressing", NULL) and as you can see, there is no prefix specified whereas the wsa namespace must be used according to the w3c recommendation (for ws-addressing). As a result, axiom_element_get_attribute( ..., wsa_qname) returns a NULL pointer. I've replaced the NULL prefix with "wsa" in wsa_qname and axiom_element_get_attribute( ..., wsa_qname) returns the correct attribute (IsReferenceParameter). The next function axiom_attribute_get_localname() returns "IsReferenceParameter" but this value is then compared with "true" (axutil_strcmp(attr_value, "true")). I think there's a little misunderstanding here between axiom_attribute_get_localname() and axiom_attribute_get_value(), we must first check if axiom_attribute_get_localname() returns "IsReferenceParameter" and then if axiom_attribute_get_value() returns "true".
Regards,
Julien