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 ma...@apache.org on 2008/07/07 15:09:10 UTC

svn commit: r674481 - in /webservices/axis2/branches/c/post_1_4_mtom/c: axiom/src/attachments/ samples/server/mtom/ src/core/transport/http/common/ src/core/transport/http/sender/ src/core/transport/http/server/apache2/ src/core/transport/http/util/

Author: manjula
Date: Mon Jul  7 06:09:09 2008
New Revision: 674481

URL: http://svn.apache.org/viewvc?rev=674481&view=rev
Log:
Fixing some memory leaks.

Modified:
    webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c
    webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_part.c
    webservices/axis2/branches/c/post_1_4_mtom/c/samples/server/mtom/mtom.c
    webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/common/http_simple_response.c
    webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_client.c
    webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_transport_sender.c
    webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/server/apache2/apache2_worker.c
    webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/util/http_transport_utils.c

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c Mon Jul  7 06:09:09 2008
@@ -466,7 +466,7 @@
         }
         else
         {
-            binary_part->file_name = data_handler->file_name;
+            binary_part->file_name = (axis2_char_t *)axutil_strdup(env, data_handler->file_name);
             binary_part->part_size = stat_p.st_size;
             binary_part->type = AXIOM_MIME_PART_FILE;
         }    

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_part.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_part.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_part.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_part.c Mon Jul  7 06:09:09 2008
@@ -77,6 +77,23 @@
 {
     if (mime_part)
     {
+        if(mime_part->type == AXIOM_MIME_PART_BUFFER)
+        {
+            if(mime_part->part)
+            {
+                AXIS2_FREE(env->allocator, mime_part->part);
+                mime_part->part = NULL;
+            }
+        }
+        else if(mime_part->type == AXIOM_MIME_PART_FILE)
+        {
+            if(mime_part->file_name)
+            {
+                AXIS2_FREE(env->allocator, mime_part->file_name);
+                mime_part->file_name = NULL;
+            }
+        }
+        
         AXIS2_FREE(env->allocator, mime_part);
         mime_part = NULL;
     }

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/samples/server/mtom/mtom.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/samples/server/mtom/mtom.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/samples/server/mtom/mtom.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/samples/server/mtom/mtom.c Mon Jul  7 06:09:09 2008
@@ -137,7 +137,7 @@
                     {
                         axiom_data_handler_t *data_handler_res = NULL;
 
-                        data_handler_res = axiom_data_handler_create(env, "/home/manjula/axis2/mtom/c/deploy/bin/samples/resources/deep.tar.gz", NULL);
+                        data_handler_res = axiom_data_handler_create(env, "/home/manjula/axis2/mtom/c/deploy/bin/samples/resources/axis2.jpg", NULL);
 
                         axis2_msg_ctx_set_doing_mtom (msg_ctx, env, AXIS2_TRUE);
                         ret_node = build_response2(env, data_handler_res);

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/common/http_simple_response.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/common/http_simple_response.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/common/http_simple_response.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/common/http_simple_response.c Mon Jul  7 06:09:09 2008
@@ -130,6 +130,23 @@
         axutil_array_list_free(simple_response->header_group, env);
     }
 
+    if (simple_response->mime_parts)
+    {
+        int i = 0;
+        for (i = 0; i < axutil_array_list_size(simple_response->mime_parts, env); i++)
+        {
+            axiom_mime_part_t *mime_part = NULL;
+            mime_part = (axiom_mime_part_t *)
+                axutil_array_list_get(simple_response->mime_parts, env, i);
+            if (mime_part)
+            {
+                axiom_mime_part_free(mime_part, env);
+            }
+        }
+        axutil_array_list_free(simple_response->mime_parts, env);
+    }
+
+
     AXIS2_FREE(env->allocator, simple_response);
     /* 
      * Stream is not freed

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_client.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_client.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_client.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_client.c Mon Jul  7 06:09:09 2008
@@ -133,6 +133,21 @@
     {
         AXIS2_FREE(env->allocator, http_client->req_body);
     }
+    if (http_client->mime_parts)
+    {
+        int i = 0;
+        for (i = 0; i < axutil_array_list_size(http_client->mime_parts, env); i++)
+        {
+            axiom_mime_part_t *mime_part = NULL;
+            mime_part = (axiom_mime_part_t *)
+                axutil_array_list_get(http_client->mime_parts, env, i);
+            if (mime_part)
+            {
+                axiom_mime_part_free(mime_part, env);
+            }
+        }
+        axutil_array_list_free(http_client->mime_parts, env);
+    }
 
     AXIS2_FREE(env->allocator, http_client);
     return;

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_transport_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_transport_sender.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_transport_sender.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/http_transport_sender.c Mon Jul  7 06:09:09 2008
@@ -229,7 +229,6 @@
     }
 
     do_mtom = axis2_http_transport_utils_do_write_mtom(env, msg_ctx);
-    /*axis2_msg_ctx_set_doing_mtom(msg_ctx, env, do_mtom);*/
 
     transport_url = axis2_msg_ctx_get_transport_url(msg_ctx, env);
     if (transport_url)
@@ -568,9 +567,9 @@
         }
     }
 
-    /*axiom_output_free(om_output, env);
+    axiom_output_free(om_output, env);
     om_output = NULL;
-    xml_writer = NULL;*/
+    xml_writer = NULL;
 
     if (transport_url)
     {

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/server/apache2/apache2_worker.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/server/apache2/apache2_worker.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/server/apache2/apache2_worker.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/server/apache2/apache2_worker.c Mon Jul  7 06:09:09 2008
@@ -51,6 +51,9 @@
     axis2_byte_t *buffer,
     int buffer_size);
 
