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 da...@apache.org on 2006/02/27 04:48:24 UTC

svn commit: r381249 - in /webservices/axis2/trunk/c: modules/core/deployment/ modules/core/description/ modules/core/engine/ modules/core/receivers/ samples/server/echo/ samples/server/math/ test/core/deployment/

Author: damitha
Date: Sun Feb 26 19:48:19 2006
New Revision: 381249

URL: http://svn.apache.org/viewcvs?rev=381249&view=rev
Log:
more memory leak fixes

Modified:
    webservices/axis2/trunk/c/modules/core/deployment/arch_file_data.c
    webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c
    webservices/axis2/trunk/c/modules/core/deployment/conf_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c
    webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/module_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/phases_info.c
    webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c
    webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c
    webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c
    webservices/axis2/trunk/c/modules/core/description/flow.c
    webservices/axis2/trunk/c/modules/core/description/flow_container.c
    webservices/axis2/trunk/c/modules/core/description/module_desc.c
    webservices/axis2/trunk/c/modules/core/description/op.c
    webservices/axis2/trunk/c/modules/core/description/param.c
    webservices/axis2/trunk/c/modules/core/description/svc.c
    webservices/axis2/trunk/c/modules/core/description/svc_grp.c
    webservices/axis2/trunk/c/modules/core/engine/conf.c
    webservices/axis2/trunk/c/modules/core/engine/disp.c
    webservices/axis2/trunk/c/modules/core/engine/disp_checker.c
    webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c
    webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c
    webservices/axis2/trunk/c/samples/server/math/math_skeleton.c
    webservices/axis2/trunk/c/test/core/deployment/test_deployment.c

Modified: webservices/axis2/trunk/c/modules/core/deployment/arch_file_data.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/arch_file_data.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/arch_file_data.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/arch_file_data.c Sun Feb 26 19:48:19 2006
@@ -439,7 +439,7 @@
         AXIS2_FREE((*env)->allocator, file_data_impl->module_dll_name);
         file_data_impl->module_dll_name = NULL;
     }
-    file_data_impl->module_dll_name = module_dll_name;
+    file_data_impl->module_dll_name = AXIS2_STRDUP(module_dll_name, env);
     return AXIS2_SUCCESS;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/arch_reader.c Sun Feb 26 19:48:19 2006
@@ -29,7 +29,6 @@
 {
 	axis2_arch_reader_t arch_reader;
     axis2_desc_builder_t *desc_builder;
-    axis2_module_builder_t *module_builder;
     	
 } axis2_arch_reader_impl_t;
 
@@ -91,9 +90,8 @@
         return NULL;
     }
     
-    arch_reader_impl->arch_reader.ops = NULL;
     arch_reader_impl->desc_builder = NULL;
-    arch_reader_impl->module_builder = NULL;
+    arch_reader_impl->arch_reader.ops = NULL;
     
 	arch_reader_impl->arch_reader.ops = 
 		AXIS2_MALLOC ((*env)->allocator, sizeof(axis2_arch_reader_ops_t));
@@ -126,25 +124,18 @@
 {
     axis2_arch_reader_impl_t *arch_reader_impl = NULL;
     
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE); 
     arch_reader_impl = AXIS2_INTF_TO_IMPL(arch_reader);
     
 	if(NULL != arch_reader->ops)
-        AXIS2_FREE((*env)->allocator, arch_reader->ops);
-   
-	if(NULL != arch_reader_impl->desc_builder)
+        AXIS2_FREE((*env)->allocator, arch_reader->ops);   
+
+    if(arch_reader_impl->desc_builder) 
     {
         AXIS2_DESC_BUILDER_FREE(arch_reader_impl->desc_builder, env);
         arch_reader_impl->desc_builder = NULL;
     }
 
-	if(NULL != arch_reader_impl->module_builder)
-    {
-        AXIS2_MODULE_BUILDER_FREE(arch_reader_impl->module_builder, env);
-        arch_reader_impl->module_builder = NULL;
-    }
-   
     if(arch_reader_impl) 
     {
         AXIS2_FREE((*env)->allocator, arch_reader_impl);
@@ -369,6 +360,7 @@
             AXIS2_FAILURE);
         status = AXIS2_FAILURE;
     }
+    AXIS2_FREE((*env)->allocator, svcs_xml);
     return status;
 }
 
@@ -390,10 +382,16 @@
     AXIS2_PARAM_CHECK((*env)->error, dep_engine, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, svc_grp, AXIS2_FAILURE);
     arch_reader_impl = AXIS2_INTF_TO_IMPL(arch_reader);
-    
-    arch_reader_impl->desc_builder = axis2_desc_builder_create_with_file_and_dep_engine(env, 
-        svc_xml, dep_engine);
-    if(!(arch_reader_impl->desc_builder))
+   
+    if(arch_reader_impl->desc_builder)
+    {
+        AXIS2_DESC_BUILDER_FREE(arch_reader_impl->desc_builder, env);
+        arch_reader_impl->desc_builder = NULL;
+    }
+    arch_reader_impl->desc_builder = 
+        axis2_desc_builder_create_with_file_and_dep_engine(env, svc_xml, 
+            dep_engine);
+    if(!arch_reader_impl->desc_builder)
     {
         return AXIS2_FAILURE;
     }
@@ -456,6 +454,7 @@
         grp_builder = axis2_svc_grp_builder_create_with_svc_and_dep_engine(env, 
             svcs, dep_engine);
         status = AXIS2_SVC_GRP_BUILDER_POPULATE_SVC_GRP(grp_builder, env, svc_grp);
+        AXIS2_SVC_GRP_BUILDER_FREE(grp_builder, env);
     }
     return status;
 }
@@ -504,20 +503,12 @@
     
     if(AXIS2_SUCCESS == status)
     { 
-        if(arch_reader_impl->module_builder)
-        {
-            AXIS2_MODULE_BUILDER_FREE(arch_reader_impl->module_builder, env);
-            arch_reader_impl->module_builder = NULL;
-        } 
-        arch_reader_impl->module_builder = 
+        axis2_module_builder_t *module_builder = NULL;
+        module_builder = 
             axis2_module_builder_create_with_file_and_dep_engine_and_module(env,
                 module_xml, dep_engine, module_desc);
-        status = AXIS2_MODULE_BUILDER_POPULATE_MODULE(arch_reader_impl->
-            module_builder, env);
-        if(AXIS2_SUCCESS != status)
-        {
-            return AXIS2_FAILURE;
-        }
+        status = AXIS2_MODULE_BUILDER_POPULATE_MODULE(module_builder, env);
+        AXIS2_MODULE_BUILDER_FREE(module_builder, env);
     }
     else
     {
@@ -525,6 +516,7 @@
             AXIS2_ERROR_MODULE_XML_NOT_FOUND_FOR_THE_MODULE, AXIS2_FAILURE);
         status = AXIS2_FAILURE;
     }
+    AXIS2_FREE((*env)->allocator, module_xml);
     return status;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/deployment/conf_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/conf_builder.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/conf_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/conf_builder.c Sun Feb 26 19:48:19 2006
