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 na...@apache.org on 2007/10/05 08:04:10 UTC

svn commit: r582087 - in /webservices/axis2/trunk/c/src/core/transport/http/server/IIS: axis2_iis_constants.h axis2_iis_worker.c

Author: nandika
Date: Thu Oct  4 23:04:09 2007
New Revision: 582087

URL: http://svn.apache.org/viewvc?rev=582087&view=rev
Log:
compilation issues fixed

Modified:
    webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_constants.h
    webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_worker.c

Modified: webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_constants.h
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_constants.h?rev=582087&r1=582086&r2=582087&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_constants.h (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_constants.h Thu Oct  4 23:04:09 2007
@@ -1,4 +1,4 @@
-
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -21,14 +21,16 @@
 
 #define INTERNET_MAX_PATH_LENGTH        2048
 #define INTERNET_MAX_SCHEME_LENGTH      32  // longest protocol name length
-#define INTERNET_MAX_URL_LENGTH         (INTERNET_MAX_SCHEME_LENGTH \
 +sizeof("://") \ 
+INTERNET_MAX_PATH_LENGTH) 
+#define INTERNET_MAX_URL_LENGTH         (INTERNET_MAX_SCHEME_LENGTH +sizeof("://") +INTERNET_MAX_PATH_LENGTH) 
+
 #define URI_MATCHED						1
 #define URI_UN_MATCHED					2
 
 #define EXTENSION_URL					"/axis2/mod_axis2_IIS.dll\? "
 #define EXTENSION_URL_AXIS2				"/axis2/"
 #define EXTENSION_URL_MODIIS			"mod_axis2_IIS.dll\? "
-
+
+
 #define MAX_SERVERNAME					128
 #define MAX_PORT_LEN					8
 
@@ -42,6 +44,7 @@
 #define OK								200
 #define HTTP_INTERNAL_SERVER_ERROR		500
 #define HTTP_ACCEPTED					202
-
+
+
 #endif  /*AXIS2_IIS_CONSTANTS_H*/
 

Modified: webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_worker.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_worker.c?rev=582087&r1=582086&r2=582087&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_worker.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/server/IIS/axis2_iis_worker.c Thu Oct  4 23:04:09 2007
@@ -1,4 +1,4 @@
-
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,7 +15,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */  
-    
+    
+
 #include <axis2_http_transport.h>
 #include <axis2_conf.h>
 #include <axutil_string.h>
@@ -39,507 +40,780 @@
 #include "axis2_iis_constants.h"
     
 #define READ_SIZE  32
-    
axis2_status_t AXIS2_CALL axis2_worker_get_original_url(char url[],
-                                                             
char ret_url[]);
-

axis2_char_t * AXIS2_CALL axis2_iis_worker_get_bytes(const axutil_env_t * env,
-                                                       
axutil_stream_t *
-                                                       stream);
-

axis2_status_t AXIS2_CALL start_response(LPEXTENSION_CONTROL_BLOCK lpECB,
-                                           
int status,
-                                           
const char *reason,
-                                           
const char *const *header_names,
-                                           
const char *const *header_values,
-                                           
unsigned int num_of_headers);
-

axis2_status_t write_response(LPEXTENSION_CONTROL_BLOCK lpECB, 
const void *b,
-                                unsigned int l);
-

static struct reasons
-{
-    
axis2_char_t * status_code;
-    
int status_len;
-
} reasons[] =
-{
-    
-    {
-    "200 OK", 6}, 
-    {
-    "202 Accepted", 12}, 
-    {
-"500 Internal Server Error", 25} 
};
-

struct axis2_iis_worker 
-{
-    
axis2_conf_ctx_t * conf_ctx;
-
};
-

char *status_reason(
-    int status);
-

axis2_iis_worker_t * AXIS2_CALL 
-axis2_iis_worker_create(
const axutil_env_t * env,
-                        
axis2_char_t * repo_path) 
-{
-    
axis2_iis_worker_t * iis_worker = NULL;
-    
AXIS2_ENV_CHECK(env, NULL);
-    
iis_worker = (axis2_iis_worker_t *) 
-        AXIS2_MALLOC(env->allocator, sizeof(axis2_iis_worker_t));
-    

if (!iis_worker)
-        
-    {
-        
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
-        
return NULL;
-    
}
-    
iis_worker->conf_ctx = axis2_build_conf_ctx(env, repo_path);
-    

if (!iis_worker->conf_ctx)
-        
-    {
-        
axis2_iis_worker_free((axis2_iis_worker_t *) iis_worker, 
env);
-        
return NULL;
-    
}
-    

return iis_worker;
-
}
-

