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 di...@apache.org on 2007/03/24 20:47:35 UTC

svn commit: r522098 - in /webservices/axis2/trunk/c: include/ modules/core/transport/http/sender/ modules/core/transport/http/sender/libcurl/ modules/core/transport/http/server/apache2/ samples/server/echo/

Author: dinesh
Date: Sat Mar 24 12:47:34 2007
New Revision: 522098

URL: http://svn.apache.org/viewvc?view=rev&rev=522098
Log:
fixed axis2c-378, this keep alive issue solved only with libcurl transport

Modified:
    webservices/axis2/trunk/c/include/axis2_http_transport.h
    webservices/axis2/trunk/c/modules/core/transport/http/sender/http_sender.c
    webservices/axis2/trunk/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c
    webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/Makefile.am
    webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/apache2_out_transport_info.c
    webservices/axis2/trunk/c/samples/server/echo/echo.c

Modified: webservices/axis2/trunk/c/include/axis2_http_transport.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/include/axis2_http_transport.h?view=diff&rev=522098&r1=522097&r2=522098
==============================================================================
--- webservices/axis2/trunk/c/include/axis2_http_transport.h (original)
+++ webservices/axis2/trunk/c/include/axis2_http_transport.h Sat Mar 24 12:47:34 2007
@@ -131,6 +131,7 @@
  * HEADER_CONTENT_TYPE
  */
 #define AXIS2_HTTP_HEADER_CONTENT_TYPE "Content-Type"
+#define AXIS2_HTTP_HEADER_CONTENT_TYPE_ "Content-Type:"
 
 /**
  *USER DEFINED HEADER CONTENT TYPE
@@ -154,6 +155,8 @@
  */
 #define AXIS2_HTTP_HEADER_CONTENT_LENGTH "Content-Length"
 
+#define AXIS2_HTTP_HEADER_CONTENT_LENGTH_ "Content-Length:"
+
 /**
  * HEADER_CONTENT_LOCATION
  */
@@ -168,6 +171,7 @@
  * HEADER_SOAP_ACTION
  */
 #define AXIS2_HTTP_HEADER_SOAP_ACTION "SOAPAction"
+#define AXIS2_HTTP_HEADER_SOAP_ACTION_ "SOAPAction:"
 
 /**
  * HEADER_AUTHORIZATION
@@ -194,6 +198,14 @@
  */
 #define AXIS2_HTTP_HEADER_USER_AGENT "User-Agent"
 
+/**
+ * HEADER_USER_AGENT_AXIS2C
+ */
+#define AXIS2_HTTP_HEADER_USER_AGENT_AXIS2C "User-Agent:Axis2/C"
+
+#define AXIS2_HTTP_HEADER_ACCEPT_ "Accept:"
+
+#define AXIS2_HTTP_HEADER_EXPECT_ "Expect:"
 /**
  * HEADER_CACHE_CONTROL
  */

Modified: webservices/axis2/trunk/c/modules/core/transport/http/sender/http_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/transport/http/sender/http_sender.c?view=diff&rev=522098&r1=522097&r2=522098
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/http_sender.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/http_sender.c Sat Mar 24 12:47:34 2007
@@ -1090,7 +1090,7 @@
     const axis2_char_t *str_url,
     const axis2_char_t *soap_action)
 {
-	axis2_http_sender_impl_t *sender_impl =  AXIS2_INTF_TO_IMPL(sender);
+    axis2_http_sender_impl_t *sender_impl = AXIS2_INTF_TO_IMPL(sender);
 	return axis2_libcurl_send (sender_impl->om_output, env, msg_ctx, out, str_url, soap_action);
 }
 #endif

Modified: webservices/axis2/trunk/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c?view=diff&rev=522098&r1=522097&r2=522098
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c Sat Mar 24 12:47:34 2007
@@ -19,6 +19,9 @@
 #include <axis2_http_transport.h>
 #include "libcurl_stream.h"
 
+static int ref = 0;
+static CURL *handler;
+
 typedef struct axis2_libcurl
 {
 	axis2_char_t *memory;
@@ -47,8 +50,9 @@
 
 void
 axis2_libcurl_free (
-	const axis2_env_t *env, 
-	axis2_libcurl_t *curl);
+	void *curl,
+	const axis2_env_t *env);
+
 
 
 axis2_status_t AXIS2_CALL
