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/24 10:48:25 UTC

svn commit: r388478 - in /webservices/axis2/trunk/c/modules/core: receivers/msg_recv.c util/axis2_core_utils.h util/core_utils.c

Author: samisa
Date: Fri Mar 24 01:48:20 2006
New Revision: 388478

URL: http://svn.apache.org/viewcvs?rev=388478&view=rev
Log:
Fixed the memory leaks caused by non freeing of the created msg context

Modified:
    webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c
    webservices/axis2/trunk/c/modules/core/util/axis2_core_utils.h
    webservices/axis2/trunk/c/modules/core/util/core_utils.c

Modified: webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c?rev=388478&r1=388477&r2=388478&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c (original)
+++ webservices/axis2/trunk/c/modules/core/receivers/msg_recv.c Fri Mar 24 01:48:20 2006
@@ -422,6 +422,8 @@
     }        
     status = AXIS2_ENGINE_SEND(engine, env, out_msg_ctx);
     AXIS2_ENGINE_FREE(engine, env);
+    axis2_core_utils_reset_out_msg_ctx(env, out_msg_ctx);
+    AXIS2_MSG_CTX_FREE(out_msg_ctx, env);
     return status;
 }
 

Modified: webservices/axis2/trunk/c/modules/core/util/axis2_core_utils.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/util/axis2_core_utils.h?rev=388478&r1=388477&r2=388478&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/util/axis2_core_utils.h (original)
+++ webservices/axis2/trunk/c/modules/core/util/axis2_core_utils.h Fri Mar 24 01:48:20 2006
@@ -37,6 +37,9 @@
     axis2_core_utils_create_out_msg_ctx(axis2_env_t **env,
                                 axis2_msg_ctx_t *in_msg_ctx);
 
+    AXIS2_DECLARE(void)
+    axis2_core_utils_reset_out_msg_ctx(axis2_env_t **env,
+                                    axis2_msg_ctx_t *out_msg_ctx);
 /** @} */
     
 #ifdef __cplusplus

Modified: webservices/axis2/trunk/c/modules/core/util/core_utils.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/util/core_utils.c?rev=388478&r1=388477&r2=388478&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/util/core_utils.c (original)
+++ webservices/axis2/trunk/c/modules/core/util/core_utils.c Fri Mar 24 01:48:20 2006
@@ -149,3 +149,52 @@
     return new_msg_ctx;
 }
 
+AXIS2_DECLARE(void)
+axis2_core_utils_reset_out_msg_ctx(axis2_env_t **env,
+                                axis2_msg_ctx_t *out_msg_ctx)
+{
+    axis2_conf_ctx_t *conf_ctx = NULL;
+    axis2_transport_in_desc_t *transport_in = NULL;
+    axis2_transport_out_desc_t *transport_out = NULL;
+    axis2_msg_info_headers_t *old_msg_info_headers = NULL;
+    axis2_msg_info_headers_t *msg_info_headers = NULL;
+    axis2_endpoint_ref_t *reply_to = NULL;
+    axis2_endpoint_ref_t *fault_to = NULL;
+    axis2_endpoint_ref_t *to = NULL;
+    axis2_char_t *msg_id = NULL;
+    axis2_relates_to_t *relates_to = NULL;
+    axis2_char_t *action = NULL;
+    axis2_op_ctx_t *op_ctx = NULL;
+    axis2_svc_ctx_t *svc_ctx = NULL;
+    axis2_bool_t doing_rest = AXIS2_FALSE;
+    axis2_bool_t doing_mtom = AXIS2_FALSE;
+    axis2_bool_t server_side = AXIS2_FALSE;
+    axis2_svc_grp_ctx_t *svc_grp_ctx = NULL;
+    axis2_property_t *property = NULL;
+    axis2_char_t *msg_uuid = NULL;
+    
+    AXIS2_PARAM_CHECK((*env)->error, out_msg_ctx, NULL);
+    
+    msg_info_headers = AXIS2_MSG_CTX_GET_MSG_INFO_HEADERS(out_msg_ctx, env);
+    if(msg_info_headers)
+    {
+        AXIS2_MSG_INFO_HEADERS_SET_TO(msg_info_headers, env, NULL);
+        AXIS2_MSG_INFO_HEADERS_SET_FAULT_TO(msg_info_headers, env, NULL);
+        AXIS2_MSG_INFO_HEADERS_SET_FROM(msg_info_headers, env, NULL);
+        AXIS2_MSG_INFO_HEADERS_SET_RELATES_TO(msg_info_headers, env, NULL);
+    } 
+    
+    AXIS2_MSG_CTX_SET_OP_CTX(out_msg_ctx, env, NULL);
+    AXIS2_MSG_CTX_SET_SVC_CTX(out_msg_ctx, env, NULL);
+    AXIS2_MSG_CTX_SET_PROPERTY(out_msg_ctx, env, AXIS2_TRANSPORT_OUT, NULL,
+            AXIS2_FALSE);
+    AXIS2_MSG_CTX_SET_PROPERTY(out_msg_ctx, env, AXIS2_HTTP_OUT_TRANSPORT_INFO, 
+            NULL, AXIS2_FALSE);
+    AXIS2_MSG_CTX_SET_PROPERTY(out_msg_ctx, env, AXIS2_CHARACTER_SET_ENCODING, 
+            NULL, AXIS2_FALSE);
+            
+    AXIS2_MSG_CTX_SET_SVC_GRP_CTX(out_msg_ctx, env, svc_grp_ctx);
+    
+    return;
+}
+