void AXIS2_CALL 
-axis2_iis_worker_free(
-    
axis2_iis_worker_t * iis_worker,
-    
const axutil_env_t * env) 
-{
-    
AXIS2_ENV_CHECK(env, void);
-    

if (iis_worker->conf_ctx)
-        
-    {
-        
axis2_conf_ctx_free(iis_worker->conf_ctx, env);
-        
iis_worker->conf_ctx = NULL;
-    
}
-    

AXIS2_FREE(env->allocator, iis_worker);
-    

return;
-
}
-

int AXIS2_CALL 
-axis2_iis_worker_process_request(
-    
axis2_iis_worker_t * iis_worker,
-    
const axutil_env_t * env,
-    
LPEXTENSION_CONTROL_BLOCK lpECB) 
-{
-    
axis2_conf_ctx_t * conf_ctx = NULL;
-    
axis2_msg_ctx_t * msg_ctx = NULL;
-    
axutil_stream_t * request_body = NULL;
-    
axutil_stream_t * out_stream = NULL;
-    
axis2_transport_out_desc_t * out_desc = NULL;
-    
axis2_transport_in_desc_t * in_desc = NULL;
-    
axis2_bool_t processed = AXIS2_FALSE;
-    
axis2_char_t * ctx_written = NULL;
-    
-        //int content_length = -1;
-        //axis2_char_t *req_url = NULL;
-        axis2_char_t * body_string = NULL;
-    
int send_status = -1;
-    
axutil_property_t * property = NULL;
-    
axutil_url_t * url = NULL;
-    
axis2_http_out_transport_info_t * iis_out_transport_info = NULL;
-    
axutil_qname_t * transport_qname = NULL;
-    
axis2_char_t * ctx_uuid = NULL;
-    

axis2_char_t soap_action[INTERNET_MAX_URL_LENGTH];
-    
axutil_string_t * soap_str_action = NULL;
-    
axis2_char_t original_url[INTERNET_MAX_URL_LENGTH];
-    
axis2_char_t req_url[INTERNET_MAX_URL_LENGTH];
-    

int body_str_len = 0;
-    
DWORD ret_val = 0;
-    
DWORD cbSize = 0;
-    
CHAR server_name[MAX_SERVERNAME];
-    
axis2_char_t port[MAX_TCP_PORT_LEN];
-    
CHAR redirect_url[INTERNET_MAX_PATH_LENGTH];
-    

soap_action[0] = '\0';
-    
-        // Check the parameters
-        if (!env)
-        
-    {
-        
return HSE_STATUS_ERROR;
-    
}
-    
if (!lpECB)
-        
-    {
-        
AXIS2_ERROR_SET_ERROR_NUMBER(env->error,
-                                      AXIS2_ERROR_INVALID_NULL_PARAM);
-        
return HSE_STATUS_ERROR;
-    
}
-    

conf_ctx = iis_worker->conf_ctx;
-    

if (!conf_ctx)
-        
-    {
-        
AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NULL_CONFIGURATION_CONTEXT,
-                         
AXIS2_FAILURE);
-        
return HSE_STATUS_ERROR;
-    
}
-    

cbSize = INTERNET_MAX_PATH_LENGTH;
-    
ret_val =
-        lpECB->GetServerVariable(lpECB->ConnID, 
"SERVER_NAME", 
server_name,
-                                 
&cbSize);
-    

cbSize = MAX_TCP_PORT_LEN;
-    
ret_val =
-        lpECB->GetServerVariable(lpECB->ConnID, "SERVER_PORT", port, &cbSize);
-    

cbSize = INTERNET_MAX_PATH_LENGTH;
-    
ret_val =
-        lpECB->GetServerVariable(lpECB->ConnID, "HTTP_URL", redirect_url,
-                                 &cbSize);
-    

axis2_worker_get_original_url(redirect_url, original_url);
-    
-        // create the url using the above variables                     
-        sprintf(req_url, "%s%s%s%s", "http", server_name, port, original_url);
-    

out_stream = axutil_stream_create_basic(env);
-    

out_desc = axis2_conf_get_transport_out(axis2_conf_ctx_get_conf 
-                                              (iis_worker->conf_ctx, env), env,
-                                              
AXIS2_TRANSPORT_ENUM_HTTP);
-    
in_desc =
-        axis2_conf_get_transport_in(axis2_conf_ctx_get_conf 
-                                    (iis_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);
-    

axis2_msg_ctx_set_transport_out_stream(msg_ctx, env, out_stream);
-    

ctx_uuid = axutil_uuid_gen(env);
-    
if (ctx_uuid)
-        
-    {
-        
axutil_string_t * uuid_str =
-            axutil_string_create_assume_ownership(env, &ctx_uuid);
-        
axis2_msg_ctx_set_svc_grp_ctx_id(msg_ctx, env, uuid_str);
-        
axutil_string_free(uuid_str, env);
-    
}
-    

iis_out_transport_info = axis2_iis_out_transport_info_create(env, lpECB);
-    
axis2_msg_ctx_set_http_out_transport_info(msg_ctx, env,
-                                               iis_out_transport_info);
-    

cbSize = INTERNET_MAX_URL_LENGTH;
-    
if (lpECB->
-         GetServerVariable(lpECB->ConnID, "HTTP_SOAPAction", soap_action,
-                           &cbSize))
-        
-    {
-        
soap_str_action = axutil_string_create(env, soap_action);
-    
}
-    
request_body = axutil_stream_create_iis(env, lpECB);
-    

if (!request_body)
-        
-    {
-        
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
-                         " creating input stream.");
-        
return HSE_STATUS_ERROR;
-    
}
-    

