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/28 06:20:50 UTC
svn commit: r389390 - in /webservices/axis2/trunk/c:
include/axis2_http_client.h include/axis2_msg_ctx.h
modules/core/transport/http/sender/http_client.c
modules/core/transport/http/sender/soap_over_http_sender.c
modules/util/stream.c
Author: sahan
Date: Mon Mar 27 20:20:49 2006
New Revision: 389390
URL: http://svn.apache.org/viewcvs?rev=389390&view=rev
Log:
Cleaning http_client mem leak
Modified:
webservices/axis2/trunk/c/include/axis2_http_client.h
webservices/axis2/trunk/c/include/axis2_msg_ctx.h
webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c
webservices/axis2/trunk/c/modules/core/transport/http/sender/soap_over_http_sender.c
webservices/axis2/trunk/c/modules/util/stream.c
Modified: webservices/axis2/trunk/c/include/axis2_http_client.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_http_client.h?rev=389390&r1=389389&r2=389390&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_http_client.h (original)
+++ webservices/axis2/trunk/c/include/axis2_http_client.h Mon Mar 27 20:20:49 2006
@@ -87,6 +87,14 @@
AXIS2_DECLARE(axis2_http_client_t *)
axis2_http_client_create (axis2_env_t **env, axis2_url_t *url);
+/**
+ * Free http_client passed as void pointer. This will be
+ * cast into appropriate type and then pass the cast object
+ * into the http_client structure's free method
+ */
+axis2_status_t AXIS2_CALL
+axis2_http_client_free_void_arg (void *client, axis2_env_t **env);
+
/************************** Start of function macros **************************/
#define AXIS2_HTTP_CLIENT_SEND(client, env, request) \
@@ -106,7 +114,6 @@
((client)->ops->get_url(client, env))
#define AXIS2_HTTP_CLIENT_FREE(client, env) \
((client)->ops->free(client, env))
-
/************************** End of function macros ****************************/
/** @} */
Modified: webservices/axis2/trunk/c/include/axis2_msg_ctx.h
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/include/axis2_msg_ctx.h?rev=389390&r1=389389&r2=389390&view=diff
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_msg_ctx.h (original)
+++ webservices/axis2/trunk/c/include/axis2_msg_ctx.h Mon Mar 27 20:20:49 2006
@@ -58,6 +58,8 @@
#define AXIS2_DEFAULT_CHAR_SET_ENCODING "UTF-8"
/** axis2 transport succeeded */
#define AXIS2_TRANSPORT_SUCCEED "AXIS2_TRANSPORT_SUCCEED"
+/* HTTP Client */
+#define AXIS2_HTTP_CLIENT "AXIS2_HTTP_CLIENT"
#define AXIS2_TRANSPORT_URL "TransportURL"
Modified: webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c?rev=389390&r1=389389&r2=389390&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/http_client.c Mon Mar 27 20:20:49 2006
@@ -53,21 +53,28 @@
int AXIS2_CALL
axis2_http_client_recieve_header (axis2_http_client_t *client,
axis2_env_t **env);
+
axis2_http_simple_response_t* AXIS2_CALL
axis2_http_client_get_response (axis2_http_client_t *client, axis2_env_t **env);
+
axis2_status_t AXIS2_CALL
axis2_http_client_set_url (axis2_http_client_t *client,
axis2_env_t **env, axis2_url_t *url);
axis2_url_t* AXIS2_CALL
axis2_http_client_get_url (axis2_http_client_t *client, axis2_env_t **env);
+
axis2_status_t AXIS2_CALL
axis2_http_client_set_timeout (axis2_http_client_t *client, axis2_env_t **env,
int timeout_ms);
+
int AXIS2_CALL
axis2_http_client_get_timeout (axis2_http_client_t *client, axis2_env_t **env);
axis2_status_t AXIS2_CALL
-axis2_http_client_free (axis2_http_client_t *client, axis2_env_t **env);
+axis2_http_client_free (axis2_http_client_t *client, axis2_env_t **env);
+
+axis2_status_t AXIS2_CALL
+axis2_http_client_free_void_arg (void *client, axis2_env_t **env);
/***************************** End of function headers ************************/
@@ -131,11 +138,6 @@
AXIS2_URL_FREE(http_client_impl->url, env);
http_client_impl->url = NULL;
}
- if(NULL != http_client_impl->data_stream)
- {
- AXIS2_STREAM_FREE(http_client_impl->data_stream, env);
- http_client_impl->data_stream = NULL;
- }
if(NULL != http_client_impl->response)
{
AXIS2_HTTP_SIMPLE_RESPONSE_FREE(http_client_impl->response, env);
@@ -151,6 +153,16 @@
AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(client));
return AXIS2_SUCCESS;
+}
+
+axis2_status_t AXIS2_CALL
+axis2_http_client_free_void_arg (void *client, axis2_env_t **env)
+{
+ axis2_http_client_t *client_l = NULL;
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+
+ client_l = (axis2_http_client_t *)client;
+ return axis2_http_client_free(client_l, env);
}
Modified: webservices/axis2/trunk/c/modules/core/transport/http/sender/soap_over_http_sender.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/transport/http/sender/soap_over_http_sender.c?rev=389390&r1=389389&r2=389390&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/soap_over_http_sender.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/soap_over_http_sender.c Mon Mar 27 20:20:49 2006
@@ -158,6 +158,10 @@
if(NULL != sender->ops)
AXIS2_FREE((*env)->allocator, sender->ops);
+ /* Do not free this here since it will be required in later processing
+ * of the response soap message
+ */
+ sender_impl->client = NULL;
AXIS2_FREE((*env)->allocator, sender_impl);
return AXIS2_SUCCESS;
}
@@ -207,6 +211,16 @@
{
return AXIS2_FAILURE;
}
+ /* We put the client into msg_ctx so that we can free it once the processing
+ * is done at client side
+ */
+ property = axis2_property_create(env);
+ AXIS2_PROPERTY_SET_SCOPE(property, env, AXIS2_SCOPE_REQUEST);
+ AXIS2_PROPERTY_SET_FREE_FUNC(property, env,
+ axis2_http_client_free_void_arg);
+ AXIS2_PROPERTY_SET_VALUE(property, env, sender_impl->client);
+ AXIS2_MSG_CTX_SET_PROPERTY(msg_ctx, env, AXIS2_HTTP_CLIENT,
+ property, AXIS2_TRUE);
if(NULL == sender_impl->om_output)
{
Modified: webservices/axis2/trunk/c/modules/util/stream.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/util/stream.c?rev=389390&r1=389389&r2=389390&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/util/stream.c (original)
+++ webservices/axis2/trunk/c/modules/util/stream.c Mon Mar 27 20:20:49 2006
@@ -44,6 +44,10 @@
axis2_status_t AXIS2_CALL
axis2_stream_free (axis2_stream_t *stream, axis2_env_t **env);
+axis2_status_t AXIS2_CALL
+axis2_stream_free_void_arg (void *stream,
+ axis2_env_t **env);
+
axis2_stream_type_t AXIS2_CALL
axis2_stream_get_type (axis2_stream_t *stream, axis2_env_t **env);