@@ -662,6 +662,7 @@
             trs_name = AXIS2_OM_ELEMENT_GET_ATTRIBUTE(transport_element, env, 
                 qattname);
         }
+        AXIS2_QNAME_FREE(qattname, env);
         if(NULL != trs_name)
         {
             axis2_char_t *name = NULL;
@@ -691,6 +692,7 @@
             name = AXIS2_OM_ATTRIBUTE_GET_VALUE(trs_name, env);
             qname = axis2_qname_create(env, name, NULL, NULL);
             transport_out = axis2_transport_out_desc_create_with_qname(env, qname);
+            AXIS2_QNAME_FREE(qname, env);
             if(NULL == transport_out)
             {
                 return AXIS2_FAILURE;
@@ -700,6 +702,7 @@
             qdllname = axis2_qname_create(env, AXIS2_CLASSNAME, NULL, NULL);
             trs_dll_att = AXIS2_OM_ELEMENT_GET_ATTRIBUTE(transport_element, env,
                 qdllname);
+            AXIS2_QNAME_FREE(qdllname, env);
             if(NULL == trs_dll_att)
             {
                 AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_TRANSPORT_SENDER_ERROR,
@@ -738,6 +741,7 @@
             qparamst = axis2_qname_create(env, AXIS2_PARAMETERST, NULL, NULL);
             itr = AXIS2_OM_ELEMENT_GET_CHILDREN_WITH_QNAME(transport_element,
                 env, qparamst, transport_node);
+            AXIS2_QNAME_FREE(qparamst, env);
             AXIS2_DESC_BUILDER_PROCESS_PARAMS(conf_builder->desc_builder, env,
                 itr, transport_out->param_container, builder_impl->conf->
                     param_container);
@@ -746,6 +750,7 @@
             qinflowst = axis2_qname_create(env, AXIS2_INFLOWST, NULL, NULL); 
             in_flow_element = AXIS2_OM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME(
                 transport_element, env, qinflowst, transport_node, &in_flow_node);
+            AXIS2_QNAME_FREE(qinflowst, env);
             if(NULL != in_flow_element)
             {
                 AXIS2_ERROR_SET((*env)->error, 
@@ -755,6 +760,7 @@
             qoutflowst = axis2_qname_create(env, AXIS2_OUTFLOWST, NULL, NULL);
             out_flow_element = AXIS2_OM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME(
                 transport_element, env, qoutflowst, transport_node, &out_flow_node);
+            AXIS2_QNAME_FREE(qoutflowst, env);
             if(NULL != out_flow_element)
             {
                 axis2_flow_t *flow = NULL;
@@ -774,6 +780,7 @@
             in_fault_flow_element = AXIS2_OM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME(
                 transport_element, env, qinfaultflowst, transport_node, 
                     &in_fault_flow_node);
+            AXIS2_QNAME_FREE(qinfaultflowst, env);
             if(NULL != in_fault_flow_element)
             {
                 AXIS2_ERROR_SET((*env)->error, 
@@ -786,6 +793,7 @@
             out_fault_flow_element = AXIS2_OM_ELEMENT_GET_FIRST_CHILD_WITH_QNAME(
                 transport_element, env, qoutfaultflowst, transport_node, 
                     &out_fault_flow_node);
+            AXIS2_QNAME_FREE(qoutfaultflowst, env);
             if(NULL != out_fault_flow_element)
             {
                 axis2_flow_t *flow = NULL;

Modified: webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/dep_engine.c Sun Feb 26 19:48:19 2006
@@ -550,14 +550,17 @@
         int size = 0;
         int i = 0;
         
-        /*size = AXIS2_ARRAY_LIST_SIZE(dep_engine_impl->module_list, env);
+        size = AXIS2_ARRAY_LIST_SIZE(dep_engine_impl->module_list, env);
         for(i = 0; i < size; i++)
         {
             axis2_qname_t *qname = NULL;
             qname = AXIS2_ARRAY_LIST_GET(dep_engine_impl->module_list, env, i);
-            AXIS2_QNAME_FREE(qname, env);
-            qname = NULL;
-        }*/
+            if(qname)
+            {
+                AXIS2_QNAME_FREE(qname, env);
+                qname = NULL;
+            }
+        }
         AXIS2_ARRAY_LIST_FREE(dep_engine_impl->module_list, env);
         dep_engine_impl->module_list = NULL;
     }
@@ -616,7 +619,10 @@
     {
         dep_engine_impl->module_list = axis2_array_list_create(env, 0);
         if(!dep_engine_impl->module_list)
+        {
+            AXIS2_QNAME_FREE(qname, env);
             return AXIS2_FAILURE;
+        }
     }
     return AXIS2_ARRAY_LIST_ADD(dep_engine_impl->module_list, env, qname);
 }
@@ -920,7 +926,6 @@
         return NULL;
     }
     
-    AXIS2_CONF_SET_DEP_ENGINE(dep_engine_impl->conf, env, dep_engine);
     return dep_engine_impl->conf;
 }
 
@@ -986,14 +991,15 @@
     size = AXIS2_ARRAY_LIST_SIZE(dep_engine_impl->module_list, env);
     for(i = 0; i < size; i++)
     {
-        axis2_qname_t *qname = (axis2_qname_t *) AXIS2_ARRAY_LIST_GET(
+        axis2_qname_t *qname = NULL;
+        qname = (axis2_qname_t *) AXIS2_ARRAY_LIST_GET(
             dep_engine_impl->module_list, env, i);
         if (qname && dep_engine_impl->conf)
         {
             status = AXIS2_CONF_ENGAGE_MODULE(dep_engine_impl->conf, env, qname);
             if(AXIS2_SUCCESS != status)
             {
-                return AXIS2_FAILURE;
+                return status;
             }
         }
     }
@@ -1281,7 +1287,11 @@
     axis2_class_loader_init(env);
     module = (axis2_module_t *) axis2_class_loader_create_dll(env, 
         impl_info_param);
-    
+    /* We cannot free the created impl_info_param here because by freeing
+     * so, it will free dll_desc which in turn unload the module. So we
+     * add this as a param to module_desc
+     */
+    AXIS2_MODULE_DESC_ADD_PARAM(module_desc, env, impl_info_param);
     return AXIS2_MODULE_DESC_SET_MODULE(module_desc, env, module);
 }
 
@@ -1477,6 +1487,7 @@
             axis2_svc_grp_t *svc_grp = NULL;
             axis2_char_t *file_name = NULL;
             axis2_module_desc_t *meta_data = NULL;
+            axis2_arch_reader_t *arch_reader = NULL;
             
             dep_engine_impl->curr_file = (axis2_arch_file_data_t *) 
                 AXIS2_ARRAY_LIST_GET(dep_engine_impl->ws_to_deploy, env, i);
@@ -1485,13 +1496,7 @@
             switch (type) 
             {
                 case AXIS2_SVC:
-                    if(dep_engine_impl->arch_reader)
-                    {
-                        AXIS2_ARCH_READER_FREE(dep_engine_impl->arch_reader, env);
-                        dep_engine_impl->arch_reader = NULL;
-                    }
-                    dep_engine_impl->arch_reader = axis2_arch_reader_create(env);
-		    
+                    arch_reader = axis2_arch_reader_create(env); 
                     
                     /* TODO archiveReader.processWSDLs(currentArchiveFile,this); */
                     /* AxisService service = archiveReader.createService(currentArchiveFile.getAbsolutePath()); */
@@ -1499,7 +1504,7 @@
                         dep_engine_impl->conf);
                     file_name = AXIS2_ARCH_FILE_DATA_GET_NAME(dep_engine_impl->
                         curr_file, env);
-                    status = AXIS2_ARCH_READER_PROCESS_SVC_GRP(dep_engine_impl->arch_reader, env,
+                    status = AXIS2_ARCH_READER_PROCESS_SVC_GRP(arch_reader, env,
                         file_name, dep_engine, svc_grp);
                     if(AXIS2_SUCCESS != status)
                     {
@@ -1520,11 +1525,7 @@
                     dep_engine_impl->curr_file = NULL;
                     break;
                 case AXIS2_MODULE:
-                    if(dep_engine_impl->arch_reader)
-                    {
-                        AXIS2_ARCH_READER_FREE(dep_engine_impl->arch_reader, env);
-                        dep_engine_impl->arch_reader = NULL;
-                    }
+                    arch_reader = axis2_arch_reader_create(env); 
                     dep_engine_impl->arch_reader = axis2_arch_reader_create(env);
                     meta_data = axis2_module_desc_create(env);
                     file_name = AXIS2_ARCH_FILE_DATA_GET_NAME(dep_engine_impl->
@@ -1551,8 +1552,8 @@
                             metaData.getName().getLocalPart())); */
                     dep_engine_impl->curr_file = NULL;
                     break;
-
             }
+            AXIS2_ARCH_READER_FREE(arch_reader, env);
         }
     }
     return AXIS2_SUCCESS;
@@ -1725,17 +1726,16 @@
     file_name = AXIS2_FILE_GET_NAME(module_archive, env);
     status = AXIS2_ARCH_READER_READ_MODULE_ARCH(arch_reader, env, file_name, 
         dep_engine, module_desc);    
+    AXIS2_ARCH_READER_FREE(arch_reader, env);
     if(AXIS2_SUCCESS != status)
     {
         AXIS2_MODULE_DESC_FREE(module_desc, env);
-        AXIS2_ARCH_READER_FREE(arch_reader, env);
         return NULL;
     }
     status = axis2_dep_engine_load_module_dll(dep_engine, env, module_desc);
     if(AXIS2_SUCCESS != status)
     {
         AXIS2_MODULE_DESC_FREE(module_desc, env);
-        AXIS2_ARCH_READER_FREE(arch_reader, env);
         return NULL;
     }
     
@@ -1771,9 +1771,7 @@
     }
     
     dep_engine_impl->curr_file = NULL;
-    AXIS2_ARCH_READER_FREE(arch_reader, env);            
    
-    /*axismodule.setModuleClassLoader(currentArchiveFile.getClassLoader()); */
     return module_desc;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/desc_builder.c Sun Feb 26 19:48:19 2006
@@ -261,8 +261,7 @@
     axis2_om_document_t *document = NULL;
     axis2_om_node_t *root = NULL;
     
-    AXIS2_ENV_CHECK(env, NULL);
-    
+    AXIS2_ENV_CHECK(env, NULL); 
     desc_builder_impl = AXIS2_INTF_TO_IMPL(desc_builder);
     
     if(!desc_builder_impl->file_name)
@@ -330,9 +329,9 @@
         return NULL;
     }
     