if (stricmp(lpECB->lpszMethod, "GET") == 0)
-        
-    {
-        
processed = axis2_http_transport_utils_process_http_get_request 
-            (env, msg_ctx, request_body, out_stream, 
lpECB->lpszContentType,
-             soap_str_action, 
req_url, 
conf_ctx,
-             
axis2_http_transport_utils_get_request_params(env,
-                                                            
(axis2_char_t *)
-                                                            req_url));
-        
+    
+axis2_status_t AXIS2_CALL 
+axis2_worker_get_original_url(char url[],
+							  char ret_url[]);
+
+
+axis2_char_t * AXIS2_CALL 
+axis2_iis_worker_get_bytes(const axutil_env_t * env,
+						   axutil_stream_t * stream);
+
+
+axis2_status_t AXIS2_CALL 
+start_response(LPEXTENSION_CONTROL_BLOCK lpECB,
+			   int status,
+			   const char *reason,
+			   const char *const *header_names,
+			   const char *const *header_values,
+               unsigned int num_of_headers);
+
+
+axis2_status_t 
+write_response(LPEXTENSION_CONTROL_BLOCK lpECB, 
+			   const void *b,
+			   unsigned int l);
+
+
+static struct reasons
+{    
+	axis2_char_t * status_code;
+	int status_len;
+} reasons[] = {
+    {"200 OK", 6}, 
+    {"202 Accepted", 12}, 
+    { "500 Internal Server Error", 25} 
+};
+
+
+struct axis2_iis_worker 
+{
+    axis2_conf_ctx_t * conf_ctx;
+};
+
+
+char *status_reason(int status);
+
+
+axis2_iis_worker_t * AXIS2_CALL 
+axis2_iis_worker_create(const axutil_env_t * env,
+                        axis2_char_t * repo_path) 
+{
+    
+axis2_iis_worker_t * iis_worker = NULL;
+    
+iis_worker = (axis2_iis_worker_t *) AXIS2_MALLOC(env->allocator, sizeof(axis2_iis_worker_t));
+if (!iis_worker)
+{
+	AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+	return NULL;
+}
+iis_worker->conf_ctx = axis2_build_conf_ctx(env, repo_path);
+if (!iis_worker->conf_ctx)
+{        
+	axis2_iis_worker_free((axis2_iis_worker_t *) iis_worker, env);
+	return NULL;
+}
+    
+return iis_worker;
+}
+
+
+void AXIS2_CALL 
+axis2_iis_worker_free(axis2_iis_worker_t * iis_worker,
+					  const axutil_env_t * env) 
+{
+if (iis_worker->conf_ctx)
+{
+	axis2_conf_ctx_free(iis_worker->conf_ctx, env);
+	iis_worker->conf_ctx = NULL;
+}
+AXIS2_FREE(env->allocator, iis_worker);
+return;
+}
+
+
+int AXIS2_CALL 
+axis2_iis_worker_process_request(axis2_iis_worker_t * iis_worker,
+								 const axutil_env_t * env,
+								 LPEXTENSION_CONTROL_BLOCK lpECB) 
+{
+axis2_conf_ctx_t * conf_ctx = NULL;
+
+axis2_msg_ctx_t * msg_ctx = NULL;
+
+axutil_stream_t * request_body = NULL;
+
+axutil_stream_t * out_stream = NULL;
+
+axis2_transport_out_desc_t * out_desc = NULL;
+
+axis2_transport_in_desc_t * in_desc = NULL;
+
+axis2_bool_t processed = AXIS2_FALSE;
+
+axis2_char_t * ctx_written = NULL;
+    
+//int content_length = -1;
+//axis2_char_t *req_url = NULL;
+axis2_char_t * body_string = NULL;
+    
+int send_status = -1;
+    
+axutil_property_t * property = NULL;
+    
+axutil_url_t * url = NULL;
+    
+axis2_http_out_transport_info_t * iis_out_transport_info = NULL;
+    
+axutil_qname_t * transport_qname = NULL;
+    
+axis2_char_t * ctx_uuid = NULL;
+    
+axis2_char_t soap_action[INTERNET_MAX_URL_LENGTH];
+    
+axutil_string_t * soap_str_action = NULL;
+    
+axis2_char_t original_url[INTERNET_MAX_URL_LENGTH];
+    
+axis2_char_t req_url[INTERNET_MAX_URL_LENGTH];
+    
+
+int body_str_len = 0;
+    
+DWORD ret_val = 0;
+    
+DWORD cbSize = 0;
+    
+CHAR server_name[MAX_SERVERNAME];
+    
+axis2_char_t port[MAX_TCP_PORT_LEN];
+    
+CHAR redirect_url[INTERNET_MAX_PATH_LENGTH];
+    
+soap_action[0] = '\0';
+    
+// Check the parameters
+    
+if (!lpECB)
+{
+	AXIS2_ERROR_SET_ERROR_NUMBER(env->error, AXIS2_ERROR_INVALID_NULL_PARAM);
+	return HSE_STATUS_ERROR;
+}
+conf_ctx = iis_worker->conf_ctx;
+if (!conf_ctx)
+{
+	AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NULL_CONFIGURATION_CONTEXT, AXIS2_FAILURE);
+	return HSE_STATUS_ERROR;
+}
+cbSize = INTERNET_MAX_PATH_LENGTH;
+
+ret_val = lpECB->GetServerVariable(lpECB->ConnID,  "SERVER_NAME",  server_name,&cbSize);
+
+cbSize = MAX_TCP_PORT_LEN;
+
+ret_val = lpECB->GetServerVariable(lpECB->ConnID, "SERVER_PORT", port, &cbSize);
+
+cbSize = INTERNET_MAX_PATH_LENGTH;
+    
+ret_val = lpECB->GetServerVariable(lpECB->ConnID, "HTTP_URL", redirect_url, &cbSize);
+    
+axis2_worker_get_original_url(redirect_url, original_url);
+    
+// create the url using the above variables                     
+sprintf(req_url, "%s%s%s%s", "http", server_name, port, original_url);
+    
+out_stream = axutil_stream_create_basic(env);
+    
+out_desc = axis2_conf_get_transport_out(
+				axis2_conf_ctx_get_conf (iis_worker->conf_ctx, env), env, AXIS2_TRANSPORT_ENUM_HTTP);
+    
+in_desc = axis2_conf_get_transport_in(
+				axis2_conf_ctx_get_conf (iis_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);
+    
+
+axis2_msg_ctx_set_transport_out_stream(msg_ctx, env, out_stream);
+    
+
+ctx_uuid = axutil_uuid_gen(env);
+    
+if (ctx_uuid)
+{
+        
+	axutil_string_t * uuid_str =
+				axutil_string_create_assume_ownership(env, &ctx_uuid);
+	        
+	axis2_msg_ctx_set_svc_grp_ctx_id(msg_ctx, env, uuid_str);
+	        
+	axutil_string_free(uuid_str, env);
+    
+}
+    
+iis_out_transport_info = axis2_iis_out_transport_info_create(env, lpECB);
+    
+axis2_msg_ctx_set_http_out_transport_info(msg_ctx, env,
+                                               iis_out_transport_info);
+    
+cbSize = INTERNET_MAX_URL_LENGTH;
+    
+if (lpECB->GetServerVariable(lpECB->ConnID, "HTTP_SOAPAction", soap_action, &cbSize))
+{
+	soap_str_action = axutil_string_create(env, soap_action);
+}
+request_body = axutil_stream_create_iis(env, lpECB);
+
+if (!request_body)
+{
+	AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
+                         " creating input stream.");
+	return HSE_STATUS_ERROR;
+}
+    
+if (stricmp(lpECB->lpszMethod, "GET") == 0)
+{
+	processed = axis2_http_transport_utils_process_http_get_request 
+            (env, msg_ctx, request_body, out_stream, lpECB->lpszContentType,
+             soap_str_action, req_url, conf_ctx,
+			axis2_http_transport_utils_get_request_params(env,
+			(axis2_char_t *) req_url));
+        
+
             // If this is not a valid GET request display the list of displayed services.
-            if (processed == AXIS2_FAILURE)
+            if (processed == AXIS2_FAILURE)
+            
+        {
+            
+body_string =
+                axis2_http_transport_utils_get_services_html(env, 
+conf_ctx);
             
-        {
-            
body_string =
-                axis2_http_transport_utils_get_services_html(env, 
conf_ctx);
-            

if (body_string)
-                
-            {
-                
body_str_len = strlen(body_string);
-            
}
-            

axis2_http_out_transport_info_set_content_type
-                (iis_out_transport_info, env, "text/html");
-            
send_status = OK;
-        
}
-    
}
-    
-    else if (stricmp(lpECB->lpszMethod, "POST") == 0)
-        
-    {
-        
axis2_status_t status = AXIS2_FAILURE;
-        
status = axis2_http_transport_utils_process_http_post_request 
-            (env, msg_ctx, request_body, out_stream, 
lpECB->lpszContentType,
-             lpECB->cbTotalBytes, 
soap_str_action, 
req_url);
-        
+
+if (body_string)
+                
+            {
+                
+body_str_len = strlen(body_string);
+            
+}
+            
+
+axis2_http_out_transport_info_set_content_type
+                (iis_out_transport_info, env, "text/html");
+            
+send_status = OK;
+        
+}
+    
+}
+    
+    else if (stricmp(lpECB->lpszMethod, "POST") == 0)
+        
+    {
+        
+axis2_status_t status = AXIS2_FAILURE;
+        
+status = axis2_http_transport_utils_process_http_post_request 
+            (env, msg_ctx, request_body, out_stream, 
+lpECB->lpszContentType,
+             lpECB->cbTotalBytes, 
+soap_str_action, 
+req_url);
+        
+
             // generate a soap fault and send it
-            if (status == AXIS2_FAILURE)
+            if (status == AXIS2_FAILURE)
+            
+        {
+            
+axis2_msg_ctx_t * fault_ctx = NULL;
+            
+axis2_char_t * fault_code = NULL;
             
-        {
-            
axis2_msg_ctx_t * fault_ctx = NULL;
-            
axis2_char_t * fault_code = NULL;
-            
axis2_engine_t * engine = axis2_engine_create(env, conf_ctx);
-            
if (!engine)
-                
-            {
-                
send_status = HTTP_INTERNAL_SERVER_ERROR;
-            
}
-            
if (axis2_msg_ctx_get_is_soap_11(msg_ctx, env))
-                
-            {
-                
fault_code = AXIOM_SOAP_DEFAULT_NAMESPACE_PREFIX ":" 
-                    AXIOM_SOAP11_FAULT_CODE_SENDER;
-            
}
-            
-            else
-                
-            {
-                
fault_code = AXIOM_SOAP_DEFAULT_NAMESPACE_PREFIX ":" 
-                    AXIOM_SOAP12_SOAP_FAULT_VALUE_SENDER;
-            
}
-            

fault_ctx =
-                axis2_engine_create_fault_msg_ctx(engine, env, msg_ctx,
-                                                  
fault_code,
-                                                  axutil_error_get_message(env->
-                                                                           error));
-            

axis2_engine_send_fault(engine, env, fault_ctx);
-            
if (out_stream)
-                
-            {
-                
body_string = axutil_stream_get_buffer(out_stream, env);
-                
body_str_len = axutil_stream_get_len(out_stream, env);
-            
}
-            
send_status = HTTP_INTERNAL_SERVER_ERROR;
-            
axis2_msg_ctx_free(fault_ctx, env);
-        
}
-    
}
+axis2_engine_t * engine = axis2_engine_create(env, conf_ctx);
+            
+if (!engine)
+                
+            {
+                
+send_status = HTTP_INTERNAL_SERVER_ERROR;
+            
+}
+            
+if (axis2_msg_ctx_get_is_soap_11(msg_ctx, env))
+                
+            {
+                
+fault_code = AXIOM_SOAP_DEFAULT_NAMESPACE_PREFIX ":" 
+                    AXIOM_SOAP11_FAULT_CODE_SENDER;
+            
+}
+            
+            else
+                
+            {
+                
+fault_code = AXIOM_SOAP_DEFAULT_NAMESPACE_PREFIX ":" 
+                    AXIOM_SOAP12_SOAP_FAULT_VALUE_SENDER;
+            
+}
+            
+
+fault_ctx =
+                axis2_engine_create_fault_msg_ctx(engine, env, msg_ctx,
+                                                  
+fault_code,
+                                                  axutil_error_get_message(env->
+                                                                           error));
+            
+
+axis2_engine_send_fault(engine, env, fault_ctx);
+            
+if (out_stream)
+                
+            {
+                
+body_string = axutil_stream_get_buffer(out_stream, env);
+                
+body_str_len = axutil_stream_get_len(out_stream, env);
+            
+}
+            
+send_status = HTTP_INTERNAL_SERVER_ERROR;
+            
+axis2_msg_ctx_free(fault_ctx, env);
+        
+}
+    
+}
     
         // Nothing wrong has happen. So proceed with the request