+static void apache2_worker_destroy_mime_parts(
+    axutil_array_list_t *mime_parts,
+    const axutil_env_t *env);
 
 struct axis2_apache2_worker
 {
@@ -247,8 +250,6 @@
     {
         content_length = -1;
         request->chunked = 1;
-        /*axis2_msg_ctx_set_transfer_encoding(msg_ctx, env, 
-            AXIS2_HTTP_HEADER_TRANSFER_ENCODING_CHUNKED);*/
     }
     if (!http_version)
     {
@@ -260,17 +261,6 @@
     AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "Client HTTP version %s",
                     http_version);
 
-    /*out_desc = axis2_conf_get_transport_out(axis2_conf_ctx_get_conf
-                                            (apache2_worker->conf_ctx, env),
-                                            env, AXIS2_TRANSPORT_ENUM_HTTP);
-    in_desc =
-        axis2_conf_get_transport_in(axis2_conf_ctx_get_conf
-                                    (apache2_worker->conf_ctx, env), env,
-                                    AXIS2_TRANSPORT_ENUM_HTTP);
-
-    msg_ctx = axis2_msg_ctx_create(env, conf_ctx, in_desc, out_desc);
-    axis2_msg_ctx_set_server_side(msg_ctx, env, AXIS2_TRUE);*/
-
     peer_ip = request->connection->remote_ip;
     
     if (peer_ip)
@@ -1247,6 +1237,9 @@
         {
             send_status = DECLINED;
         }
+
+        apache2_worker_destroy_mime_parts(mime_parts, env);
+        mime_parts = NULL;
     }
 
     else if (body_string)
@@ -1335,23 +1328,6 @@
             if((mime_part->type) == AXIOM_MIME_PART_BUFFER)
             {
                 len = 0;
-                /*written = 0;
-                while(written < mime_part->part_size)
-                {
-                    len = 0;
-                    len = ap_rwrite(mime_part->part + written, mime_part->part_size - written, 
-                            request);
-                    ap_rflush(request);
-                    if (len == -1)
-                    {
-                        status = AXIS2_FAILURE;
-                        break;
-                    }
-                    else
-                    {
-                        written += len;
-                    }
-                }*/
                 len = ap_rwrite(mime_part->part, mime_part->part_size, request);
                 ap_rflush(request);
                 if(len == -1)
@@ -1436,6 +1412,7 @@
             if (buffer)
             {
                 AXIS2_FREE(env->allocator, buffer);
+                buffer = NULL;
             }
             fclose(fp);
             return AXIS2_FAILURE;
@@ -1444,22 +1421,6 @@
         if(count > 0)
         {
             len = 0;
-            /*written = 0;
-            while(written < count)
-            {
-                len = 0;
-                len = ap_rwrite(buffer + written, count - written, request);
-                ap_rflush(request);
-                if (len == -1)
-                {
-                    status = AXIS2_FAILURE;
-                    break;
-                }
-                else
-                {
-                    written += len;
-                }
-            }*/
             len = ap_rwrite(buffer, count, request);
             ap_rflush(request);
             if(len == -1)
@@ -1473,6 +1434,7 @@
             if (buffer)
             {
                 AXIS2_FREE(env->allocator, buffer);
+                buffer = NULL;
             }
             fclose(fp);
             return AXIS2_FAILURE;
@@ -1483,6 +1445,7 @@
             if (buffer)
             {
                 AXIS2_FREE(env->allocator, buffer);
+                buffer = NULL;
             }
             fclose(fp);
             return AXIS2_FAILURE;
@@ -1491,6 +1454,28 @@
     while(!feof(fp));
     
     fclose(fp);
+    AXIS2_FREE(env->allocator, buffer);
+    buffer = NULL;    
     return AXIS2_SUCCESS;    
 }
 
+static void apache2_worker_destroy_mime_parts(
+    axutil_array_list_t *mime_parts,
+    const axutil_env_t *env)
+{
+    if (mime_parts)
+    {
+        int i = 0;
+        for (i = 0; i < axutil_array_list_size(mime_parts, env); i++)
+        {
+            axiom_mime_part_t *mime_part = NULL;
+            mime_part = (axiom_mime_part_t *)
+                axutil_array_list_get(mime_parts, env, i);
+            if (mime_part)
+            {
+                axiom_mime_part_free(mime_part, env);
+            }
+        }
+        axutil_array_list_free(mime_parts, env);
+    }
+}

Modified: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/util/http_transport_utils.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/util/http_transport_utils.c?rev=674481&r1=674480&r2=674481&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/util/http_transport_utils.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/util/http_transport_utils.c Mon Jul  7 06:09:09 2008
@@ -3236,6 +3236,7 @@
             if (buffer)
             {
                 AXIS2_FREE(env->allocator, buffer);
+                buffer = NULL;
             }
             fclose(fp);
             return AXIS2_FAILURE;
@@ -3265,6 +3266,7 @@
             if (buffer)
             {
                 AXIS2_FREE(env->allocator, buffer);
+                buffer = NULL;
             }
             fclose(fp);
             return AXIS2_FAILURE;
@@ -3275,6 +3277,7 @@
             if (buffer)
             {
                 AXIS2_FREE(env->allocator, buffer);
+                buffer = NULL;
             }
             fclose(fp);
             return AXIS2_FAILURE;
@@ -3282,6 +3285,12 @@
     }
     while(!feof(fp));
     
+    if(buffer)
+    {
+        AXIS2_FREE(env->allocator, buffer);    
+        buffer = NULL;
+    }
+
     fclose(fp);
     return AXIS2_SUCCESS;    
 }