@@ -60,8 +64,6 @@
     const axis2_char_t *str_url,
     const axis2_char_t *soap_action)
 {
-
-	CURL *handler;
 	struct curl_slist *headers = NULL;
 	axiom_soap_body_t *soap_body;
 	axis2_bool_t is_soap = AXIS2_TRUE;
@@ -75,12 +77,11 @@
 	axis2_char_t *buffer = NULL;
 	unsigned int buffer_size = 0;
 	axis2_char_t *content_type;
-	axis2_char_t *content_len = "Content-Length:";
+	axis2_char_t *content_len = AXIS2_HTTP_HEADER_CONTENT_LENGTH_;
 	const axis2_char_t *char_set_enc = NULL;
-	axis2_char_t *content = "Content-Type:";
-	axis2_char_t *soap_action_header = "SOAPAction:";
+	axis2_char_t *content = AXIS2_HTTP_HEADER_CONTENT_TYPE_;
+	axis2_char_t *soap_action_header = AXIS2_HTTP_HEADER_SOAP_ACTION_;
 	axis2_libcurl_t *data;
-	axis2_libcurl_t *header;
 	axis2_stream_t *in_stream;
 	axis2_property_t *trans_in_property;
 	axis2_string_t *char_set_enc_str;
@@ -88,11 +89,19 @@
     int output_stream_size = 0;
 
 	data = axis2_libcurl_create (env);
-	header = axis2_libcurl_create (env);
-	handler = curl_easy_init ();
-	headers = curl_slist_append (headers, "User-Agent:Axis2/C");
-	headers = curl_slist_append (headers, "Accept:");
-	headers = curl_slist_append (headers, "Expect:");
+    if (!ref)
+    {
+        handler = curl_easy_init ();
+        ref ++;
+    }
+    else
+    {
+        curl_easy_reset (handler);
+    }
+	headers = curl_slist_append (headers, AXIS2_HTTP_HEADER_USER_AGENT_AXIS2C);
+	headers = curl_slist_append (headers,  AXIS2_HTTP_HEADER_ACCEPT_);
+	headers = curl_slist_append (headers, AXIS2_HTTP_HEADER_EXPECT_);
+
     if (AXIS2_TRUE ==  axis2_msg_ctx_get_doing_rest(msg_ctx, env))
 		is_soap = AXIS2_FALSE;
 	else
@@ -101,7 +110,7 @@
 	if (!is_soap)
 	{
 		soap_body = axiom_soap_envelope_get_body(out, env);
-        if (! soap_body)
+        if (!soap_body)
         {
             AXIS2_ERROR_SET(env->error,
 							AXIS2_ERROR_SOAP_ENVELOPE_OR_SOAP_BODY_NULL,
@@ -111,7 +120,7 @@
             return AXIS2_FAILURE;
         }
         body_node = axiom_soap_body_get_base_node(soap_body, env);
-        if (! body_node)
+        if (!body_node)
         {
             return AXIS2_FAILURE;
         }
@@ -119,9 +128,11 @@
 
 		method = (axis2_property_t *) axis2_msg_ctx_get_property(msg_ctx, env,
             AXIS2_HTTP_METHOD);
+
 		if (method)
+        {
 			method_value = (axis2_char_t *) axis2_property_get_value (method, env);
-
+        }
 		/* The default is POST */
 		if (method_value && 0 == axis2_strcmp(method_value, AXIS2_HTTP_HEADER_GET))
 		{
@@ -289,11 +300,11 @@
 	curl_easy_setopt (handler, CURLOPT_HTTPHEADER, headers);
 	curl_easy_setopt (handler, CURLOPT_WRITEFUNCTION, axis2_libcurl_write_memory_callback);
 	curl_easy_setopt (handler, CURLOPT_WRITEDATA, data);
-	curl_easy_setopt (handler, CURLOPT_HEADERFUNCTION, axis2_libcurl_header_callback);
-	curl_easy_setopt (handler, CURLOPT_WRITEHEADER, header);
+/* 	curl_easy_setopt (handler, CURLOPT_HEADERFUNCTION, axis2_libcurl_header_callback); */
+/* 	curl_easy_setopt (handler, CURLOPT_WRITEHEADER, header); */
 	curl_easy_perform (handler);
-	curl_slist_free_all (headers);
-	curl_easy_cleanup (handler);
+/* 	curl_slist_free_all (headers); */
+/* 	curl_easy_cleanup (handler); */
 
 	in_stream = axis2_stream_create_libcurl (env, data->memory, data->size);
     trans_in_property = axis2_property_create(env);
@@ -352,7 +363,9 @@
 }
 
 void
-axis2_libcurl_free (const axis2_env_t *env, axis2_libcurl_t *curl)
+axis2_libcurl_free (void *curl, const axis2_env_t *env)
 {
 	AXIS2_FREE (env->allocator, curl);
+/* 	curl_slist_free_all (headers); */
+/* 	curl_easy_cleanup (handler); */
 }

Modified: webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/Makefile.am?view=diff&rev=522098&r1=522097&r2=522098
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/Makefile.am (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/Makefile.am Sat Mar 24 12:47:34 2007
@@ -11,6 +11,7 @@
 		     $(top_builddir)/modules/core/engine/libaxis2_engine.la\
 		     $(top_builddir)/util/src/libaxis2_util.la \
 		     $(top_builddir)/modules/core/transport/http/util/libaxis2_http_util.la\
+		     $(top_builddir)/modules/core/transport/http/common/libaxis2_http_common.la\
 		     $(top_builddir)/axiom/src/parser/$(WRAPPER_DIR)/libaxis2_parser.la\
                     -lpthread \
                     -L$(top_builddir)$(GUTHTHILA_LIBS) \

Modified: webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/apache2_out_transport_info.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/apache2_out_transport_info.c?view=diff&rev=522098&r1=522097&r2=522098
==============================================================================
--- webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/apache2_out_transport_info.c (original)
+++ webservices/axis2/trunk/c/modules/core/transport/http/server/apache2/apache2_out_transport_info.c Sat Mar 24 12:47:34 2007
@@ -149,3 +149,7 @@
     return out_transport_info;
 }
 
+
+
+
+

Modified: webservices/axis2/trunk/c/samples/server/echo/echo.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/server/echo/echo.c?view=diff&rev=522098&r1=522097&r2=522098
==============================================================================
--- webservices/axis2/trunk/c/samples/server/echo/echo.c (original)
+++ webservices/axis2/trunk/c/samples/server/echo/echo.c Sat Mar 24 12:47:34 2007
@@ -99,3 +99,7 @@
     return echo_om_node;
 }
 
+
+
+
+



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org