-        if (-1 == send_status)
+        if (-1 == send_status)
+        
+    {
+        
+axis2_op_ctx_t * op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
+        
+if (axis2_op_ctx_get_response_written(op_ctx, env))
+            
+        {
+            
+if (out_stream)
+                
+            {
+                
+body_string = axutil_stream_get_buffer(out_stream, env);
+                
+body_str_len = axutil_stream_get_len(out_stream, env);
+            
+}
+            
+send_status = OK;
+        
+}
+        
+        else
+            
+        {
+            
+send_status = HTTP_ACCEPTED;
+        
+}
+    
+}
+    
+
+if (body_string)
+        
+    {
+        
+const char *headers_names[] = { 
+"Content-Type", 
+"Content-Length" 
+        };
+        
+const char *headers_vhtml[2];
+        
+
+headers_vhtml[1] = (char *) malloc(16);
+        
+headers_vhtml[0] =
+            axis2_iis_out_transport_get_content(iis_out_transport_info);
+        
+sprintf(headers_vhtml[1], "%d", body_str_len);
+        
+if (!start_response
+             (lpECB, send_status, NULL, headers_names, headers_vhtml, 2))
+            
+        {
+            
+AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
+                             " writing response.");
+        
+}
+        
+
+if (!write_response(lpECB, body_string, body_str_len))
+            
+        {
+            
+AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
+                             " writing response.");
+        
+}
+        
+AXIS2_FREE(env->allocator, body_string);
+        
+body_string = NULL;
+    
+}
+    
+    else
+        
+    {
+        
+if (!start_response(lpECB, send_status, NULL, NULL, NULL, 0))
+            
+        {
+            
+AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
+                             " writing response.");
+        
+}
+    
+}
+    
+
+if (request_body)
+        
+    {
         
-    {
-        
axis2_op_ctx_t * op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
-        
if (axis2_op_ctx_get_response_written(op_ctx, env))
-            
-        {
-            
if (out_stream)
-                
-            {
-                
body_string = axutil_stream_get_buffer(out_stream, env);
-                
body_str_len = axutil_stream_get_len(out_stream, env);
-            
}
-            
send_status = OK;
-        
}
-        
-        else
-            
-        {
-            
send_status = HTTP_ACCEPTED;
-        
}
-    
}
-    

if (body_string)
-        
-    {
-        
const char *headers_names[] = { 
"Content-Type", 
"Content-Length" 
-        };
-        
const char *headers_vhtml[2];
-        

headers_vhtml[1] = (char *) malloc(16);
-        
headers_vhtml[0] =
-            axis2_iis_out_transport_get_content(iis_out_transport_info);
-        
sprintf(headers_vhtml[1], "%d", body_str_len);
-        
if (!start_response
-             (lpECB, send_status, NULL, headers_names, headers_vhtml, 2))
-            
-        {
-            
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
-                             " writing response.");
-        
}
-        

if (!write_response(lpECB, body_string, body_str_len))
-            
-        {
-            
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
-                             " writing response.");
-        
}
-        
AXIS2_FREE(env->allocator, body_string);
-        
body_string = NULL;
-    
}
-    
-    else
-        
-    {
-        
if (!start_response(lpECB, send_status, NULL, NULL, NULL, 0))
-            
-        {
-            
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Error occured in" 
-                             " writing response.");
-        
}
-    
}
-    