-    if(NULL == flow_element)
+    if(!flow_element)
     {
-        return flow;
+        return NULL;
     }
     
     qchild = axis2_qname_create(env, AXIS2_HANDLERST, NULL, NULL); 
@@ -344,7 +343,7 @@
     while(AXIS2_TRUE == AXIS2_OM_CHILDREN_QNAME_ITERATOR_HAS_NEXT(handlers ,env))
     {
         axis2_om_node_t *handler_node = NULL;
-        struct axis2_handler_desc *handler = NULL;
+        axis2_handler_desc_t *handler = NULL;
         axis2_status_t status = AXIS2_FAILURE;
             
         handler_node = (axis2_om_node_t *)
@@ -827,8 +826,10 @@
         
     AXIS2_ENV_CHECK(env, NULL);
     AXIS2_PARAM_CHECK((*env)->error, recv_element, NULL);
+
     class_qname = axis2_qname_create(env, AXIS2_CLASSNAME, NULL, NULL);
     recv_name = AXIS2_OM_ELEMENT_GET_ATTRIBUTE(recv_element, env, class_qname);
+    AXIS2_QNAME_FREE(class_qname, env);
     class_name = AXIS2_OM_ATTRIBUTE_GET_VALUE(recv_name, env);
     msg_recv_dll_name = 
         AXIS2_DLL_DESC_CREATE_PLATFORM_SPECIFIC_DLL_NAME(dll_desc, env, 

Modified: webservices/axis2/trunk/c/modules/core/deployment/module_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/module_builder.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/module_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/module_builder.c Sun Feb 26 19:48:19 2006
@@ -353,7 +353,8 @@
         axis2_flow_t *flow = AXIS2_DESC_BUILDER_PROCESS_FLOW(module_builder->
             desc_builder, env, out_fault_flow_element, builder_impl->module_desc->
                 params, out_fault_flow_node);
-        status = AXIS2_MODULE_DESC_SET_FAULT_OUTFLOW(builder_impl->module_desc, env, flow);
+        status = AXIS2_MODULE_DESC_SET_FAULT_OUTFLOW(builder_impl->module_desc, 
+            env, flow);
         if(AXIS2_SUCCESS != status)
         {
             return status;
@@ -375,6 +376,7 @@
         op = (axis2_op_t *) AXIS2_ARRAY_LIST_GET(ops, env, i);
         AXIS2_MODULE_DESC_ADD_OP(builder_impl->module_desc, env, op);
     }
+    AXIS2_ARRAY_LIST_FREE(ops, env);
     AXIS2_LOG_TRACE((*env)->log, AXIS2_LOG_SI, "axis2_module_builder_populate_module end");
     return AXIS2_SUCCESS;
 }

Modified: webservices/axis2/trunk/c/modules/core/deployment/phases_info.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/phases_info.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/phases_info.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/phases_info.c Sun Feb 26 19:48:19 2006
@@ -167,6 +167,77 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
     
+    if(phases_info_impl->in_phases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->in_phases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->in_phases, env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->in_phases, env);
+        phases_info_impl->in_phases = NULL;
+    }
+    
+    if(phases_info_impl->out_phases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->out_phases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->out_phases, 
+                env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->out_phases, env);
+        phases_info_impl->out_phases = NULL;
+    }
+    
+    if(phases_info_impl->in_faultphases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->in_faultphases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->in_faultphases, 
+                env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->in_faultphases, env);
+        phases_info_impl->in_faultphases = NULL;
+    }
+
+    if(phases_info_impl->out_faultphases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->out_faultphases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->out_faultphases, 
+                env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->out_faultphases, env);
+        phases_info_impl->out_faultphases = NULL;
+    }
+
 	if(NULL != phases_info->ops)
     {
         AXIS2_FREE((*env)->allocator, phases_info->ops);
@@ -188,15 +259,30 @@
                                 axis2_env_t **env,
                                 axis2_array_list_t *in_phases) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, in_phases, AXIS2_FAILURE);
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
-    if(info_impl->in_phases)
-        AXIS2_ARRAY_LIST_FREE(info_impl->in_phases, env);
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    if(phases_info_impl->in_phases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->in_phases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->in_phases, env,
+                 i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->in_phases, env);
+        phases_info_impl->in_phases = NULL;
+    }
     
