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 di...@apache.org on 2007/02/20 10:12:29 UTC

svn commit: r509476 - in /webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender: Makefile.am http_sender.c libcurl/Makefile libcurl/axis2_libcurl.c rest_sender.c sender_util.c

Author: dinesh
Date: Tue Feb 20 01:12:28 2007
New Revision: 509476

URL: http://svn.apache.org/viewvc?view=rev&rev=509476
Log:
axis2c-532:transport sender refactoring

Modified:
    webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/Makefile.am
    webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/http_sender.c
    webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/Makefile
    webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c
    webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/rest_sender.c
    webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/sender_util.c

Modified: webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/Makefile.am?view=diff&rev=509476&r1=509475&r2=509476
==============================================================================
--- webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/Makefile.am (original)
+++ webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/Makefile.am Tue Feb 20 01:12:28 2007
@@ -1,9 +1,7 @@
 SUBDIRS=ssl libcurl
 lib_LTLIBRARIES = libaxis2_http_sender.la
 libaxis2_http_sender_la_SOURCES = http_transport_sender.c\
-                                  soap_over_http_sender.c\
                                   http_sender.c\
-                                  rest_sender.c\
                                   sender_util.c\
                                   http_client.c
 

Modified: webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/http_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/http_sender.c?view=diff&rev=509476&r1=509475&r2=509476
==============================================================================
--- webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/http_sender.c (original)
+++ webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/http_sender.c Tue Feb 20 01:12:28 2007
@@ -79,6 +79,22 @@
     const axis2_env_t *env,
     axis2_msg_ctx_t *msg_ctx);
 