if (request_body)
-        
-    {
-        
axutil_stream_free(request_body, env);
-        
request_body = NULL;
-    
}
-    
msg_ctx = NULL;
-    
return HSE_STATUS_SUCCESS;
-
}
-
-

axis2_status_t write_response(LPEXTENSION_CONTROL_BLOCK lpECB, const void *b,
+axutil_stream_free(request_body, env);
+        
+request_body = NULL;
+    
+}
+    
+msg_ctx = NULL;
+    
+return HSE_STATUS_SUCCESS;
+
+}
+
+
+
+axis2_status_t write_response(LPEXTENSION_CONTROL_BLOCK lpECB, const void *b,
                                 unsigned int l) 
-{
-    
if (lpECB && b)
-    {
-        
if (l)
-        {
-            
unsigned int written = 0;
-            
char *buf = (char *) b;
+{
+    
+if (lpECB && b)
+    {
+        
+if (l)
+        {
+            
+unsigned int written = 0;
+            
+char *buf = (char *) b;
             
                 // If couldn't write the data at onece try again until all the data is written.
-                while (written < l)
-            {
-                
DWORD try_to_write = l - written;
-                
if (!lpECB->
-                     WriteClient(lpECB->ConnID, 
buf + written, &try_to_write,
-                                 0))
-                {
-                    
return FALSE;
-                
}
-                
written += try_to_write;
-            
}
-        
}
-        
return TRUE;
-    
}
-    
return FALSE;
-
}
-
-

axis2_status_t AXIS2_CALL start_response(LPEXTENSION_CONTROL_BLOCK lpECB,
-                                           
int status, 
const char *reason,
-                                           
const char *const *header_names,
-                                           
const char *const *header_values,
-                                           
unsigned int num_of_headers) 
-{
-    
static char crlf[3] = { (char) 13, (char) 10, '\0' };
-    

if (status < 100 || status > 1000)
-    {
-        
return FALSE;
-    
}
-    

if (lpECB)
-    {
-        
size_t len_of_status;
-        
char *status_str;
-        
char *headers_str;
-        
+                while (written < l)
+            {
+                
+DWORD try_to_write = l - written;
+                
+if (!lpECB->
+                     WriteClient(lpECB->ConnID, 
+buf + written, &try_to_write,
+                                 0))
+                {
+                    
+return FALSE;
+                
+}
+                
+written += try_to_write;
+            
+}
+        
+}
+        
+return TRUE;
+    
+}
+    
+return FALSE;
+
+}
+
+
+
+axis2_status_t AXIS2_CALL start_response(LPEXTENSION_CONTROL_BLOCK lpECB,
+                                           
+int status, 
+const char *reason,
+                                           
+const char *const *header_names,
+                                           
+const char *const *header_values,
+                                           
+unsigned int num_of_headers) 
+{
+    
+static char crlf[3] = { (char) 13, (char) 10, '\0' };
+    
+
+if (status < 100 || status > 1000)
+    {
+        
+return FALSE;
+    
+}
+    
+
+if (lpECB)
+    {
+        
+size_t len_of_status;
+        
+char *status_str;
+        
+char *headers_str;
+        
+
             /*
              * Create the status line
              */ 
-            if (reason)
-        {
-            
status_str = (char *) _alloca((6 + strlen(reason)) * sizeof(char));
-            
sprintf(status_str, "%d %s", status, reason);
-            
len_of_status = strlen(status_str);
-        
}
-        
-        else
-        {
-            
switch (status)
-            {
-            
case 200:
-                
status_str = reasons[0].status_code;
-                
len_of_status = reasons[0].status_len;
-                
break;
-            
case 202:
-                
status_str = reasons[1].status_code;
-                
len_of_status = reasons[1].status_len;
-                
break;
-            
case 500:
-                
status_str = reasons[2].status_code;
-                
len_of_status = reasons[2].status_len;
-                
break;
-            
default:
-                
status_str = reasons[0].status_code;
-                
len_of_status = reasons[0].status_len;
-                
break;
-            
}
-        
}
-        
+            if (reason)
+        {
+            
+status_str = (char *) _alloca((6 + strlen(reason)) * sizeof(char));
+            
+sprintf(status_str, "%d %s", status, reason);
+            
+len_of_status = strlen(status_str);
+        
+}
+        
+        else
+        {
+            
+switch (status)
+            {
+            
+case 200:
+                
+status_str = reasons[0].status_code;
+                
+len_of_status = reasons[0].status_len;
+                
+break;
+            
+case 202:
+                
+status_str = reasons[1].status_code;
+                
+len_of_status = reasons[1].status_len;
+                
+break;
+            
+case 500:
+                
+status_str = reasons[2].status_code;
+                
+len_of_status = reasons[2].status_len;
+                
+break;
+            
+default:
+                
+status_str = reasons[0].status_code;
+                
+len_of_status = reasons[0].status_len;
+                
+break;
+            
+}
+        
+}
+        
+
             /*
              * Create response headers string
              */ 
-            if (num_of_headers)
-        {
-            
size_t i, len_of_headers;
-            
for (i = 0, len_of_headers = 0; i < num_of_headers; i++)
-            {
-                
len_of_headers += strlen(header_names[i]);
-                
len_of_headers += strlen(header_values[i]);
-                
len_of_headers += 4;   /* extra for colon, space and crlf */
-            
}
-            

len_of_headers += 3;  /* crlf and terminating null char */
-            
headers_str = (char *) _alloca(len_of_headers * sizeof(char));
-            
headers_str[0] = '\0';
-            

for (i = 0; i < num_of_headers; i++)
-            {
-                
strcat(headers_str, header_names[i]);
-                
strcat(headers_str, ": ");
-                
strcat(headers_str, header_values[i]);
-                
strcat(headers_str, "\r\n");
-            
}
-            
strcat(headers_str, "\r\n");
-        
}
-        
-        else
-        {
-            
headers_str = crlf;
-        
}
-        

if (!lpECB->
-              ServerSupportFunction(lpECB->ConnID,
-                                    
HSE_REQ_SEND_RESPONSE_HEADER, 
status_str,
-                                    
(LPDWORD) & len_of_status,
-                                    
(LPDWORD) headers_str))
-        {
-            
return FALSE;
-        
}
-        
return TRUE;
-    
}
-    
return FALSE;
-
}
-
-


axis2_status_t AXIS2_CALL axis2_worker_get_original_url(char url[],
+            if (num_of_headers)
+        {
+            
+size_t i, len_of_headers;
+            
+for (i = 0, len_of_headers = 0; i < num_of_headers; i++)
+            {
+                
+len_of_headers += strlen(header_names[i]);
+                
+len_of_headers += strlen(header_values[i]);
+                
+len_of_headers += 4;   /* extra for colon, space and crlf */
+            
+}
+            
+
+len_of_headers += 3;  /* crlf and terminating null char */
+            
+headers_str = (char *) _alloca(len_of_headers * sizeof(char));
+            
+headers_str[0] = '\0';
+            
+
+for (i = 0; i < num_of_headers; i++)
+            {
+                
+strcat(headers_str, header_names[i]);
+                
+strcat(headers_str, ": ");
+                
+strcat(headers_str, header_values[i]);
+                
+strcat(headers_str, "\r\n");
+            
+}
+            
+strcat(headers_str, "\r\n");
+        
+}
+        
+        else
+        {
+            
+headers_str = crlf;
+        
+}
+        
+
+if (!lpECB->
+              ServerSupportFunction(lpECB->ConnID,
+                                    
+HSE_REQ_SEND_RESPONSE_HEADER, 
+status_str,
+                                    
+(LPDWORD) & len_of_status,
+                                    
+(LPDWORD) headers_str))
+        {
+            
+return FALSE;
+        
+}
+        
+return TRUE;
+    
+}
+    
+return FALSE;
+
+}
+
+
+
+
+axis2_status_t AXIS2_CALL axis2_worker_get_original_url(char url[],
                                                            char ret_url[]) 
-{
-    
int i = 0;
-    
for (i = 0; i < 7; i++)
-        
ret_url[i] = url[i];
-    

for (i = 7; url[i] != '\0'; i++)
-        
ret_url[i] = url[i + 18];
-    

ret_url[i] = '\0';
-    

return URI_MATCHED;
-
}
-
-

axis2_char_t * AXIS2_CALL 
-axis2_iis_worker_get_bytes(
const axutil_env_t * env,
-                           
axutil_stream_t * stream) 
-{
-    

axutil_stream_t * tmp_stream = NULL;
-    
int return_size = -1;
-    
axis2_char_t * buffer = NULL;
-    

AXIS2_ENV_CHECK(env, NULL);
-    
AXIS2_PARAM_CHECK(env->error, stream, NULL);
-    

tmp_stream = axutil_stream_create_basic(env);
-    
while (1)
-        
-    {
-        
int read = 0;
-        
int write = 0;
-        

char buf[READ_SIZE];
-        
read = axutil_stream_read(stream, env, buf, READ_SIZE);
-        
if (read < 0)
-            
-        {
-            
break;
-        
}
-        
write = axutil_stream_write(tmp_stream, env, buf, read);
-        
if (read < (READ_SIZE - 1))
-            
-        {
-            
break;
-        
}
-    
}
-    
return_size = axutil_stream_get_len(tmp_stream, env);
-    

if (return_size > 0)
-        
-    {
-        
buffer = (char *) AXIS2_MALLOC(env->allocator, sizeof(char) * 
-                                        (return_size + 2));
-        
return_size =
-            axutil_stream_read(tmp_stream, env, buffer, 
return_size + 1);
-        
buffer[return_size + 1] = '\0';
-    
}
-    
axutil_stream_free(tmp_stream, env);
-    
return buffer;
-
}
-
-

+{
+    
+int i = 0;
+    
+for (i = 0; i < 7; i++)
+        
+ret_url[i] = url[i];
+    
+
+for (i = 7; url[i] != '\0'; i++)
+        
+ret_url[i] = url[i + 18];
+    
+
+ret_url[i] = '\0';
+    
+
+return URI_MATCHED;
+
+}
+
+
+
+axis2_char_t * AXIS2_CALL 
+axis2_iis_worker_get_bytes(
+const axutil_env_t * env,
+                           
+axutil_stream_t * stream) 
+{
+    
+
+axutil_stream_t * tmp_stream = NULL;
+    
+int return_size = -1;
+    
+axis2_char_t * buffer = NULL;
+    
+
+AXIS2_ENV_CHECK(env, NULL);
+    
+AXIS2_PARAM_CHECK(env->error, stream, NULL);
+    
+
+tmp_stream = axutil_stream_create_basic(env);
+    
+while (1)
+        
+    {
+        
+int read = 0;
+        
+int write = 0;
+        
+
+char buf[READ_SIZE];
+        
+read = axutil_stream_read(stream, env, buf, READ_SIZE);
+        
+if (read < 0)
+            
+        {
+            
+break;
+        
+}
+        
+write = axutil_stream_write(tmp_stream, env, buf, read);
+        
+if (read < (READ_SIZE - 1))
+            
+        {
+            
+break;
+        
+}
+    
+}
+    
+return_size = axutil_stream_get_len(tmp_stream, env);
+    
+
+if (return_size > 0)
+        
+    {
+        
+buffer = (char *) AXIS2_MALLOC(env->allocator, sizeof(char) * 
+                                        (return_size + 2));
+        
+return_size =
+            axutil_stream_read(tmp_stream, env, buffer, 
+return_size + 1);
+        
+buffer[return_size + 1] = '\0';
+    
+}
+    
+axutil_stream_free(tmp_stream, env);
+    
+return buffer;
+
+}
+
+
+
+



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