You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by sa...@apache.org on 2006/03/22 11:17:09 UTC
svn commit: r387821 -
/webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c
Author: sahan
Date: Wed Mar 22 02:17:07 2006
New Revision: 387821
URL: http://svn.apache.org/viewcvs?rev=387821&view=rev
Log:
More memory leak fixes
Modified:
webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c
Modified: webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c?rev=387821&r1=387820&r2=387821&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c (original)
+++ webservices/axis2/trunk/c/modules/mod_addr/addr_out_handler.c Wed Mar 22 02:17:07 2006
@@ -472,12 +472,18 @@
header_node = AXIS2_SOAP_HEADER_GET_BASE_NODE (soap_header, env);
- addr_ns_obj =
- axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+ addr_ns_obj = axis2_om_namespace_create (env,
+ addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
header_block =
AXIS2_SOAP_HEADER_ADD_HEADER_BLOCK (soap_header, env, type,
addr_ns_obj);
+ if(NULL != addr_ns_obj)
+ {
+ AXIS2_OM_NAMESPACE_FREE(addr_ns_obj, env);
+ addr_ns_obj = NULL;
+ }
+
address = AXIS2_ENDPOINT_REF_GET_ADDRESS (endpoint_ref, env);
if (address && AXIS2_STRCMP ("", address) != 0)
{
@@ -486,13 +492,26 @@
axis2_om_node_t *address_node = NULL;
axis2_om_element_t *address_ele = NULL;
hb_node = AXIS2_SOAP_HEADER_BLOCK_GET_BASE_NODE (header_block, env);
- hb_ele =
- (axis2_om_element_t *) AXIS2_OM_NODE_GET_DATA_ELEMENT (hb_node,
- env);
+ hb_ele = (axis2_om_element_t *)
+ AXIS2_OM_NODE_GET_DATA_ELEMENT (hb_node, env);
+
+ addr_ns_obj = axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+
address_ele =
axis2_om_element_create (env, hb_node, EPR_ADDRESS, addr_ns_obj,
&address_node);
- AXIS2_OM_ELEMENT_SET_TEXT (address_ele, env, address, address_node);
+ if(NULL != address_ele)
+ {
+ axis2_om_namespace_t *dec_ns = NULL;
+ AXIS2_OM_ELEMENT_SET_TEXT (address_ele, env, address, address_node);
+ dec_ns = AXIS2_OM_ELEMENT_FIND_DECLARED_NAMESPACE(address_ele, env,
+ addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+ if(! dec_ns)
+ {
+ AXIS2_OM_NAMESPACE_FREE(addr_ns_obj, env);
+ addr_ns_obj = NULL;
+ }
+ }
}
header_block_node =
@@ -506,6 +525,9 @@
{
axis2_om_node_t *reference_node = NULL;
axis2_om_element_t *reference_ele = NULL;
+
+ addr_ns_obj = axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+
reference_ele = axis2_om_element_create (env,
header_block_node,
EPR_REFERENCE_PARAMETERS,
@@ -514,6 +536,18 @@
axis2_addr_out_handler_process_any_content_type (env, reference_param,
reference_node,
addr_ns);
+
+ if(NULL != reference_ele)
+ {
+ axis2_om_namespace_t *dec_ns = NULL;
+ dec_ns = AXIS2_OM_ELEMENT_FIND_DECLARED_NAMESPACE( reference_ele , env,
+ addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+ if(! dec_ns)
+ {
+ AXIS2_OM_NAMESPACE_FREE(addr_ns_obj, env);
+ addr_ns_obj = NULL;
+ }
+ }
}
if (AXIS2_STRCMP (AXIS2_WSA_NAMESPACE_SUBMISSION, addr_ns) == 0)
@@ -523,7 +557,7 @@
axis2_om_node_t *reference_node = NULL;
referece_properties =
AXIS2_ENDPOINT_REF_GET_REF_PROPERTIES (endpoint_ref, env);
-
+ addr_ns_obj = axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
reference_ele =
axis2_om_element_create (env, header_node,
EPR_REFERENCE_PROPERTIES, addr_ns_obj,
@@ -532,6 +566,18 @@
referece_properties,
reference_node,
addr_ns);
+ if(NULL != reference_ele)
+ {
+ axis2_om_namespace_t *dec_ns = NULL;
+ dec_ns = AXIS2_OM_ELEMENT_FIND_DECLARED_NAMESPACE( reference_ele , env,
+ addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+ if(! dec_ns)
+ {
+ AXIS2_OM_NAMESPACE_FREE(addr_ns_obj, env);
+ addr_ns_obj = NULL;
+ }
+ }
+
}
return AXIS2_SUCCESS;
}
@@ -556,8 +602,7 @@
parent_node = *(parent_node_p);
- addr_ns_obj =
- axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+
interface_qname = AXIS2_ENDPOINT_REF_GET_INTERFACE_NAME (epr, env);
if (interface_qname)
@@ -565,7 +610,9 @@
axis2_char_t *text = NULL;
axis2_char_t *qname_prefix = NULL;
axis2_char_t *qname_localpart = NULL;
-
+
+ addr_ns_obj = axis2_om_namespace_create (env, addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+
if (AXIS2_STRCMP (addr_ns, AXIS2_WSA_NAMESPACE_SUBMISSION) == 0)
{
element_localname = EPR_PORT_TYPE;
@@ -590,6 +637,18 @@
sprintf (text, "%s:%s", qname_prefix, qname_localpart);
AXIS2_OM_ELEMENT_SET_TEXT (interface_ele, env, text, interface_node);
AXIS2_FREE ((*env)->allocator, text);
+ if(NULL !=interface_ele )
+ {
+ axis2_om_namespace_t *dec_ns = NULL;
+ dec_ns = AXIS2_OM_ELEMENT_FIND_DECLARED_NAMESPACE( interface_ele , env,
+ addr_ns, AXIS2_WSA_DEFAULT_PREFIX);
+ if(! dec_ns)
+ {
+ AXIS2_OM_NAMESPACE_FREE(addr_ns_obj, env);
+ addr_ns_obj = NULL;
+ }
+ }
+
}
service_name = AXIS2_ENDPOINT_REF_GET_SVC_NAME (epr, env);