+axis2_char_t *AXIS2_CALL
+axis2_http_sender_get_param_string(
+    const axis2_env_t *env,
+    axis2_http_sender_t *sender,
+    axis2_msg_ctx_t *msg_ctx);
+
+static axis2_char_t *AXIS2_CALL
+axis2_url_encode (
+	const axis2_env_t *env,
+	axis2_char_t *dest,
+	axis2_char_t *src,
+	int strlen);
+
+static int AXIS2_CALL
+is_safe_or_unreserve (char c);
+
 axis2_status_t AXIS2_CALL
 axis2_http_sender_send(
     axis2_http_sender_t *sender,
@@ -410,7 +426,7 @@
 		axis2_char_t *request_params = NULL;
         axis2_char_t *path = NULL;
 
-        request_params = axis2_rest_sender_get_param_string(sender, env, msg_ctx);
+        request_params = axis2_http_sender_get_param_string(env, sender, msg_ctx);
         path = axis2_strcat(env, AXIS2_URL_GET_PATH(url, env), "?",
 							request_params, NULL);
         request_line = axis2_http_request_line_create(env, "GET", path,
@@ -1078,3 +1094,147 @@
 	return axis2_libcurl_send (sender_impl->om_output, env, msg_ctx, out, str_url, soap_action);
 }
 #endif
+
+axis2_char_t *AXIS2_CALL
+axis2_http_sender_get_param_string(
+    const axis2_env_t *env,
+    axis2_http_sender_t *sender,
+    axis2_msg_ctx_t *msg_ctx)
+{
+    axiom_soap_envelope_t *soap_env = NULL;
+    axiom_node_t *body_node = NULL;
+    axiom_node_t *data_node = NULL;
+    axiom_element_t *data_element = NULL;
+    axiom_child_element_iterator_t *iterator = NULL;
+    axis2_array_list_t *param_list = NULL;
+    axis2_char_t *param_string = NULL;
+    int i = 0;
+
+    AXIS2_ENV_CHECK(env, NULL);
+    AXIS2_PARAM_CHECK(env->error, msg_ctx, NULL);
+
+    soap_env = AXIS2_MSG_CTX_GET_SOAP_ENVELOPE(msg_ctx, env);
+    if (NULL == soap_env)
+    {
+        return NULL;
+    }
+    body_node = AXIOM_SOAP_BODY_GET_BASE_NODE(
+                AXIOM_SOAP_ENVELOPE_GET_BODY(soap_env, env), env);
+    data_node = AXIOM_NODE_GET_FIRST_CHILD(body_node, env);
+    if (NULL == data_node)
+    {
+        return NULL;
+    }
+    param_list = axis2_array_list_create(env, AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
+    data_element = AXIOM_NODE_GET_DATA_ELEMENT(data_node, env);
+    iterator = AXIOM_ELEMENT_GET_CHILD_ELEMENTS(data_element, env, data_node);
+    while (AXIS2_TRUE == AXIOM_CHILD_ELEMENT_ITERATOR_HAS_NEXT(iterator, env))
+    {
+        axiom_node_t *node = NULL;
+        axiom_element_t *element = NULL;
+        axis2_char_t *name = NULL;
+        axis2_char_t *value = NULL;
+		axis2_char_t *encoded_value = NULL;
+ 
+        node = AXIOM_CHILD_ELEMENT_ITERATOR_NEXT(iterator, env);
+        element = AXIOM_NODE_GET_DATA_ELEMENT(node, env);
+        name = AXIOM_ELEMENT_GET_LOCALNAME(element, env);
+        value = AXIOM_ELEMENT_GET_TEXT(element, env, node);
+
+		encoded_value = (axis2_char_t *) AXIS2_MALLOC (env->allocator, strlen (value));
+		memset (encoded_value, 0, strlen (value));
+		encoded_value = axis2_url_encode (env, encoded_value, value, strlen (value));
+
+        AXIS2_ARRAY_LIST_ADD(param_list, env, axis2_strcat(env, name, "=",
+                encoded_value, NULL));
+    }
+    for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(param_list, env); i++)
+    {
+        axis2_char_t *tmp_string = NULL;
+        axis2_char_t *pair = NULL;
+
+        pair = AXIS2_ARRAY_LIST_GET(param_list, env, i);
+		if(i ==0)
+			tmp_string = AXIS2_STRACAT(param_string, pair, env);
+		else
+		tmp_string = axis2_strcat(env, param_string, "&", pair, NULL);				
+
+        if (param_string)
+        {
+            AXIS2_FREE(env->allocator, param_string);
+            param_string = NULL;
+        }
+        AXIS2_FREE(env->allocator, pair);
+        param_string = tmp_string;
+    }
+    AXIS2_ARRAY_LIST_FREE(param_list, env);
+    return param_string;
+}
+
+static axis2_char_t *AXIS2_CALL
+axis2_url_encode (
+	const axis2_env_t *env, 
+	axis2_char_t *dest, 
+	axis2_char_t *buff, 
+	int len)
+{
+	axis2_char_t string[4];
+	axis2_char_t *expand_buffer;
+    int i;
+    for (i = 0; i < len  && buff[i]; i++)
+    {
+        if (isalnum (buff[i]) || is_safe_or_unreserve (buff[i]))
+        {
+            sprintf (string,"%c", buff[i]);
+        }
+        else
+        {
+            sprintf (string, "%%%x", buff[i]);
+        }
+
+		if ((strlen (dest) + 4) > len)
+		{
+			expand_buffer = (axis2_char_t *) AXIS2_MALLOC (env->allocator, len*2);
+			memset (expand_buffer, 0, len*2);
+			len *= 2;
+			dest = memmove (expand_buffer, dest, len);
+		}
+		strcat (dest, string);
+    }
+    return dest;
+}
+
+static int AXIS2_CALL
+is_safe_or_unreserve (
+	char c)
+{
+    char safe [] = {'$' , '-' , '_' , '.' , '+'};
+    char reserve [] = {';', '/', '?' ,':', '@',  '&', '='};
+
+/* reserved       = ";" | "/" | "?" | ":" | "@" | "&" | "="
+   safe           = "$" | "-" | "_" | "." | "+" */
+
+    int flag = 0;
+    int i = 0;
+
+    int size = sizeof (safe)/sizeof (safe[0]);
+    for (i = 0; i < size; i++)
+    {
+        if (c == safe[i])
+        {
+            flag = 1;
+            return flag;
+        }
+    }
+
+    size = sizeof (reserve)/sizeof (reserve[0]);
+    for (i = 0; i < size; i++)
+    {
+        if (c == reserve[i])
+        {
+            flag = 0;
+            return flag;
+        }
+    }
+    return flag;
+}

Modified: webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/Makefile
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/Makefile?view=diff&rev=509476&r1=509475&r2=509476
==============================================================================
--- webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/Makefile (original)
+++ webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/Makefile Tue Feb 20 01:12:28 2007
@@ -66,7 +66,7 @@
 AXIS2_SSL_ENABLED_TRUE = #
 CC = gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -g3 -O0 -D_LARGEFILE64_SOURCE -ansi -Wall -Wno-implicit-function-declaration -g -DAXIS2_SVR_MULTI_THREADED -DAXIS2_LIBCURL_ENABLED
+CFLAGS = -g3 -O0 -Werror -D_LARGEFILE64_SOURCE -ansi -Wall -Wno-implicit-function-declaration -g -DAXIS2_SVR_MULTI_THREADED -DAXIS2_LIBCURL_ENABLED
 CPP = gcc -E
 CPPFLAGS = 
 CXX = g++

Modified: webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c?view=diff&rev=509476&r1=509475&r2=509476
==============================================================================
--- webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c (original)
+++ webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/libcurl/axis2_libcurl.c Tue Feb 20 01:12:28 2007
@@ -14,27 +14,46 @@
 #include <axis2_generic_obj.h>
 #include <axis2_const.h>
 #include <axis2_util.h>
+#include <stdlib.h>
+#include <axis2_http_transport.h>
 
-typedef struct axis2_libcurl_memory
+typedef struct axis2_libcurl
 {
 	axis2_char_t *memory;
+	axis2_array_list_t *alist;
 	unsigned int size;
-}axis2_libcurl_memory_t;
+	const axis2_env_t *env;
+}axis2_libcurl_t;
 
