diff options
Diffstat (limited to 'axiom/src/soap')
-rw-r--r-- | axiom/src/soap/soap_body.c | 29 | ||||
-rw-r--r-- | axiom/src/soap/soap_builder.c | 1 |
2 files changed, 18 insertions, 12 deletions
diff --git a/axiom/src/soap/soap_body.c b/axiom/src/soap/soap_body.c index 8fb7d8f..69ee7ae 100644 --- a/axiom/src/soap/soap_body.c +++ b/axiom/src/soap/soap_body.c @@ -144,21 +144,26 @@ axiom_soap_body_has_fault( } else { - while(!axiom_node_is_complete(soap_body->om_ele_node, env)) + /* This soap body could have been built programatically. Do the following only if soap + * body is created from soap_builder */ + if(soap_body->soap_builder) { - if(axiom_soap_builder_next(soap_body->soap_builder, env) != AXIS2_SUCCESS) + while(!axiom_node_is_complete(soap_body->om_ele_node, env)) { - /* problem in building the SOAP body. Note that has_fault is about soap fault, - * not about problem in building the node. So, even though there is a problem - * building the body, has_fault should be AXIS2_FALSE - */ - break; - } + if(axiom_soap_builder_next(soap_body->soap_builder, env) != AXIS2_SUCCESS) + { + /* problem in building the SOAP body. Note that has_fault is about soap fault, + * not about problem in building the node. So, even though there is a problem + * building the body, has_fault should be AXIS2_FALSE + */ + break; + } - if(soap_body->soap_fault) - { - soap_body->has_fault = AXIS2_TRUE; - break; + if(soap_body->soap_fault) + { + soap_body->has_fault = AXIS2_TRUE; + break; + } } } } diff --git a/axiom/src/soap/soap_builder.c b/axiom/src/soap/soap_builder.c index 0b5829e..f8236ad 100644 --- a/axiom/src/soap/soap_builder.c +++ b/axiom/src/soap/soap_builder.c @@ -151,6 +151,7 @@ axiom_soap_builder_create( soap_builder->soap_version = AXIOM_SOAP12; soap_builder->last_node_status = -1; soap_builder->om_builder = stax_builder; + soap_builder->done = AXIS2_FALSE; status = axiom_soap_builder_identify_soap_version(soap_builder, env, soap_version); if(status != AXIS2_SUCCESS) |