-    info_impl->in_phases = in_phases;
+    phases_info_impl->in_phases = in_phases;
     return AXIS2_SUCCESS;
 }
 
@@ -205,15 +291,30 @@
                                 axis2_env_t **env,
                                 axis2_array_list_t *out_phases) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, out_phases, AXIS2_FAILURE);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
-    if(info_impl->out_phases)
-        AXIS2_ARRAY_LIST_FREE(info_impl->out_phases, env);
-    info_impl->out_phases = out_phases;
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    if(phases_info_impl->out_phases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->out_phases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->out_phases, 
+                env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->out_phases, env);
+        phases_info_impl->out_phases = NULL;
+    }
+    phases_info_impl->out_phases = out_phases;
     return AXIS2_SUCCESS;
 }
 
@@ -222,15 +323,30 @@
                                 axis2_env_t **env,
                                 axis2_array_list_t *in_faultphases) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, in_faultphases, AXIS2_FAILURE);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
-    if(info_impl->in_faultphases)
-        AXIS2_ARRAY_LIST_FREE(info_impl->in_faultphases, env);
-    info_impl->in_faultphases = in_faultphases;
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    if(phases_info_impl->in_faultphases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->in_faultphases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->in_faultphases, 
+                env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->in_faultphases, env);
+        phases_info_impl->in_faultphases = NULL;
+    }
+    phases_info_impl->in_faultphases = in_faultphases;
     return AXIS2_SUCCESS;
 }
 
@@ -239,16 +355,30 @@
                                         axis2_env_t **env,
                                         axis2_array_list_t * out_faultphases) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, out_faultphases, AXIS2_FAILURE);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
-    if(info_impl->out_faultphases)
-        AXIS2_ARRAY_LIST_FREE(info_impl->out_faultphases, env);
-    
-    info_impl->out_faultphases = out_faultphases;
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    if(phases_info_impl->out_faultphases)
+    {
+        int i = 0;
+        int size = 0;
+
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->out_faultphases, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_char_t *phase_name = NULL;
+            
+            phase_name = AXIS2_ARRAY_LIST_GET(phases_info_impl->out_faultphases, 
+                env, i);
+            AXIS2_FREE((*env)->allocator, phase_name);
+        }
+        AXIS2_ARRAY_LIST_FREE(phases_info_impl->out_faultphases, env);
+        phases_info_impl->out_faultphases = NULL;
+    } 
+    phases_info_impl->out_faultphases = out_faultphases;
     return AXIS2_SUCCESS;
 }
 
@@ -292,7 +422,7 @@
 axis2_phases_info_get_op_in_phases(axis2_phases_info_t *phases_info,
                                         axis2_env_t **env) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     struct axis2_phase *phase = NULL;
     int i = 0; 
     int size = 0;
@@ -302,7 +432,7 @@
     
     AXIS2_ENV_CHECK(env, NULL);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
     op_in_phases = axis2_array_list_create(env, 0);
     if(!op_in_phases)
     {
@@ -320,14 +450,14 @@
         op_in_phases = NULL;
         return NULL;
     }
-    if(!info_impl->in_phases)
+    if(!phases_info_impl->in_phases)
     {
         return op_in_phases;
     }
-    size = AXIS2_ARRAY_LIST_SIZE(info_impl->in_phases, env);
+    size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->in_phases, env);
     for (i = 0; i < size; i++) 
     {
-        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(info_impl->in_phases, env, i);
+        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(phases_info_impl->in_phases, env, i);
         if (0 == AXIS2_STRCMP(AXIS2_PHASE_TRANSPORTIN, phase_name) ||
                 0 == AXIS2_STRCMP(AXIS2_PHASE_PRE_DISPATCH, phase_name) ||
                 0 == AXIS2_STRCMP(AXIS2_PHASE_DISPATCH, phase_name) ||
@@ -355,7 +485,7 @@
 axis2_phases_info_get_op_out_phases(axis2_phases_info_t *phases_info,
                                             axis2_env_t **env) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     struct axis2_phase *phase = NULL;
     int i = 0; 
     int size = 0;
@@ -365,7 +495,7 @@
     
     AXIS2_ENV_CHECK(env, NULL);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
     op_out_phases = axis2_array_list_create(env, 0);
     if(!op_out_phases)
     {
@@ -373,11 +503,11 @@
         return NULL;
     }
 
-    if(info_impl->out_phases)
-        size = AXIS2_ARRAY_LIST_SIZE(info_impl->out_phases, env);
+    if(phases_info_impl->out_phases)
+        size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->out_phases, env);
     for (i = 0; i < size; i++) 
     {
-        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(info_impl->out_phases, env, i);
+        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(phases_info_impl->out_phases, env, i);
         if (0 == AXIS2_STRCMP(AXIS2_PHASE_TRANSPORT_OUT, phase_name)) 
         {
             /* Do Nothing */
@@ -423,7 +553,7 @@
 axis2_phases_info_get_op_in_faultphases(axis2_phases_info_t *phases_info,
                                                 axis2_env_t **env) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     int i = 0;
     int size = 0;
     axis2_status_t status = AXIS2_FAILURE;
@@ -433,7 +563,7 @@
     
     AXIS2_ENV_CHECK(env, NULL);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
     op_in_faultphases = axis2_array_list_create(env, 0);
     if(!op_in_faultphases)
     {
@@ -441,18 +571,18 @@
         return NULL;
     }
 
-    if(!info_impl->in_faultphases)
+    if(!phases_info_impl->in_faultphases)
     {
         return NULL;
     }
-    size = AXIS2_ARRAY_LIST_SIZE(info_impl->in_faultphases, env);
+    size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->in_faultphases, env);
     if(0 == size)
     {
         return NULL;
     }
     for (i = 0; i < size; i++) 
     {
-        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(info_impl->in_faultphases, env, i);
+        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(phases_info_impl->in_faultphases, env, i);
         phase = axis2_phase_create(env, phase_name);
         status = AXIS2_ARRAY_LIST_ADD(op_in_faultphases, env, phase);
         if(AXIS2_FAILURE == status)
@@ -472,7 +602,7 @@
 axis2_phases_info_get_op_out_faultphases(axis2_phases_info_t *phases_info,
                                                 axis2_env_t **env) 
 {
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     int i = 0;
     int size = 0;
     axis2_status_t status = AXIS2_FAILURE;
@@ -482,7 +612,7 @@
         
     AXIS2_ENV_CHECK(env, NULL);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
     op_out_faultphases = axis2_array_list_create(env, 0);
     if(!op_out_faultphases)
     {
@@ -490,16 +620,16 @@
         return NULL;
     }
 
-    if(!info_impl->out_faultphases)
+    if(!phases_info_impl->out_faultphases)
     {
         return NULL;
     }
-    size = AXIS2_ARRAY_LIST_SIZE(info_impl->out_faultphases, env);
+    size = AXIS2_ARRAY_LIST_SIZE(phases_info_impl->out_faultphases, env);
     if(0 == size)
         return NULL;
     for (i = 0; i < size; i++) 
     {
-        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(info_impl->out_faultphases, env, i);
+        phase_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(phases_info_impl->out_faultphases, env, i);
         phase = axis2_phase_create(env, phase_name);
         status = AXIS2_ARRAY_LIST_ADD(op_out_faultphases, env, phase);
         if(AXIS2_FAILURE == status)
@@ -526,12 +656,12 @@
     axis2_array_list_t *op_in_faultphases = NULL;
     axis2_array_list_t *op_out_faultphases = NULL;
     
-    axis2_phases_info_impl_t *info_impl = NULL;
+    axis2_phases_info_impl_t *phases_info_impl = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, axis2_opt, AXIS2_FAILURE);
     
-    info_impl = AXIS2_INTF_TO_IMPL(phases_info);
+    phases_info_impl = AXIS2_INTF_TO_IMPL(phases_info);
     
     op_in_phases = axis2_phases_info_get_op_in_phases(phases_info, env);
     if(NULL == op_in_phases)

Modified: webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/repos_listener.c Sun Feb 26 19:48:19 2006
@@ -240,6 +240,7 @@
     axis2_repos_listener_impl_t *listener_impl = NULL;
     axis2_char_t *svc_path = NULL;
     axis2_char_t *temp_path = NULL;
+    axis2_status_t status = AXIS2_FAILURE;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     listener_impl = AXIS2_INTF_TO_IMPL(listener);
@@ -248,7 +249,9 @@
         env);
     svc_path = AXIS2_STRACAT(temp_path, AXIS2_SVC_PATH, env);
     AXIS2_FREE((*env)->allocator, temp_path);
-    return axis2_repos_listener_search(listener, env, svc_path, AXIS2_SVC);
+    status = axis2_repos_listener_search(listener, env, svc_path, AXIS2_SVC);
+    AXIS2_FREE((*env)->allocator, svc_path);
+    return status;
 }
 
 axis2_status_t AXIS2_CALL
@@ -259,6 +262,7 @@
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     listener_impl = AXIS2_INTF_TO_IMPL(listener);
+
     /* TODO completet this */
     /* this call the update method of WSInfoList */
     return AXIS2_WS_INFO_LIST_UPDATE(listener_impl->info_list, env);
@@ -364,7 +368,6 @@
         }
     }
     
