You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by su...@apache.org on 2008/06/30 15:07:41 UTC

svn commit: r672755 - /webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c

Author: supun
Date: Mon Jun 30 06:07:40 2008
New Revision: 672755

URL: http://svn.apache.org/viewvc?rev=672755&view=rev
Log:
Correcting the seg-fault in case of a on_fault method not implemented.

Modified:
    webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c

Modified: webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c?rev=672755&r1=672754&r2=672755&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c (original)
+++ webservices/axis2/trunk/c/src/core/receivers/raw_xml_in_out_msg_recv.c Mon Jun 30 06:07:40 2008
@@ -88,6 +88,7 @@
     axiom_namespace_t *env_ns = NULL;
     axiom_node_t *fault_node = NULL;
     axiom_soap_fault_detail_t *fault_detail;
+	axis2_bool_t is_fault = AXIS2_FALSE;
 
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK(env->error, msg_ctx, AXIS2_FAILURE);
@@ -266,7 +267,11 @@
 				 * be taken from here and set to the old message context which is
 				 * used by the worker when the request processing fails.
 				 */
-				fault_node = AXIS2_SVC_SKELETON_ON_FAULT(svc_obj, env, om_node);
+				if (svc_obj->ops->on_fault)
+				{
+					fault_node = AXIS2_SVC_SKELETON_ON_FAULT(svc_obj, env, om_node);
+				}
+				is_fault = AXIS2_TRUE;
 			}
 			else
 			{	
@@ -288,7 +293,11 @@
 						 * be taken from here and set to the old message context which is
 						 * used by the worker when the request processing fails.
 						 */
-						fault_node = AXIS2_SVC_SKELETON_ON_FAULT(svc_obj, env, om_node);
+						if (svc_obj->ops->on_fault)
+						{
+							fault_node = AXIS2_SVC_SKELETON_ON_FAULT(svc_obj, env, om_node);
+						}
+						is_fault = AXIS2_TRUE;
 					}
 				}
 			}
@@ -341,7 +350,7 @@
         return AXIS2_FAILURE;
     }
 
-    if (status != AXIS2_SUCCESS || fault_node)
+    if (status != AXIS2_SUCCESS || is_fault)
     {
         /* something went wrong. set a SOAP Fault */
         const axis2_char_t *fault_value_str = "soapenv:Sender";