Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
Description
When axis2_msg_recv_receive_impl detects that response is a SOAP fault, it doesn't send this response but delegates sending to HTTP transport (http_transport_utils.c). But the fault message context created by axis2_engine_create_fault_msg_ctx doesn't copy the base axis2 context contained in input message context, as in axis2_core_utils_create_out_msg_ctx used in normal processing. So Rampart context is not found, Rampart fails to process and SOAP fault is send without security headers.
Adding this code at the end of axis2_engine_create_fault_msg_ctx seems to correct the problem but I don't enough master Axis2/C to know if it's allways ok :
if ( 1 == 1 ) { // in order to localize ctx declaration
axis2_ctx_t *ctx = axis2_msg_ctx_get_base(processing_context, env);
if (ctx)
{
axis2_ctx_t *new_ctx = axis2_msg_ctx_get_base(fault_ctx, env);
if (new_ctx)
}
Problem was detected with WSO2 WSF/PHP and I haven't simple Rampart-C test to submit.