-    size = AXIS2_ARRAY_LIST_SIZE(current_info_list, env);
     for(i = 0; i < size; i++)
     {
         axis2_file_t *del_file = NULL;

Modified: webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/svc_builder.c Sun Feb 26 19:48:19 2006
@@ -366,11 +366,6 @@
         AXIS2_DLL_DESC_FREE(dll_desc, env);
         return AXIS2_FAILURE;
     }
-    /* param does not free the value, because it does not know the value type.
-     * therefore we free the value
-     */
-    AXIS2_FREE((*env)->allocator, svc_dll_name);
-    svc_dll_name = NULL;
     /* free all temp vars */
     AXIS2_FREE((*env)->allocator, temp_path);
     temp_path = NULL;
@@ -533,7 +528,7 @@
     AXIS2_PARAM_CHECK((*env)->error, op_itr, NULL);
     builder_impl = AXIS2_INTF_TO_IMPL(svc_builder);
     
-    ops = axis2_array_list_create(env, 16);
+    ops = axis2_array_list_create(env, 0);
     while(AXIS2_TRUE == AXIS2_OM_CHILDREN_QNAME_ITERATOR_HAS_NEXT(op_itr, env))
     {
         axis2_om_element_t *op_element = NULL;
@@ -595,9 +590,8 @@
             }
             else
             {
-               /* TODO uncomment this when constructor is available */
-               /*op_desc = axis2_op_create(env, mep_url); */
                 op_desc = axis2_op_create(env);
+                AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op_desc, env, mep_url);
             }
             AXIS2_OP_SET_QNAME(op_desc, env, qopname);
         }
@@ -613,9 +607,8 @@
             }
             else
             {
-                /* TODO uncomment this when constructor is available */
-               /*op_desc = axis2_op_create(env, mep); */
                 op_desc = axis2_op_create(env);
+                AXIS2_OP_SET_MSG_EXCHANGE_PATTERN(op_desc, env, mep);
                 AXIS2_OP_SET_WSDL_OP(op_desc, env, wsdl_op);
             } 
         }

Modified: webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c (original)
+++ webservices/axis2/trunk/c/modules/core/deployment/ws_info_list.c Sun Feb 26 19:48:19 2006
@@ -29,8 +29,7 @@
     /**
      * This is to store all the jar files in a specified folder (WEB_INF)
      */
-    axis2_array_list_t *info_list;
-    
+    axis2_array_list_t *info_list; 
     /**
      * All the curently updated jars
      */
@@ -166,8 +165,7 @@
 {
     axis2_ws_info_list_impl_t *info_list_impl = NULL;
     
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);    
     info_list_impl = AXIS2_INTF_TO_IMPL(ws_info_list);
     
     if(info_list_impl->current_info_lists)
@@ -179,6 +177,7 @@
         for (i = 0; i < list_size; i++) 
         {
             axis2_char_t *file_name = NULL;
+
             file_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(info_list_impl->
                 current_info_lists, env, i);
             AXIS2_FREE((*env)->allocator, file_name);
@@ -284,8 +283,7 @@
             status = AXIS2_ARRAY_LIST_ADD(info_list_impl->info_list, env, ws_info);
             if(AXIS2_SUCCESS != status)
             {
-                AXIS2_FILE_FREE(file, env);
-                return AXIS2_FAILURE;
+                return status;
             }
             file_data = axis2_arch_file_data_create_with_type_and_file(env,
                 AXIS2_SVC, file);
@@ -294,8 +292,7 @@
                 env, file_data);            
             if(AXIS2_SUCCESS != status)
             {
-                AXIS2_FILE_FREE(file, env);
-                return AXIS2_FAILURE;
+                return status;
             }
                 
             /*}*/
@@ -319,8 +316,7 @@
             status = AXIS2_ARRAY_LIST_ADD(info_list_impl->info_list, env, ws_info);
             if(AXIS2_SUCCESS != status)
             {
-                AXIS2_FILE_FREE(file, env);
-                return AXIS2_FAILURE;
+                return status;
             }
             file_data = axis2_arch_file_data_create_with_type_and_file(env,
                 AXIS2_MODULE, file);
@@ -329,8 +325,7 @@
                 env, file_data);
             if(AXIS2_SUCCESS != status)
             {
-                AXIS2_FILE_FREE(file, env);
-                return AXIS2_FAILURE;
+                return status;
             }
             /*}*/
                 
