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 sh...@apache.org on 2009/09/03 12:33:45 UTC
svn commit: r810873 - in /webservices/axis2/trunk/c/src/core/transport/http:
common/simple_http_svr_conn.c util/http_transport_utils.c
Author: shankar
Date: Thu Sep 3 10:33:44 2009
New Revision: 810873
URL: http://svn.apache.org/viewvc?rev=810873&view=rev
Log:
fixing mtom file read error
Modified:
webservices/axis2/trunk/c/src/core/transport/http/common/simple_http_svr_conn.c
webservices/axis2/trunk/c/src/core/transport/http/util/http_transport_utils.c
Modified: webservices/axis2/trunk/c/src/core/transport/http/common/simple_http_svr_conn.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/common/simple_http_svr_conn.c?rev=810873&r1=810872&r2=810873&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/common/simple_http_svr_conn.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/common/simple_http_svr_conn.c Thu Sep 3 10:33:44 2009
@@ -315,7 +315,16 @@
chunked_stream = axutil_http_chunked_stream_create(env, svr_conn->stream);
while(left > 0)
{
- left -= axutil_http_chunked_stream_write(chunked_stream, env, response_body, body_size);
+ int len = -1;
+ len = axutil_http_chunked_stream_write(chunked_stream, env, response_body, body_size);
+ if(len <= 0)
+ {
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "cannot write data to chunked stream");
+ axutil_http_chunked_stream_free(chunked_stream, env);
+ axis2_http_response_writer_free(response_writer, env);
+ return AXIS2_FAILURE;
+ }
+ left -= len;
}
axutil_http_chunked_stream_write_last_chunk(chunked_stream, env);
axutil_http_chunked_stream_free(chunked_stream, env);
Modified: webservices/axis2/trunk/c/src/core/transport/http/util/http_transport_utils.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/src/core/transport/http/util/http_transport_utils.c?rev=810873&r1=810872&r2=810873&view=diff
==============================================================================
--- webservices/axis2/trunk/c/src/core/transport/http/util/http_transport_utils.c (original)
+++ webservices/axis2/trunk/c/src/core/transport/http/util/http_transport_utils.c Thu Sep 3 10:33:44 2009
@@ -143,7 +143,8 @@
axis2_char_t * dest,
axis2_char_t * src);
-AXIS2_EXTERN int AXIS2_CALL axis2_http_transport_utils_hexit(
+AXIS2_EXTERN int AXIS2_CALL
+axis2_http_transport_utils_hexit(
axis2_char_t c);
AXIS2_EXTERN axis2_char_t *AXIS2_CALL
@@ -162,7 +163,8 @@
const axutil_env_t * env,
const axis2_char_t * content_type);
-int AXIS2_CALL axis2_http_transport_utils_on_data_request(
+int AXIS2_CALL
+axis2_http_transport_utils_on_data_request(
char *buffer,
int size,
void *ctx);
@@ -1672,7 +1674,7 @@
svcs_exists = AXIS2_TRUE;
ret = axutil_stracat(env, tmp2,
"<hr><h2><font color=\"red\">Faulty \
- Services</font></h2>");
+ Services</font></h2>");
AXIS2_FREE(env->allocator, tmp2);
tmp2 = ret;
@@ -2667,7 +2669,7 @@
response->http_status_code = AXIS2_HTTP_RESPONSE_METHOD_NOT_ALLOWED_CODE_VAL;
response->http_status_code_name
- = AXIS2_HTTP_RESPONSE_METHOD_NOT_ALLOWED_CODE_NAME;
+ = AXIS2_HTTP_RESPONSE_METHOD_NOT_ALLOWED_CODE_NAME;
}
else
{
@@ -2719,10 +2721,10 @@
{
/* 413, Request entity too large */
body_string
- = axis2_http_transport_utils_get_request_entity_too_large(env, conf_ctx);
+ = axis2_http_transport_utils_get_request_entity_too_large(env, conf_ctx);
response->http_status_code = AXIS2_HTTP_RESPONSE_REQUEST_ENTITY_TOO_LARGE_CODE_VAL;
response->http_status_code_name
- = AXIS2_HTTP_RESPONSE_REQUEST_ENTITY_TOO_LARGE_CODE_NAME;
+ = AXIS2_HTTP_RESPONSE_REQUEST_ENTITY_TOO_LARGE_CODE_NAME;
}
else if(msg_ctx_status_code == AXIS2_HTTP_RESPONSE_SERVICE_UNAVAILABLE_CODE_VAL)
{
@@ -2737,7 +2739,7 @@
body_string = axis2_http_transport_utils_get_internal_server_error(env, conf_ctx);
response->http_status_code = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_VAL;
response->http_status_code_name
- = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_NAME;
+ = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_NAME;
}
if(body_string)
@@ -2779,7 +2781,7 @@
body_string = axis2_http_transport_utils_get_method_not_allowed(env, conf_ctx);
response->http_status_code = AXIS2_HTTP_RESPONSE_METHOD_NOT_ALLOWED_CODE_VAL;
response->http_status_code_name
- = AXIS2_HTTP_RESPONSE_METHOD_NOT_ALLOWED_CODE_NAME;
+ = AXIS2_HTTP_RESPONSE_METHOD_NOT_ALLOWED_CODE_NAME;
}
else
{
@@ -2796,7 +2798,7 @@
body_string = axis2_http_transport_utils_get_internal_server_error(env, conf_ctx);
response->http_status_code = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_VAL;
response->http_status_code_name
- = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_NAME;
+ = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_NAME;
}
@@ -2819,288 +2821,288 @@
}
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_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, request->msg_ctx,
+ fault_code, axutil_error_get_message(env->error));
+
+ axis2_engine_send_fault(engine, env, fault_ctx);
+ if (out_stream)
+ {
+ response->response_data = axutil_stream_get_buffer(out_stream, env);
+ response->response_data_length = axutil_stream_get_len (out_stream, env);
+ }
+ /* In case of a SOAP Fault, we have to set the status to 500, but still return */
+ status = AXIS2_SUCCESS;
+ response->http_status_code = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_NAME;
}
- fault_ctx = axis2_engine_create_fault_msg_ctx(engine, env, request->msg_ctx,
- fault_code, axutil_error_get_message(env->error));
+ }
+ else
+ {
+ response->response_data = axis2_http_transport_utils_get_not_implemented(env, conf_ctx);
+ request->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
- axis2_engine_send_fault(engine, env, fault_ctx);
- if (out_stream)
+ if (response->response_data)
{
- response->response_data = axutil_stream_get_buffer(out_stream, env);
- response->response_data_length = axutil_stream_get_len (out_stream, env);
+ response->response_data_length = axutil_strlen(response->response_data);
}
- /* In case of a SOAP Fault, we have to set the status to 500, but still return */
+ response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_IMPLEMENTED_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_IMPLEMENTED_CODE_NAME;
status = AXIS2_SUCCESS;
- response->http_status_code = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_INTERNAL_SERVER_ERROR_CODE_NAME;
- }
-}
-else
-{
- response->response_data = axis2_http_transport_utils_get_not_implemented(env, conf_ctx);
- request->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
-
- if (response->response_data)
- {
- response->response_data_length = axutil_strlen(response->response_data);
}
- response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_IMPLEMENTED_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_IMPLEMENTED_CODE_NAME;
- status = AXIS2_SUCCESS;
-}
-
-op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
-if (op_ctx)
-{
- msg_ctx_map = axis2_op_ctx_get_msg_ctx_map(op_ctx, env);
- out_msg_ctx = msg_ctx_map[AXIS2_WSDL_MESSAGE_LABEL_OUT];
- response->msg_ctx = out_msg_ctx;
-}
+ op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
-if (status == AXIS2_FAILURE)
-{
- axis2_bool_t do_rest = AXIS2_FALSE;
- if (AXIS2_HTTP_METHOD_POST != request->request_method ||
- axis2_msg_ctx_get_doing_rest(msg_ctx, env))
+ if (op_ctx)
{
- do_rest = AXIS2_TRUE;
+ msg_ctx_map = axis2_op_ctx_get_msg_ctx_map(op_ctx, env);
+ out_msg_ctx = msg_ctx_map[AXIS2_WSDL_MESSAGE_LABEL_OUT];
+ response->msg_ctx = out_msg_ctx;
}
- if ((request->accept_header || request->accept_charset_header ||
- request->accept_language_header) && do_rest)
- {
- axis2_char_t *content_type_header_value = NULL;
- axis2_char_t *temp = NULL;
- axis2_char_t *language_header_value = NULL;
- content_type_header_value = (axis2_char_t *) request->content_type;
- language_header_value = axis2_msg_ctx_get_content_language(out_msg_ctx,env);
- if (content_type_header_value)
+ if (status == AXIS2_FAILURE)
+ {
+ axis2_bool_t do_rest = AXIS2_FALSE;
+ if (AXIS2_HTTP_METHOD_POST != request->request_method ||
+ axis2_msg_ctx_get_doing_rest(msg_ctx, env))
{
- temp = axutil_strdup(env, content_type_header_value);
+ do_rest = AXIS2_TRUE;
}
- if (temp)
+ if ((request->accept_header || request->accept_charset_header ||
+ request->accept_language_header) && do_rest)
{
- axis2_char_t *content_type = NULL;
- axis2_char_t *char_set = NULL;
- axis2_char_t *temp2 = NULL;
-
- temp2 = strchr(temp, ';');
- if (temp2)
- {
- *temp2 = '\0';
- temp2++;
- char_set = axutil_strcasestr(temp2, AXIS2_HTTP_CHAR_SET_ENCODING);
- }
- if (char_set)
- {
- char_set = axutil_strltrim(env, char_set, " \t=");
- }
- if (char_set)
+ axis2_char_t *content_type_header_value = NULL;
+ axis2_char_t *temp = NULL;
+ axis2_char_t *language_header_value = NULL;
+
+ content_type_header_value = (axis2_char_t *) request->content_type;
+ language_header_value = axis2_msg_ctx_get_content_language(out_msg_ctx,env);
+ if (content_type_header_value)
{
- temp2 = strchr(char_set, ';');
+ temp = axutil_strdup(env, content_type_header_value);
}
- if (temp2)
- {
- *temp2 = '\0';
- }
- content_type = axutil_strtrim(env, temp, NULL);
-
if (temp)
{
- AXIS2_FREE(env->allocator, temp);
- temp = NULL;
- }
- if (content_type && request->accept_header &&
- !axutil_strcasestr(request->accept_header, content_type))
- {
- temp2 = strchr(content_type, '/');
+ axis2_char_t *content_type = NULL;
+ axis2_char_t *char_set = NULL;
+ axis2_char_t *temp2 = NULL;
+
+ temp2 = strchr(temp, ';');
if (temp2)
{
*temp2 = '\0';
- temp = AXIS2_MALLOC(env->allocator,
- sizeof(axis2_char_t) * ((int)strlen(content_type) + 3));
- if (!temp)
- {
- AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
- return AXIS2_FALSE;
- }
- sprintf(temp, "%s/*", content_type);
- if (!axutil_strcasestr(request->accept_header, temp) &&
- !strstr(request->accept_header, AXIS2_HTTP_HEADER_ACCEPT_ALL))
+ temp2++;
+ char_set = axutil_strcasestr(temp2, AXIS2_HTTP_CHAR_SET_ENCODING);
+ }
+ if (char_set)
+ {
+ char_set = axutil_strltrim(env, char_set, " \t=");
+ }
+ if (char_set)
+ {
+ temp2 = strchr(char_set, ';');
+ }
+ if (temp2)
+ {
+ *temp2 = '\0';
+ }
+ content_type = axutil_strtrim(env, temp, NULL);
+
+ if (temp)
+ {
+ AXIS2_FREE(env->allocator, temp);
+ temp = NULL;
+ }
+ if (content_type && request->accept_header &&
+ !axutil_strcasestr(request->accept_header, content_type))
+ {
+ temp2 = strchr(content_type, '/');
+ if (temp2)
{
- response->response_data =
- axis2_http_transport_utils_get_not_acceptable(env, conf_ctx);
- response->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
- if (response->response_data)
+ *temp2 = '\0';
+ temp = AXIS2_MALLOC(env->allocator,
+ sizeof(axis2_char_t) * ((int)strlen(content_type) + 3));
+ if (!temp)
{
- response->response_data_length = axutil_strlen(response->response_data);
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ return AXIS2_FALSE;
}
- response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_IMPLEMENTED_CODE_NAME;
- status = AXIS2_TRUE;
+ sprintf(temp, "%s/*", content_type);
+ if (!axutil_strcasestr(request->accept_header, temp) &&
+ !strstr(request->accept_header, AXIS2_HTTP_HEADER_ACCEPT_ALL))
+ {
+ response->response_data =
+ axis2_http_transport_utils_get_not_acceptable(env, conf_ctx);
+ response->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
+ if (response->response_data)
+ {
+ response->response_data_length = axutil_strlen(response->response_data);
+ }
+ response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_IMPLEMENTED_CODE_NAME;
+ status = AXIS2_TRUE;
+ }
+ AXIS2_FREE(env->allocator, temp);
}
- AXIS2_FREE(env->allocator, temp);
}
- }
- if (content_type)
- {
- AXIS2_FREE(env->allocator, content_type);
- }
- if (char_set && request->accept_charset_header &&
- !axutil_strcasestr(request->accept_charset_header , char_set))
- {
- response->response_data =
- axis2_http_transport_utils_get_not_acceptable(env, conf_ctx);
- response->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
+ if (content_type)
+ {
+ AXIS2_FREE(env->allocator, content_type);
+ }
+ if (char_set && request->accept_charset_header &&
+ !axutil_strcasestr(request->accept_charset_header , char_set))
+ {
+ response->response_data =
+ axis2_http_transport_utils_get_not_acceptable(env, conf_ctx);
+ response->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
- if (response->response_data)
+ if (response->response_data)
+ {
+ response->response_data_length= axutil_strlen(response->response_data);
+ }
+ status = AXIS2_SUCCESS;
+ response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_NAME;
+ }
+ if (char_set)
{
- response->response_data_length= axutil_strlen(response->response_data);
+ AXIS2_FREE(env->allocator, char_set);
}
- status = AXIS2_SUCCESS;
- response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_NAME;
}
- if (char_set)
+ if (language_header_value)
{
- AXIS2_FREE(env->allocator, char_set);
- }
- }
- if (language_header_value)
- {
- if (request->accept_language_header &&
- !axutil_strcasestr(request->accept_language_header , language_header_value))
- {
- response->response_data =
- axis2_http_transport_utils_get_not_acceptable(env, conf_ctx);
- response->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
- if (response->response_data)
+ if (request->accept_language_header &&
+ !axutil_strcasestr(request->accept_language_header , language_header_value))
{
- response->response_data_length = axutil_strlen(response->response_data);
+ response->response_data =
+ axis2_http_transport_utils_get_not_acceptable(env, conf_ctx);
+ response->content_type = AXIS2_HTTP_HEADER_ACCEPT_TEXT_HTML;
+ if (response->response_data)
+ {
+ response->response_data_length = axutil_strlen(response->response_data);
+ }
+ response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_NAME;
}
- response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_NOT_ACCEPTABLE_CODE_NAME;
}
}
}
-}
-if (status == AXIS2_FAILURE)
-{
- axis2_bool_t do_rest = AXIS2_FALSE;
- if (AXIS2_HTTP_METHOD_POST != request->request_method ||
- axis2_msg_ctx_get_doing_rest(msg_ctx, env))
- {
- do_rest = AXIS2_TRUE;
- }
- if (op_ctx && axis2_op_ctx_get_response_written(op_ctx, env))
+ if (status == AXIS2_FAILURE)
{
- if (do_rest)
+ axis2_bool_t do_rest = AXIS2_FALSE;
+ if (AXIS2_HTTP_METHOD_POST != request->request_method ||
+ axis2_msg_ctx_get_doing_rest(msg_ctx, env))
+ {
+ do_rest = AXIS2_TRUE;
+ }
+ if (op_ctx && axis2_op_ctx_get_response_written(op_ctx, env))
{
- if (out_msg_ctx)
+ if (do_rest)
{
- int size = 0;
- axutil_array_list_t *output_header_list = NULL;
- output_header_list = axis2_msg_ctx_get_http_output_headers(out_msg_ctx, env);
- if (output_header_list)
+ if (out_msg_ctx)
{
- size = axutil_array_list_size(output_header_list, env);
- response->output_headers = output_header_list;
- }
+ int size = 0;
+ axutil_array_list_t *output_header_list = NULL;
+ output_header_list = axis2_msg_ctx_get_http_output_headers(out_msg_ctx, env);
+ if (output_header_list)
+ {
+ size = axutil_array_list_size(output_header_list, env);
+ response->output_headers = output_header_list;
+ }
- if (axis2_msg_ctx_get_status_code(out_msg_ctx, env))
- {
- int status_code = axis2_msg_ctx_get_status_code(out_msg_ctx, env);
- response->http_status_code =
- axis2_http_transport_utils_check_status_code(status_code);
- status = AXIS2_SUCCESS;
+ if (axis2_msg_ctx_get_status_code(out_msg_ctx, env))
+ {
+ int status_code = axis2_msg_ctx_get_status_code(out_msg_ctx, env);
+ response->http_status_code =
+ axis2_http_transport_utils_check_status_code(status_code);
+ status = AXIS2_SUCCESS;
+ }
}
}
- }
- if (status == AXIS2_FAILURE)
- {
- status = AXIS2_SUCCESS;
- if (out_stream)
+ if (status == AXIS2_FAILURE)
{
- response->response_data = axutil_stream_get_buffer(out_stream, env);
- response->response_data_length = axutil_stream_get_len(out_stream, env);
- response->http_status_code = AXIS2_HTTP_RESPONSE_OK_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_OK_CODE_NAME;
+ status = AXIS2_SUCCESS;
+ if (out_stream)
+ {
+ response->response_data = axutil_stream_get_buffer(out_stream, env);
+ response->response_data_length = axutil_stream_get_len(out_stream, env);
+ response->http_status_code = AXIS2_HTTP_RESPONSE_OK_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_OK_CODE_NAME;
+ }
}
}
- }
- else if (op_ctx)
- {
- if (do_rest)
+ else if (op_ctx)
{
- if (out_msg_ctx)
+ if (do_rest)
{
- int size = 0;
- axutil_array_list_t *output_header_list = NULL;
- output_header_list = axis2_msg_ctx_get_http_output_headers(out_msg_ctx, env);
- if (output_header_list)
- {
- size = axutil_array_list_size(output_header_list, env);
- response->output_headers = output_header_list;
- }
- if (axis2_msg_ctx_get_no_content(out_msg_ctx, env))
+ if (out_msg_ctx)
{
- if (axis2_msg_ctx_get_status_code(out_msg_ctx, env))
+ int size = 0;
+ axutil_array_list_t *output_header_list = NULL;
+ output_header_list = axis2_msg_ctx_get_http_output_headers(out_msg_ctx, env);
+ if (output_header_list)
{
- int status_code = axis2_msg_ctx_get_status_code(out_msg_ctx, env);
- switch (status_code)
+ size = axutil_array_list_size(output_header_list, env);
+ response->output_headers = output_header_list;
+ }
+ if (axis2_msg_ctx_get_no_content(out_msg_ctx, env))
+ {
+ if (axis2_msg_ctx_get_status_code(out_msg_ctx, env))
+ {
+ int status_code = axis2_msg_ctx_get_status_code(out_msg_ctx, env);
+ switch (status_code)
+ {
+ case AXIS2_HTTP_RESPONSE_RESET_CONTENT_CODE_VAL:
+ response->http_status_code = AXIS2_HTTP_RESPONSE_RESET_CONTENT_CODE_VAL;
+ break;
+ case AXIS2_HTTP_RESPONSE_NOT_MODIFIED_CODE_VAL:
+ response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_MODIFIED_CODE_VAL;
+ break;
+ default:
+ response->http_status_code = AXIS2_HTTP_RESPONSE_NO_CONTENT_CODE_VAL;
+ break;
+ }
+ }
+ else
{
- case AXIS2_HTTP_RESPONSE_RESET_CONTENT_CODE_VAL:
- response->http_status_code = AXIS2_HTTP_RESPONSE_RESET_CONTENT_CODE_VAL;
- break;
- case AXIS2_HTTP_RESPONSE_NOT_MODIFIED_CODE_VAL:
- response->http_status_code = AXIS2_HTTP_RESPONSE_NOT_MODIFIED_CODE_VAL;
- break;
- default:
response->http_status_code = AXIS2_HTTP_RESPONSE_NO_CONTENT_CODE_VAL;
- break;
}
+ status = AXIS2_SUCCESS;
}
- else
+ else if (axis2_msg_ctx_get_status_code(out_msg_ctx, env))
{
- response->http_status_code = AXIS2_HTTP_RESPONSE_NO_CONTENT_CODE_VAL;
+ int status_code = axis2_msg_ctx_get_status_code(out_msg_ctx, env);
+ response->http_status_code =
+ axis2_http_transport_utils_check_status_code(status_code);
+ status = AXIS2_SUCCESS;
}
- status = AXIS2_SUCCESS;
- }
- else if (axis2_msg_ctx_get_status_code(out_msg_ctx, env))
- {
- int status_code = axis2_msg_ctx_get_status_code(out_msg_ctx, env);
- response->http_status_code =
- axis2_http_transport_utils_check_status_code(status_code);
- status = AXIS2_SUCCESS;
}
}
+ if (status == AXIS2_FAILURE)
+ {
+ response->http_status_code = AXIS2_HTTP_RESPONSE_ACK_CODE_VAL;
+ response->http_status_code_name = AXIS2_HTTP_RESPONSE_ACK_CODE_NAME;
+ status = AXIS2_SUCCESS;
+ }
}
- if (status == AXIS2_FAILURE)
+ else
{
+ status = AXIS2_SUCCESS;
response->http_status_code = AXIS2_HTTP_RESPONSE_ACK_CODE_VAL;
response->http_status_code_name = AXIS2_HTTP_RESPONSE_ACK_CODE_NAME;
- status = AXIS2_SUCCESS;
}
}
- else
- {
- status = AXIS2_SUCCESS;
- response->http_status_code = AXIS2_HTTP_RESPONSE_ACK_CODE_VAL;
- response->http_status_code_name = AXIS2_HTTP_RESPONSE_ACK_CODE_NAME;
- }
-}
-axutil_string_free(soap_action, env);
-msg_ctx = NULL;
+ axutil_string_free(soap_action, env);
+ msg_ctx = NULL;
-return status;
+ return status;
}
/* This method takes an array_list as the input. It has items some
@@ -3224,7 +3226,7 @@
if(status == AXIS2_SUCCESS)
{
/* send the end of chunk */
- axutil_http_chunked_stream_write_last_chunk(chunked_stream, env);
+ status = axutil_http_chunked_stream_write_last_chunk(chunked_stream, env);
}
return status;
@@ -3244,13 +3246,17 @@
{
int written = 0;
int count = (int)fread(buffer, 1, buffer_size, fp);
- if(ferror(fp) || (count <= 0))
+ if(ferror(fp) || (count < 0))
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"Error in reading file containing the attachment");
return AXIS2_FAILURE;
}
+ /* count == 0 is a valid case. If the file size is multiple of buffer_size, then last read
+ * will have count == 0
+ */
+
/*Writing the part we loaded to memory to the wire*/
while(written < count)
{
@@ -3282,7 +3288,7 @@
{
axiom_mime_part_t *mime_part = NULL;
mime_part = (axiom_mime_part_t *)
- axutil_array_list_get(mime_parts, env, i);
+ axutil_array_list_get(mime_parts, env, i);
if (mime_part)
{
axiom_mime_part_free(mime_part, env);