-size_t
-axis2_libcurl_write_memory_callback(void *ptr, size_t size, size_t nmemb, void *data);
 
-void *myrealloc(void *ptr, size_t size)
-{
-	/* There might be a realloc() out there that doesn't like
-	 * reallocing
-     NULL pointers, so we take care of it here */
-	if(ptr)
-		return realloc(ptr, size);
-	else
-		return malloc(size);
-}
+size_t
+axis2_libcurl_write_memory_callback(
+	void *ptr, 
+	size_t size, 
+	size_t nmemb, 
+	void *data);
 
+size_t
+axis2_libcurl_header_callback(
+	void *ptr, 
+	size_t size, 
+	size_t nmemb, 
+	void *data);
+
+axis2_libcurl_t *
+axis2_libcurl_create (
+	const axis2_env_t *env);
+
+void
+axis2_libcurl_free (
+	const axis2_env_t *env, 
+	axis2_libcurl_t *curl);
+
+int
+axis2_libcurl_process_headers (
+	const axis2_env_t *evn,
+	axis2_http_simple_response_t *response, 
+	axis2_array_list_t *alist);
 
 axis2_status_t AXIS2_CALL
 axis2_libcurl_send (
@@ -62,7 +81,10 @@
 	axis2_char_t *content_type;
 	const axis2_char_t *char_set_enc = NULL;
 	axis2_char_t *content = "Content-Type:";
-	axis2_libcurl_memory_t *data;
+	axis2_libcurl_t *data;
+	axis2_libcurl_t *header;
+	data = axis2_libcurl_create (env);
+	header = axis2_libcurl_create (env);
 	handler = curl_easy_init ();
 	
     if (AXIS2_TRUE == AXIS2_MSG_CTX_GET_DOING_REST(msg_ctx, env))
@@ -215,7 +237,9 @@
 	curl_easy_setopt (handler, CURLOPT_POSTFIELDS, buffer);
 	curl_easy_setopt (handler, CURLOPT_POSTFIELDSIZE, buffer_size);
 	curl_easy_setopt (handler, CURLOPT_WRITEFUNCTION, axis2_libcurl_write_memory_callback);
-	curl_easy_setopt (handler, CURLOPT_WRITEDATA, (void *)data);
+	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_perform (handler);
 	curl_slist_free_all (headers);
 	curl_easy_cleanup (handler);
@@ -226,13 +250,54 @@
 axis2_libcurl_write_memory_callback(void *ptr, size_t size, size_t nmemb, void *data)
 {
 	size_t realsize = size * nmemb;
-	axis2_libcurl_memory_t *mem = (axis2_libcurl_memory_t *)data;
+	axis2_libcurl_t *mem = (axis2_libcurl_t *)data;
+	mem->memory = (axis2_char_t *) malloc (realsize + 1);
+	if (mem->memory) 
+	{
+		memcpy(&(mem->memory[mem->size]), ptr, realsize);
+		mem->size += realsize;
+		mem->memory[mem->size] = 0;
+	}
+	return realsize;
+}
 
-	mem->memory = (axis2_char_t *)myrealloc (mem->memory, mem->size + realsize + 1);
-	if (mem->memory) {
+size_t
+axis2_libcurl_header_callback(void *ptr, size_t size, size_t nmemb, void *data)
+{
+	size_t realsize = size * nmemb;
+	axis2_libcurl_t *mem = (axis2_libcurl_t *)data;
+	mem->memory = AXIS2_MALLOC (mem->env->allocator, realsize + 1);
+	mem->size = 0;
+	if (mem->memory) 
+	{
 		memcpy(&(mem->memory[mem->size]), ptr, realsize);
 		mem->size += realsize;
 		mem->memory[mem->size] = 0;
+		axis2_array_list_add (mem->alist, mem->env, AXIS2_STRDUP (mem->memory, mem->env));
 	}
 	return realsize;
+}
+
+axis2_libcurl_t *
+axis2_libcurl_create (const axis2_env_t *env)
+{
+	axis2_libcurl_t *curl = NULL;
+	curl = (axis2_libcurl_t *) AXIS2_MALLOC (env->allocator, sizeof (axis2_libcurl_t));
+	curl->size = 0;
+	curl->alist = axis2_array_list_create (env, 7);
+	curl->env = env;
+	return curl;
+}
+
+void
+axis2_libcurl_free (const axis2_env_t *env, axis2_libcurl_t *curl)
+{
+	AXIS2_FREE (env->allocator, curl);
+}
+
+int
+axis2_libcurl_process_headers (const axis2_env_t *env, axis2_http_simple_response_t *response, axis2_array_list_t *alist)
+{
+	int status_code = 0;
+	return status_code;
 }

Modified: webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/rest_sender.c
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/rest_sender.c?view=diff&rev=509476&r1=509475&r2=509476
==============================================================================
--- webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/rest_sender.c (original)
+++ webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/rest_sender.c Tue Feb 20 01:12:28 2007
@@ -116,12 +116,6 @@
     const axis2_env_t *env,
     axis2_msg_ctx_t *msg_ctx);
 
-static axis2_char_t *AXIS2_CALL
-axis2_url_encode (
-	const axis2_env_t *env,
-	axis2_char_t *dest,
-	axis2_char_t *src,
-	int strlen);
 
 axis2_status_t AXIS2_CALL
 axis2_rest_sender_configure_server_cert(
@@ -129,8 +123,6 @@
     const axis2_env_t *env,
     axis2_msg_ctx_t *msg_ctx);
 
-static int AXIS2_CALL
-is_safe_or_unreserve (char c);
 
 /***************************** End of function headers ************************/
 
@@ -675,149 +667,6 @@
     return AXIS2_SUCCESS;
 }
 