@@ -473,16 +468,6 @@
         AXIS2_ARRAY_LIST_REMOVE(info_list_impl->info_list, env, index);
     }
     AXIS2_ARRAY_LIST_FREE(temp_list, env);
-    list_size = AXIS2_ARRAY_LIST_SIZE(info_list_impl->current_info_lists, env);
-    for (i = 0; i < list_size; i++) 
-    {
-        axis2_char_t *file_name = NULL;
-        file_name = (axis2_char_t *) AXIS2_ARRAY_LIST_GET(info_list_impl->
-            current_info_lists, env, i);
-        AXIS2_FREE((*env)->allocator, file_name);
-    }
-    AXIS2_ARRAY_LIST_FREE(info_list_impl->current_info_lists, env);
-    info_list_impl->current_info_lists = NULL;
     return AXIS2_SUCCESS;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/description/flow.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/flow.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/flow.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/flow.c Sun Feb 26 19:48:19 2006
@@ -107,16 +107,28 @@
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     flow_impl = AXIS2_INTF_TO_IMPL(flow);
     
-    if(NULL != flow->ops)
-    {
-        AXIS2_FREE((*env)->allocator, flow->ops);
-        flow->ops = NULL;
-    }
-    
     if(NULL != flow_impl->list)
     {
+        int i = 0;
+        int size = 0;
+        
+        size = AXIS2_ARRAY_LIST_SIZE(flow_impl->list, env);
+        for(i = 0; i < size; i++)
+        {
+            axis2_handler_desc_t *handler_desc = NULL;
+
+            handler_desc = (axis2_handler_desc_t *) AXIS2_ARRAY_LIST_GET(
+                flow_impl->list, env, i);
+            AXIS2_HANDLER_DESC_FREE(handler_desc, env);
+        }
         AXIS2_ARRAY_LIST_FREE(flow_impl->list, env);
         flow_impl->list = NULL;
+    }
+    
+    if(NULL != flow->ops)
+    {
+        AXIS2_FREE((*env)->allocator, flow->ops);
+        flow->ops = NULL;
     }
     
     if(flow_impl)

Modified: webservices/axis2/trunk/c/modules/core/description/flow_container.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/flow_container.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/flow_container.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/flow_container.c Sun Feb 26 19:48:19 2006
@@ -146,24 +146,42 @@
 axis2_flow_container_free(axis2_flow_container_t *flow_container,
                             axis2_env_t **env)
 {
+    axis2_flow_container_impl_t *container_impl = NULL;
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+    container_impl = AXIS2_INTF_TO_IMPL(flow_container);
     
+    if(NULL != container_impl->in)
+    {
+        AXIS2_FLOW_FREE(container_impl->in, env);
+        container_impl->in = NULL;
+    }
+
+    if(NULL != container_impl->out)
+    {
+        AXIS2_FLOW_FREE(container_impl->out, env);
+        container_impl->out = NULL;
+    }
+    
+    if(NULL != container_impl->in_fault)
+    {
+        AXIS2_FLOW_FREE(container_impl->in_fault, env);
+        container_impl->in_fault = NULL;
+    }
+    
+    if(NULL != container_impl->out_fault)
+    {
+        AXIS2_FLOW_FREE(container_impl->out_fault, env);
+        container_impl->out_fault = NULL;
+    }
+
     if(NULL != flow_container->ops)
         AXIS2_FREE((*env)->allocator, flow_container->ops);
     
-    if(NULL != AXIS2_INTF_TO_IMPL(flow_container)->in)
-        AXIS2_FLOW_FREE(AXIS2_INTF_TO_IMPL(flow_container)->in, env);
-    
-    if(NULL != AXIS2_INTF_TO_IMPL(flow_container)->out)
-        AXIS2_FLOW_FREE(AXIS2_INTF_TO_IMPL(flow_container)->out, env);
-    
-    if(NULL != AXIS2_INTF_TO_IMPL(flow_container)->in_fault)
-        AXIS2_FLOW_FREE(AXIS2_INTF_TO_IMPL(flow_container)->in_fault, env);
-    
-    if(NULL != AXIS2_INTF_TO_IMPL(flow_container)->out_fault)
-        AXIS2_FLOW_FREE(AXIS2_INTF_TO_IMPL(flow_container)->out_fault, env);
-     
-    AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(flow_container));
+    if(container_impl)
+    { 
+        AXIS2_FREE((*env)->allocator, container_impl);
+        container_impl = NULL;
+    }
     
     return AXIS2_SUCCESS;
 }
@@ -193,6 +211,7 @@
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE); 
     container_impl = AXIS2_INTF_TO_IMPL(flow_container);
