Author: shankar
Date: Wed Apr 7 02:46:47 2010
New Revision: 931411
URL: http://svn.apache.org/viewvc?rev=931411&view=rev
Log:
Fixing issue AXIS2C-1232
Modified:
axis/axis2/c/core/trunk/axiom/src/soap/soap_body.c
Modified: axis/axis2/c/core/trunk/axiom/src/soap/soap_body.c
URL:
http://svn.apache.org/viewvc/axis/axis2/c/core/trunk/axiom/src/soap/soap_body.c?rev=931411&r1=931410&r2=931411&view=diff
==============================================================================
--- axis/axis2/c/core/trunk/axiom/src/soap/soap_body.c (original)
+++ axis/axis2/c/core/trunk/axiom/src/soap/soap_body.c Wed Apr 7 02:46:47 2010
@@ -145,25 +145,17 @@ axiom_soap_body_has_fault(
else
{
/* 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)
+ * body is created from soap_builder. Check for last child is to make
sure body's child
+ * are not yet built. If atleast one child is built, we don't need to
build it again,
+ * because , if fault, first child node of body node should be the
fault node. If the child
+ * is not built yet, trigger it to be built. */
+ if(soap_body->soap_builder &&
!axiom_node_is_complete(soap_body->om_ele_node, env) &&
+ !axiom_node_get_last_child(soap_body->om_ele_node, env))
{
- while(!axiom_node_is_complete(soap_body->om_ele_node, env))
+ axiom_soap_builder_next(soap_body->soap_builder, env);
+ if(soap_body->soap_fault)
{
- 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;
- }
+ soap_body->has_fault = AXIS2_TRUE;
}
}
}