-axis2_char_t *AXIS2_CALL
-axis2_rest_sender_get_param_string(
-    axis2_rest_sender_t *sender,
-    const axis2_env_t *env,
-    axis2_msg_ctx_t *msg_ctx)
-{
-    axiom_soap_envelope_t *soap_env = NULL;
-    axiom_node_t *body_node = NULL;
-    axiom_node_t *data_node = NULL;
-    axiom_element_t *data_element = NULL;
-    axiom_child_element_iterator_t *iterator = NULL;
-    axis2_array_list_t *param_list = NULL;
-    axis2_char_t *param_string = NULL;
-    int i = 0;
-
-    AXIS2_ENV_CHECK(env, NULL);
-    AXIS2_PARAM_CHECK(env->error, msg_ctx, NULL);
-
-    soap_env = AXIS2_MSG_CTX_GET_SOAP_ENVELOPE(msg_ctx, env);
-    if (NULL == soap_env)
-    {
-        return NULL;
-    }
-    body_node = AXIOM_SOAP_BODY_GET_BASE_NODE(
-                AXIOM_SOAP_ENVELOPE_GET_BODY(soap_env, env), env);
-    data_node = AXIOM_NODE_GET_FIRST_CHILD(body_node, env);
-    if (NULL == data_node)
-    {
-        return NULL;
-    }
-    param_list = axis2_array_list_create(env, AXIS2_ARRAY_LIST_DEFAULT_CAPACITY);
-    data_element = AXIOM_NODE_GET_DATA_ELEMENT(data_node, env);
-    iterator = AXIOM_ELEMENT_GET_CHILD_ELEMENTS(data_element, env, data_node);
-    while (AXIS2_TRUE == AXIOM_CHILD_ELEMENT_ITERATOR_HAS_NEXT(iterator, env))
-    {
-        axiom_node_t *node = NULL;
-        axiom_element_t *element = NULL;
-        axis2_char_t *name = NULL;
-        axis2_char_t *value = NULL;
-		axis2_char_t *encoded_value = NULL;
- 
-        node = AXIOM_CHILD_ELEMENT_ITERATOR_NEXT(iterator, env);
-        element = AXIOM_NODE_GET_DATA_ELEMENT(node, env);
-        name = AXIOM_ELEMENT_GET_LOCALNAME(element, env);
-        value = AXIOM_ELEMENT_GET_TEXT(element, env, node);
-
-		encoded_value = (axis2_char_t *) AXIS2_MALLOC (env->allocator, strlen (value));
-		memset (encoded_value, 0, strlen (value));
-		encoded_value = axis2_url_encode (env, encoded_value, value, strlen (value));
-
-        AXIS2_ARRAY_LIST_ADD(param_list, env, axis2_strcat(env, name, "=",
-                encoded_value, NULL));
-    }
-    for (i = 0; i < AXIS2_ARRAY_LIST_SIZE(param_list, env); i++)
-    {
-        axis2_char_t *tmp_string = NULL;
-        axis2_char_t *pair = NULL;
-
-        pair = AXIS2_ARRAY_LIST_GET(param_list, env, i);
-		if(i ==0)
-			tmp_string = AXIS2_STRACAT(param_string, pair, env);
-		else
-		tmp_string = axis2_strcat(env, param_string, "&", pair, NULL);				
-
-        if (param_string)
-        {
-            AXIS2_FREE(env->allocator, param_string);
-            param_string = NULL;
-        }
-        AXIS2_FREE(env->allocator, pair);
-        param_string = tmp_string;
-    }
-    AXIS2_ARRAY_LIST_FREE(param_list, env);
-    return param_string;
-}
-
-static axis2_char_t *AXIS2_CALL
-axis2_url_encode (
-	const axis2_env_t *env, 
-	axis2_char_t *dest, 
-	axis2_char_t *buff, 
-	int len)
-{
-	axis2_char_t string[4];
-	axis2_char_t *expand_buffer;
-    int i;
-    for (i = 0; i < len  && buff[i]; i++)
-    {
-        if (isalnum (buff[i]) || is_safe_or_unreserve (buff[i]))
-        {
-            sprintf (string,"%c", buff[i]);
-        }
-        else
-        {
-            sprintf (string, "%%%x", buff[i]);
-        }
-
-		if ((strlen (dest) + 4) > len)
-		{
-			expand_buffer = (axis2_char_t *) AXIS2_MALLOC (env->allocator, len*2);
-			memset (expand_buffer, 0, len*2);
-			len *= 2;
-			dest = memmove (expand_buffer, dest, len);
-		}
-		strcat (dest, string);
-    }
-    return dest;
-}
-
-static int AXIS2_CALL
-is_safe_or_unreserve (
-	char c)
-{
-    char safe [] = {'$' , '-' , '_' , '.' , '+'};
-    char reserve [] = {';', '/', '?' ,':', '@',  '&', '='};
-
-/* reserved       = ";" | "/" | "?" | ":" | "@" | "&" | "="
-   safe           = "$" | "-" | "_" | "." | "+" */
-
-    int flag = 0;
-    int i = 0;
-
-    int size = sizeof (safe)/sizeof (safe[0]);
-    for (i = 0; i < size; i++)
-    {
-        if (c == safe[i])
-        {
-            flag = 1;
-            return flag;
-        }
-    }
-
-    size = sizeof (reserve)/sizeof (reserve[0]);
-    for (i = 0; i < size; i++)
-    {
-        if (c == reserve[i])
-        {
-            flag = 0;
-            return flag;
-        }
-    }
-    return flag;
-}
 
 axis2_status_t AXIS2_CALL
 axis2_rest_sender_configure_server_cert(

Modified: webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/sender_util.c
URL: http://svn.apache.org/viewvc/webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/sender_util.c?view=diff&rev=509476&r1=509475&r2=509476
==============================================================================
--- webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/sender_util.c (original)
+++ webservices/axis2/scratch/c/dinesh/532/c/modules/core/transport/http/sender/sender_util.c Tue Feb 20 01:12:28 2007
@@ -21,6 +21,7 @@
 	axis2_char_t *header_value);
 
 
+
 void
 axis2_http_sender_util_add_header (const axis2_env_t *env,
 								   axis2_http_simple_request_t *request,
@@ -31,3 +32,4 @@
     http_header = axis2_http_header_create(env, header_name, header_value);
     AXIS2_HTTP_SIMPLE_REQUEST_ADD_HEADER(request, env, http_header);
 }
+



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