+
     if(container_impl->in)
     {
         AXIS2_FLOW_FREE(container_impl->in, env);

Modified: webservices/axis2/trunk/c/modules/core/description/module_desc.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/module_desc.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/module_desc.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/module_desc.c Sun Feb 26 19:48:19 2006
@@ -22,14 +22,10 @@
  */ 
 typedef struct axis2_module_desc_impl
 {
-	axis2_module_desc_t module_desc;
-    
+	axis2_module_desc_t module_desc;    
     axis2_module_t *module;
-    
     axis2_qname_t *qname;
-    
     axis2_conf_t *parent;
-    
     /** 
      * To store module opeartions , which are suppose to be added to a service 
      * if it is engaged to a service
@@ -349,6 +345,7 @@
             AXIS2_ARRAY_LIST_GET(module_desc_list_l, env, i);
         axis2_module_desc_free(module_desc, env);
     }
+    AXIS2_ARRAY_LIST_FREE(module_desc_list_l, env);
     return AXIS2_SUCCESS;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/description/op.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/op.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/op.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/op.c Sun Feb 26 19:48:19 2006
@@ -1403,16 +1403,18 @@
 axis2_status_t AXIS2_CALL
 axis2_op_add_module(axis2_op_t *op,
                                 axis2_env_t **env,
-                                axis2_qname_t *module_name) 
+                                axis2_qname_t *module_qname) 
 {
     axis2_op_impl_t *op_impl = NULL;
+    axis2_qname_t *module_qname_l = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-    AXIS2_PARAM_CHECK((*env)->error, module_name, AXIS2_FAILURE);
-    
+    AXIS2_PARAM_CHECK((*env)->error, module_qname, AXIS2_FAILURE);
     op_impl = AXIS2_INTF_TO_IMPL(op);
     
-    return AXIS2_ARRAY_LIST_ADD(op_impl->modulerefs, env, module_name);
+    module_qname_l = AXIS2_QNAME_CLONE(module_qname, env);
+    
+    return AXIS2_ARRAY_LIST_ADD(op_impl->modulerefs, env, module_qname_l);
 }
 
 axis2_array_list_t *AXIS2_CALL

Modified: webservices/axis2/trunk/c/modules/core/description/param.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/param.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/param.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/param.c Sun Feb 26 19:48:19 2006
@@ -247,10 +247,11 @@
 						axis2_env_t **env)
 {
     void *param_value = NULL;
+    axis2_char_t *param_name = NULL;
     
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     
-    param_value = AXIS2_PARAM_GET_VALUE(param, env);
+    param_value = axis2_param_get_value(param, env);
     if(param_value)
     {
         if(param->ops && param->ops->value_free)
@@ -262,6 +263,8 @@
             AXIS2_FREE((*env)->allocator, param_value);
         }
     }
+    param_name = axis2_param_get_name(param, env);
+    AXIS2_FREE((*env)->allocator, param_name);
     AXIS2_FREE((*env)->allocator, param->ops);
     AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(param));    
     return AXIS2_SUCCESS;

Modified: webservices/axis2/trunk/c/modules/core/description/svc.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/svc.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/svc.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/svc.c Sun Feb 26 19:48:19 2006
@@ -542,22 +542,6 @@
     if(NULL != svc_impl->wasaction_opeartionmap)
     {
         /* By this time operations are already freed
-        axis2_hash_index_t *hi = NULL;
-        void *val = NULL;
-        for (hi = axis2_hash_first (svc_impl->wasaction_opeartionmap, env); hi;
-                 hi = axis2_hash_next ( env, hi))
-        {
-            axis2_op_t *opt = NULL;
-            axis2_hash_this (hi, NULL, NULL, &val);
-            opt = (axis2_op_t *) val;
-            if (opt)
-            {
-                AXIS2_OP_FREE (opt, env);
-                opt = NULL;
-            }
-            val = NULL;
-               
-        }
         */
 		axis2_hash_free(svc_impl->wasaction_opeartionmap, env);
         svc_impl->wasaction_opeartionmap = NULL;
@@ -891,7 +875,7 @@
     size = AXIS2_ARRAY_LIST_SIZE(collection_module, env);
     if(AXIS2_SUCCESS != AXIS2_ERROR_GET_STATUS_CODE((*env)->error))
     {
-        return AXIS2_FAILURE;
+        return AXIS2_ERROR_GET_STATUS_CODE((*env)->error);
     }
     for(i = 0; i < size; i++)
     {
@@ -1592,11 +1576,16 @@
                             axis2_env_t **env,
                             axis2_qname_t *moduleref)
 {
+    axis2_svc_impl_t *svc_impl = NULL;
+    axis2_qname_t *qmoduleref_l = NULL;
+
     AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
     AXIS2_PARAM_CHECK((*env)->error, moduleref, AXIS2_FAILURE);
-    
+    svc_impl = AXIS2_INTF_TO_IMPL(svc);
+
+    qmoduleref_l = AXIS2_QNAME_CLONE(moduleref, env);
     return AXIS2_ARRAY_LIST_ADD(AXIS2_INTF_TO_IMPL(svc)->module_list, env, 
-        moduleref);
+        qmoduleref_l);
 }
 
 axis2_array_list_t *AXIS2_CALL

Modified: webservices/axis2/trunk/c/modules/core/description/svc_grp.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/description/svc_grp.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/description/svc_grp.c (original)
+++ webservices/axis2/trunk/c/modules/core/description/svc_grp.c Sun Feb 26 19:48:19 2006
@@ -284,10 +284,11 @@
             axis2_hash_this (hi, NULL, NULL, &val);
             svc = (axis2_svc_t *) val;
             if (svc)
-               AXIS2_SVC_FREE (svc, env);
-            
+            {
+                AXIS2_SVC_FREE (svc, env);
+                svc = NULL;
+            }
             val = NULL;
-            svc = NULL;
                
         }
         axis2_hash_free(svc_grp_impl->svcs, env);
@@ -342,22 +343,18 @@
 		                axis2_char_t *name)
 {
     axis2_svc_grp_impl_t *svc_grp_impl = NULL;
-    axis2_char_t *svc_grp_name_l = NULL;
     
-    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
-	
+    AXIS2_ENV_CHECK(env, AXIS2_FAILURE);	
     svc_grp_impl = AXIS2_INTF_TO_IMPL(svc_grp);
-    
-	svc_grp_name_l = AXIS2_STRDUP(name, env);
-    if(NULL == svc_grp_name_l)
+	
+    if(svc_grp_impl->svc_grp_name)
+        AXIS2_FREE((*env)->allocator, svc_grp_impl->svc_grp_name);
+	svc_grp_impl->svc_grp_name = AXIS2_STRDUP(name, env); 
+    if(!svc_grp_impl->svc_grp_name)
     {
         AXIS2_ERROR_SET((*env)->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
         return AXIS2_FAILURE;
     }
-	
-    if(svc_grp_impl->svc_grp_name)
-        AXIS2_FREE((*env)->allocator, svc_grp_impl->svc_grp_name);
-	svc_grp_impl->svc_grp_name = name;
     
 	return AXIS2_SUCCESS;
 }

Modified: webservices/axis2/trunk/c/modules/core/engine/conf.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/conf.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/conf.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/conf.c Sun Feb 26 19:48:19 2006
@@ -632,10 +632,12 @@
             axis2_hash_this (hi, NULL, NULL, &val);
             transport_out = (axis2_transport_out_desc_t *) val;
             if (transport_out)
+            {
                 AXIS2_TRANSPORT_OUT_DESC_FREE (transport_out, env);
+                transport_out = NULL;
+            }
             
             val = NULL;
-            transport_out = NULL;
                
         }
         axis2_hash_free(config_impl->transports_out, env);
@@ -653,11 +655,12 @@
             axis2_hash_this (hi, NULL, NULL, &val);
             module_desc = (axis2_module_desc_t *) val;
             if (module_desc)
-               AXIS2_MODULE_DESC_FREE (module_desc, env);
+            {
+                AXIS2_MODULE_DESC_FREE (module_desc, env);
+                module_desc = NULL;
+            }
             
             val = NULL;
-            module_desc = NULL;
-               
         }
         axis2_hash_free(config_impl->modules, env);
         config_impl->modules = NULL;
@@ -1624,6 +1627,7 @@
         return AXIS2_FAILURE;
     }
     handler = AXIS2_DISP_GET_BASE(add_dispatch, env);
+    AXIS2_DISP_FREE(add_dispatch, env);
     AXIS2_PHASE_ADD_HANDLER_AT(dispatch, env, 0, handler);
     handler = NULL;
     
@@ -1633,6 +1637,7 @@
         return AXIS2_FAILURE;
     }
     handler = AXIS2_DISP_GET_BASE(uri_dispatch, env);
+    AXIS2_DISP_FREE(uri_dispatch, env);
     AXIS2_PHASE_ADD_HANDLER_AT(dispatch, env, 1, handler);
     handler = NULL;
     
@@ -1642,6 +1647,7 @@
         return AXIS2_FAILURE;
     }
     handler = AXIS2_DISP_GET_BASE(soap_action_based_dispatch, env);
+    AXIS2_DISP_FREE(soap_action_based_dispatch, env);
     AXIS2_PHASE_ADD_HANDLER_AT(dispatch, env, 2, handler);
     handler = NULL;
     
@@ -1651,6 +1657,7 @@
         return AXIS2_FAILURE;
     }
     handler = AXIS2_DISP_GET_BASE(soap_msg_body_based_dispatch, env);
+    AXIS2_DISP_FREE(soap_msg_body_based_dispatch, env);
     AXIS2_PHASE_ADD_HANDLER_AT(dispatch, env, 3, handler);
     handler = NULL;
     
@@ -1671,6 +1678,7 @@
     
     disp_checker = axis2_disp_checker_create(env, NULL);
     handler = AXIS2_DISP_CHECKER_GET_BASE(disp_checker, env);
+    AXIS2_DISP_CHECKER_FREE(disp_checker, env);
     AXIS2_PHASE_ADD_HANDLER_AT(post_dispatch, env, 0, handler);
     handler = NULL;
 
@@ -1679,12 +1687,11 @@
     
     status = AXIS2_ARRAY_LIST_ADD(config_impl->
             in_phases_upto_and_including_post_dispatch, env, post_dispatch);
-    if(AXIS2_FAILURE == status)
+    if(AXIS2_SUCCESS != status)
     {
         AXIS2_PHASE_FREE(dispatch, env);
         AXIS2_PHASE_FREE(post_dispatch, env);
-        AXIS2_DISP_CHECKER_FREE(disp_checker, env);
-        return AXIS2_FAILURE;   
+        return status;   
     }
     return AXIS2_SUCCESS;
 }
@@ -1824,6 +1831,8 @@
     if (to_be_engaged) 
     {
         axis2_phase_resolver_t *phase_resolver = NULL;
+        axis2_qname_t *module_qref_l = NULL;
+
         phase_resolver = axis2_phase_resolver_create_with_config(env, conf);
         if(!phase_resolver)
         {
@@ -1837,8 +1846,9 @@
         {
             return AXIS2_FAILURE;
         }
+        module_qref_l = AXIS2_QNAME_CLONE(module_ref, env);
         status = AXIS2_ARRAY_LIST_ADD(config_impl->engaged_modules, env, 
-            module_ref);
+            module_qref_l);
     }
     if (is_new_module) 
     {

Modified: webservices/axis2/trunk/c/modules/core/engine/disp.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/disp.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/disp.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/disp.c Sun Feb 26 19:48:19 2006
@@ -227,12 +227,12 @@
         disp_impl->qname = NULL;
     }
     
-    if (disp_impl->base)
+    /*if (disp_impl->base)
     {
         axis2_handler_desc_t *handler_desc = AXIS2_HANDLER_GET_HANDLER_DESC(disp_impl->base, env);
-        AXIS2_HANDLER_DESC_FREE(handler_desc, env); /* freeing handler desc frees handler */
+        AXIS2_HANDLER_DESC_FREE(handler_desc, env); // freeing handler desc frees handler
         disp_impl->base = NULL;
-    }
+    }*/
     
     if (disp_impl->disp.ops)
     {

Modified: webservices/axis2/trunk/c/modules/core/engine/disp_checker.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/engine/disp_checker.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/engine/disp_checker.c (original)
+++ webservices/axis2/trunk/c/modules/core/engine/disp_checker.c Sun Feb 26 19:48:19 2006
@@ -168,13 +168,15 @@
         AXIS2_QNAME_FREE(disp_checker_impl->qname, env);
         disp_checker_impl->qname = NULL;
     }
-    
-    if (disp_checker_impl->base)
+    /* Hi Samisa !. Do I think we should not free handler_desc here. So I
+     * commented this
+     */  
+    /*if (disp_checker_impl->base)
     {
         axis2_handler_desc_t *handler_desc = AXIS2_HANDLER_GET_HANDLER_DESC(disp_checker_impl->base, env);
-        AXIS2_HANDLER_DESC_FREE(handler_desc, env); /* freeing handler desc frees handler */
+        AXIS2_HANDLER_DESC_FREE(handler_desc, env); // freeing handler desc frees handler
         disp_checker_impl->base = NULL;
-    }
+    }*/
     
     if (disp_checker_impl->disp_checker.ops)
     {

Modified: webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c (original)
+++ webservices/axis2/trunk/c/modules/core/receivers/raw_xml_in_out_msg_recv.c Sun Feb 26 19:48:19 2006
@@ -140,7 +140,10 @@
                     axis2_bool_t matches = AXIS2_FALSE;
                     
                     function_arr = svc_obj->func_array;
-                    size = AXIS2_ARRAY_LIST_SIZE(function_arr, env);
+                    if(function_arr)
+                    {
+                        size = AXIS2_ARRAY_LIST_SIZE(function_arr, env);
+                    }
                     
                     for (i = 0; i < size; i++) 
                     {
@@ -192,7 +195,7 @@
         {
             skel_invoked = AXIS2_TRUE;
             result_node = AXIS2_SVC_SKELETON_INVOKE(svc_obj, env, om_node);
-            AXIS2_SVC_SKELETON_FREE(svc_obj, env);
+            /*AXIS2_SVC_SKELETON_FREE(svc_obj, env);*/
         }
        
         if (result_node)

Modified: webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo_skeleton.c Sun Feb 26 19:48:19 2006
@@ -69,16 +69,16 @@
 echo_free(axis2_svc_skeleton_t *svc_skeleton,
             axis2_env_t **env)
 {
-    if(svc_skeleton->ops)
-    {
-        AXIS2_FREE((*env)->allocator, svc_skeleton->ops);
-        svc_skeleton->ops = NULL;
-    }
-
     if(svc_skeleton->func_array)
     {
         AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
         svc_skeleton->func_array = NULL;
+    }
+    
+    if(svc_skeleton->ops)
+    {
+        AXIS2_FREE((*env)->allocator, svc_skeleton->ops);
+        svc_skeleton->ops = NULL;
     }
     
     if(svc_skeleton)

Modified: webservices/axis2/trunk/c/samples/server/math/math_skeleton.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/samples/server/math/math_skeleton.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/server/math/math_skeleton.c (original)
+++ webservices/axis2/trunk/c/samples/server/math/math_skeleton.c Sun Feb 26 19:48:19 2006
@@ -70,16 +70,16 @@
 math_free(axis2_svc_skeleton_t *svc_skeleton,
             axis2_env_t **env)
 {
+    /*if(svc_skeleton->func_array)
+    {
+        AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
+        svc_skeleton->func_array = NULL;
+    }*/
+    
     if(svc_skeleton->ops)
     {
         AXIS2_FREE((*env)->allocator, svc_skeleton->ops);
         svc_skeleton->ops = NULL;
-    }
-
-    if(svc_skeleton->func_array)
-    {
-        AXIS2_ARRAY_LIST_FREE(svc_skeleton->func_array, env);
-        svc_skeleton->func_array = NULL;
     }
     
     if(svc_skeleton)

Modified: webservices/axis2/trunk/c/test/core/deployment/test_deployment.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/test/core/deployment/test_deployment.c?rev=381249&r1=381248&r2=381249&view=diff
==============================================================================
--- webservices/axis2/trunk/c/test/core/deployment/test_deployment.c (original)
+++ webservices/axis2/trunk/c/test/core/deployment/test_deployment.c Sun Feb 26 19:48:19 2006
@@ -41,6 +41,7 @@
         return -1;
     }
     conf = AXIS2_DEP_ENGINE_LOAD(dep_engine, &env);
+    AXIS2_CONF_SET_DEP_ENGINE(conf, &env, dep_engine);
     if (!conf)
     {
         printf("conf is NULL\n)");