You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by da...@apache.org on 2008/08/01 17:57:23 UTC
svn commit: r681731 - in
/webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008:
samples/rm_ping_1_0/ src/msgprocessors/ src/util/
Author: damitha
Date: Fri Aug 1 08:57:23 2008
New Revision: 681731
URL: http://svn.apache.org/viewvc?rev=681731&view=rev
Log:
Fixing memory leaks. Now all samples in server and client are having only few memory leaks.
No leaks from envelopes and contexts.
Modified:
webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/samples/rm_ping_1_0/rm_ping_1_0.c
webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/app_msg_processor.c
webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/create_seq_msg_processor.c
webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/terminate_seq_msg_processor.c
webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/util/terminate_mgr.c
Modified: webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/samples/rm_ping_1_0/rm_ping_1_0.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/samples/rm_ping_1_0/rm_ping_1_0.c?rev=681731&r1=681730&r2=681731&view=diff
==============================================================================
--- webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/samples/rm_ping_1_0/rm_ping_1_0.c (original)
+++ webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/samples/rm_ping_1_0/rm_ping_1_0.c Fri Aug 1 08:57:23 2008
@@ -83,7 +83,10 @@
options = axis2_options_create(env);
axis2_options_set_xml_parser_reset(options, env, AXIS2_FALSE);
if(endpoint_ref)
+ {
axis2_options_set_to(options, env, endpoint_ref);
+ }
+
/*axis2_options_set_action(options, env, "urn:wsrm:Ping");*/
/* Set up deploy folder. It is from the deploy folder, the configuration is
@@ -96,15 +99,17 @@
*/
client_home = AXIS2_GETENV("AXIS2C_HOME");
if (!client_home)
+ {
client_home = "../../deploy";
+ }
+
/* Create service client */
svc_client = axis2_svc_client_create(env, client_home);
if (!svc_client)
{
printf("Error creating service client\n");
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code:"
- " %d :: %s", env->error->error_number,
- AXIS2_ERROR_GET_MESSAGE(env->error));
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "Stub invoke FAILED: Error code: %d :: %s",
+ env->error->error_number, AXIS2_ERROR_GET_MESSAGE(env->error));
}
/* Set service client options */
@@ -113,45 +118,47 @@
/* Engage addressing module */
axis2_svc_client_engage_module(svc_client, env, AXIS2_MODULE_ADDRESSING);
- /* Build the SOAP request message payload using OM API.*/
axis2_svc_client_engage_module(svc_client, env, "sandesha2");
+
/* RM Version 1.0 */
- property = axutil_property_create_with_args(env, 0, 0, 0,
- SANDESHA2_SPEC_VERSION_1_0);
+ property = axutil_property_create_with_args(env, 0, 0, 0, SANDESHA2_SPEC_VERSION_1_0);
if(property)
{
- axis2_options_set_property(options, env,
- SANDESHA2_CLIENT_RM_SPEC_VERSION, property);
+ axis2_options_set_property(options, env, SANDESHA2_CLIENT_RM_SPEC_VERSION, property);
}
seq_key = axutil_uuid_gen(env);
property = axutil_property_create_with_args(env, 0, 0, 0, seq_key);
if(property)
{
- axis2_options_set_property(options, env, SANDESHA2_CLIENT_SEQ_KEY,
- property);
+ axis2_options_set_property(options, env, SANDESHA2_CLIENT_SEQ_KEY, property);
}
/* Send request */
payload = build_om_programatically(env, "ping1", seq_key);
status = axis2_svc_client_send_robust(svc_client, env, payload);
if(status)
+ {
printf("\nping client invoke SUCCESSFUL!\n");
+ }
payload = NULL;
payload = build_om_programatically(env, "ping2", seq_key);
status = axis2_svc_client_send_robust(svc_client, env, payload);
if(status)
+ {
printf("\nping client invoke SUCCESSFUL!\n");
+ }
payload = NULL;
property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE);
- axis2_options_set_property(options, env, "Sandesha2LastMessage",
- property);
+ axis2_options_set_property(options, env, "Sandesha2LastMessage", property);
payload = build_om_programatically(env, "ping3", seq_key);
status = axis2_svc_client_send_robust(svc_client, env, payload);
if(status)
+ {
printf("\nping client invoke SUCCESSFUL!\n");
+ }
/** Wait till callback is complete. Simply keep the parent thread running
until our on_complete or on_error is invoked */
@@ -160,12 +167,20 @@
*messages. */
AXIS2_SLEEP(SANDESHA2_SLEEP);
+ AXIS2_FREE(env->allocator, seq_key);
if (svc_client)
{
axis2_svc_client_free(svc_client, env);
svc_client = NULL;
}
+
+ if (env)
+ {
+ axutil_env_free((axutil_env_t *) env);
+ env = NULL;
+ }
+
return 0;
}
Modified: webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/app_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/app_msg_processor.c?rev=681731&r1=681730&r2=681731&view=diff
==============================================================================
--- webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/app_msg_processor.c (original)
+++ webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/app_msg_processor.c Fri Aug 1 08:57:23 2008
@@ -239,7 +239,7 @@
const axutil_env_t *env,
sandesha2_msg_ctx_t *rm_msg_ctx)
{
- axis2_msg_ctx_t *msg_ctx = NULL;
+ axis2_msg_ctx_t *app_msg_ctx = NULL;
axis2_char_t *processed = NULL;
axis2_op_ctx_t *op_ctx = NULL;
axis2_conf_ctx_t *conf_ctx = NULL;
@@ -274,8 +274,8 @@
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[sandesha2]Entry:sandesha2_app_msg_processor_process_in_msg");
- msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
- if(!msg_ctx)
+ app_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
+ if(!app_msg_ctx)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
"[sandesha2]Message context is not set");
@@ -298,10 +298,10 @@
return AXIS2_SUCCESS;
}
- op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
+ op_ctx = axis2_msg_ctx_get_op_ctx(app_msg_ctx, env);
/*axis2_op_ctx_set_in_use(op_ctx, env, AXIS2_TRUE);*/
axis2_op_ctx_set_response_written(op_ctx, env, AXIS2_TRUE);
- conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
+ conf_ctx = axis2_msg_ctx_get_conf_ctx(app_msg_ctx, env);
dbname = sandesha2_util_get_dbname(env, conf_ctx);
storage_mgr = sandesha2_utils_get_storage_mgr(env, dbname);
fault_ctx = sandesha2_fault_mgr_check_for_last_msg_num_exceeded(env, rm_msg_ctx, seq_prop_mgr);
@@ -340,7 +340,7 @@
{
axis2_engine_free(engine, env);
}
- axis2_msg_ctx_set_paused(msg_ctx, env, AXIS2_TRUE);
+ axis2_msg_ctx_set_paused(app_msg_ctx, env, AXIS2_TRUE);
if(storage_mgr)
{
sandesha2_storage_mgr_free(storage_mgr, env);
@@ -415,7 +415,7 @@
{
axis2_engine_free(engine, env);
}
- axis2_msg_ctx_set_paused(msg_ctx, env, AXIS2_TRUE);
+ axis2_msg_ctx_set_paused(app_msg_ctx, env, AXIS2_TRUE);
return AXIS2_SUCCESS;
}
@@ -467,7 +467,7 @@
axis2_engine_free(engine, env);
}
- axis2_msg_ctx_set_paused(msg_ctx, env, AXIS2_TRUE);
+ axis2_msg_ctx_set_paused(app_msg_ctx, env, AXIS2_TRUE);
return AXIS2_SUCCESS;
}
@@ -532,7 +532,7 @@
axis2_char_t *client_seq_key = NULL;
highest_in_msg_no = msg_no;
- msg_id = axis2_msg_ctx_get_msg_id(msg_ctx, env);
+ msg_id = axis2_msg_ctx_get_msg_id(app_msg_ctx, env);
highest_msg_no_bean = sandesha2_seq_property_bean_create_with_data(env,
rmd_sequence_id, SANDESHA2_SEQ_PROP_HIGHEST_IN_MSG_NUMBER,
msg_num_str);
@@ -544,11 +544,11 @@
(axis2_char_t *)msg_id);
sandesha2_storage_mgr_remove_msg_ctx(storage_mgr, env,
highest_in_msg_key_str, conf_ctx, -1);
- sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, highest_in_msg_key_str, msg_ctx,
+ sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, highest_in_msg_key_str, app_msg_ctx,
AXIS2_TRUE);
- /*response_envelope = axis2_msg_ctx_get_soap_envelope(msg_ctx, env);*/
- property = axis2_msg_ctx_get_property(msg_ctx, env, SANDESHA2_CLIENT_SEQ_KEY);
+ /*response_envelope = axis2_msg_ctx_get_soap_envelope(app_msg_ctx, env);*/
+ property = axis2_msg_ctx_get_property(app_msg_ctx, env, SANDESHA2_CLIENT_SEQ_KEY);
if(property)
{
client_seq_key = axutil_property_get_value(property, env);
@@ -672,10 +672,10 @@
in_order_invoke = sandesha2_property_bean_is_in_order(sandesha2_utils_get_property_bean(env,
axis2_conf_ctx_get_conf(conf_ctx, env)), env);
/* test code */
- if(axis2_msg_ctx_get_server_side(msg_ctx, env))
+ if(axis2_msg_ctx_get_server_side(app_msg_ctx, env))
{
sandesha2_last_msg_t *last_msg = sandesha2_seq_get_last_msg(seq, env);
- axis2_char_t *msg_id = (axis2_char_t *)axis2_msg_ctx_get_msg_id(msg_ctx, env);
+ axis2_char_t *msg_id = (axis2_char_t *)axis2_msg_ctx_get_msg_id(app_msg_ctx, env);
if(last_msg)
{
sandesha2_seq_property_bean_t *seq_prop_bean = NULL;
@@ -692,9 +692,9 @@
* the sender wanted to signal the last message, but didn't have an application
* message to send) then we do not need to send the message on to the application.
*/
- str_soap_action = axis2_msg_ctx_get_soap_action(msg_ctx, env);
+ str_soap_action = axis2_msg_ctx_get_soap_action(app_msg_ctx, env);
soap_action = axutil_string_get_buffer(str_soap_action, env);
- wsa_action = axis2_msg_ctx_get_wsa_action(msg_ctx, env);
+ wsa_action = axis2_msg_ctx_get_wsa_action(app_msg_ctx, env);
if(!axutil_strcmp(SANDESHA2_SPEC_2005_02_ACTION_LAST_MESSAGE, wsa_action) || 0 == axutil_strcmp(
SANDESHA2_SPEC_2005_02_SOAP_ACTION_LAST_MESSAGE, soap_action))
{
@@ -724,7 +724,7 @@
return AXIS2_SUCCESS;
}
- if(axis2_msg_ctx_get_server_side(msg_ctx, env) && in_order_invoke)
+ if(axis2_msg_ctx_get_server_side(app_msg_ctx, env) && in_order_invoke)
{
sandesha2_seq_property_bean_t *incoming_seq_list_bean = NULL;
axutil_array_list_t *incoming_seq_list = NULL;
@@ -800,7 +800,7 @@
}
/* save the message */
str_key = axutil_uuid_gen(env);
- sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, str_key, msg_ctx, AXIS2_TRUE);
+ sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, str_key, app_msg_ctx, AXIS2_TRUE);
invoker_bean = sandesha2_invoker_bean_create_with_data(env, str_key,
msg_no, rmd_sequence_id, AXIS2_FALSE);
if(str_key)
@@ -1586,7 +1586,11 @@
if(!axis2_msg_ctx_get_soap_action(msg_ctx, env))
{
axutil_string_t *soap_action = axutil_string_create(env, to_addr);
- axis2_msg_ctx_set_soap_action(msg_ctx, env, soap_action);
+ if(soap_action)
+ {
+ axis2_msg_ctx_set_soap_action(msg_ctx, env, soap_action);
+ axutil_string_free(soap_action, env);
+ }
}
if(!dummy_msg)
@@ -3017,6 +3021,8 @@
axis2_engine_t *engine = NULL;
axis2_status_t status = AXIS2_FAILURE;
axutil_property_t *property = NULL;
+ axis2_op_ctx_t *op_ctx = NULL;
+ const axis2_char_t *mep = NULL;
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[sandesha2] Entry:sandesha2_app_msg_processor_process_app_msg_response");
@@ -3086,13 +3092,27 @@
axis2_engine_free(engine, env);
}
- /* Note that as explained above this message context is not added to the operation context,
- * therefore will not be freed when operation context's msg_ctx_map is freed. So we need to
- * free the response message here. Note that we copied this response soap envelope from the
- * outgoing message context from application client. This response envelope will be freed
- * at operation client. So to avoid double freeing we increment its ref.
- */
- axiom_soap_envelope_increment_ref(response_envelope, env);
+ op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
+ if(op_ctx)
+ {
+ axis2_op_t *op = NULL;
+
+ op = axis2_op_ctx_get_op(op_ctx, env);
+ mep = axis2_op_get_msg_exchange_pattern(op, env);
+ }
+
+ if(!axutil_strcmp(mep, AXIS2_MEP_URI_OUT_IN))
+ {
+ /* Note that as explained above this message context is not added to the operation context,
+ * therefore will not be freed when operation context's msg_ctx_map is freed. So we need to
+ * free the response message here. Note that we copied this response soap envelope from the
+ * outgoing message context from application client. This response envelope will be freed
+ * at operation client. So to avoid double freeing we increment its ref.
+ */
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Increment the soap envelope ref counter");
+ axiom_soap_envelope_increment_ref(response_envelope, env);
+ }
+
axis2_msg_ctx_free(response_msg_ctx, env);
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
Modified: webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/create_seq_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/create_seq_msg_processor.c?rev=681731&r1=681730&r2=681731&view=diff
==============================================================================
--- webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/create_seq_msg_processor.c (original)
+++ webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/create_seq_msg_processor.c Fri Aug 1 08:57:23 2008
@@ -154,7 +154,7 @@
const axutil_env_t *env,
sandesha2_msg_ctx_t *rm_msg_ctx)
{
- axis2_msg_ctx_t *msg_ctx = NULL;
+ axis2_msg_ctx_t *create_seq_msg_ctx = NULL;
sandesha2_create_seq_t *create_seq_part = NULL;
axis2_conf_ctx_t *conf_ctx = NULL;
sandesha2_msg_ctx_t *fault_rm_msg_ctx = NULL;
@@ -176,13 +176,19 @@
axis2_op_ctx_t *op_ctx = NULL;
axis2_char_t *dbname = NULL;
sandesha2_create_seq_mgr_t *create_seq_mgr = NULL;
+ axis2_msg_ctx_t **msg_ctx_map = NULL;
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[sandesha2] Start:sandesha2_create_seq_msg_processor_process_in_msg");
AXIS2_PARAM_CHECK(env->error, rm_msg_ctx, AXIS2_FAILURE);
- msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
+ create_seq_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
+
+ op_ctx = axis2_msg_ctx_get_op_ctx(create_seq_msg_ctx, env);
+ msg_ctx_map = axis2_op_ctx_get_msg_ctx_map(op_ctx, env);
+ msg_ctx_map[AXIS2_WSDL_MESSAGE_LABEL_IN] = create_seq_msg_ctx;
+
create_seq_part = sandesha2_msg_ctx_get_create_seq(rm_msg_ctx, env);
if(!create_seq_part)
{
@@ -191,13 +197,13 @@
return AXIS2_FAILURE;
}
- conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
+ conf_ctx = axis2_msg_ctx_get_conf_ctx(create_seq_msg_ctx, env);
dbname = sandesha2_util_get_dbname(env, conf_ctx);
seq_prop_mgr = sandesha2_permanent_seq_property_mgr_create(env, dbname);
create_seq_mgr = sandesha2_permanent_create_seq_mgr_create(env, dbname);
next_msg_mgr = sandesha2_permanent_next_msg_mgr_create(env, dbname);
- fault_rm_msg_ctx = sandesha2_fault_mgr_check_for_create_seq_refused(env, msg_ctx, seq_prop_mgr);
+ fault_rm_msg_ctx = sandesha2_fault_mgr_check_for_create_seq_refused(env, create_seq_msg_ctx, seq_prop_mgr);
if(fault_rm_msg_ctx)
{
axis2_engine_t *engine = NULL;
@@ -217,7 +223,7 @@
engine = NULL;
}
- axis2_msg_ctx_set_paused(msg_ctx, env, AXIS2_TRUE);
+ axis2_msg_ctx_set_paused(create_seq_msg_ctx, env, AXIS2_TRUE);
if(seq_prop_mgr)
{
@@ -235,7 +241,7 @@
return AXIS2_SUCCESS;
}
- out_msg_ctx = sandesha2_utils_create_out_msg_ctx(env, msg_ctx);
+ out_msg_ctx = sandesha2_utils_create_out_msg_ctx(env, create_seq_msg_ctx);
rmd_sequence_id = sandesha2_seq_mgr_setup_new_rmd_sequence(env, rm_msg_ctx,
seq_prop_mgr, next_msg_mgr);
@@ -393,7 +399,6 @@
sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, acks_to_bean);
- op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
axis2_op_ctx_set_response_written(op_ctx, env, AXIS2_TRUE);
sandesha2_seq_mgr_update_last_activated_time(env, rmd_sequence_id, seq_prop_mgr);
@@ -407,6 +412,12 @@
axis2_engine_free(engine, env);
}
+ if(out_msg_ctx)
+ {
+ axis2_core_utils_reset_out_msg_ctx(env, out_msg_ctx);
+ axis2_msg_ctx_free(out_msg_ctx, env);
+ }
+
to_bean = sandesha2_seq_property_mgr_retrieve(seq_prop_mgr, env, rmd_sequence_id,
SANDESHA2_SEQ_PROP_TO_EPR);
if(!to_bean)
@@ -438,7 +449,6 @@
AXIS2_FREE(env->allocator, addr_ns_uri);
}
- op_ctx = axis2_msg_ctx_get_op_ctx(msg_ctx, env);
if(sandesha2_utils_is_anon_uri(env, to_addr))
{
axis2_op_ctx_set_response_written(op_ctx, env, AXIS2_TRUE);
Modified: webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/terminate_seq_msg_processor.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/terminate_seq_msg_processor.c?rev=681731&r1=681730&r2=681731&view=diff
==============================================================================
--- webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/terminate_seq_msg_processor.c (original)
+++ webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/msgprocessors/terminate_seq_msg_processor.c Fri Aug 1 08:57:23 2008
@@ -166,7 +166,7 @@
const axutil_env_t *env,
sandesha2_msg_ctx_t *rm_msg_ctx)
{
- axis2_msg_ctx_t *msg_ctx = NULL;
+ axis2_msg_ctx_t *terminate_msg_ctx = NULL;
sandesha2_terminate_seq_t *term_seq = NULL;
axis2_char_t *rmd_sequence_id = NULL;
axis2_conf_ctx_t *conf_ctx = NULL;
@@ -179,6 +179,7 @@
axis2_char_t *spec_version = NULL;
axis2_char_t *dbname = NULL;
sandesha2_seq_ack_t *seq_ack = NULL;
+ axis2_op_ctx_t *op_ctx = NULL;
/*sandesha2_seq_property_bean_t *term_rcvd_bean = NULL;*/
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
@@ -186,7 +187,16 @@
AXIS2_PARAM_CHECK(env->error, rm_msg_ctx, AXIS2_FAILURE);
- msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
+ terminate_msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
+
+ if(axis2_msg_ctx_get_server_side(terminate_msg_ctx, env))
+ {
+ axis2_msg_ctx_t **msg_ctx_map = NULL;
+
+ op_ctx = axis2_msg_ctx_get_op_ctx(terminate_msg_ctx, env);
+ msg_ctx_map = axis2_op_ctx_get_msg_ctx_map(op_ctx, env);
+ msg_ctx_map[AXIS2_WSDL_MESSAGE_LABEL_IN] = terminate_msg_ctx;
+ }
term_seq = sandesha2_msg_ctx_get_terminate_seq(rm_msg_ctx, env);
if(!term_seq)
@@ -196,6 +206,7 @@
AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_REQD_MSG_PART_MISSING, AXIS2_FAILURE);
return AXIS2_FAILURE;
}
+
rmd_sequence_id = sandesha2_identifier_get_identifier(sandesha2_terminate_seq_get_identifier(
term_seq, env), env);
if(!rmd_sequence_id || 0 == axutil_strlen(rmd_sequence_id))
@@ -204,7 +215,7 @@
return AXIS2_FAILURE;
}
- conf_ctx = axis2_msg_ctx_get_conf_ctx(msg_ctx, env);
+ conf_ctx = axis2_msg_ctx_get_conf_ctx(terminate_msg_ctx, env);
dbname = sandesha2_util_get_dbname(env, conf_ctx);
storage_mgr = sandesha2_utils_get_storage_mgr(env, dbname);
seq_prop_mgr = sandesha2_permanent_seq_property_mgr_create(env, dbname);
@@ -219,7 +230,9 @@
axis2_engine_t *engine = NULL;
engine = axis2_engine_create(env, conf_ctx);
+
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2] Send fault occurred");
+
axis2_engine_send_fault(engine, env, sandesha2_msg_ctx_get_msg_ctx(fault_ctx, env));
sandesha2_msg_ctx_free(fault_ctx, env);
if(engine)
@@ -227,7 +240,7 @@
axis2_engine_free(engine, env);
}
- axis2_msg_ctx_set_paused(msg_ctx, env, AXIS2_TRUE);
+ axis2_msg_ctx_set_paused(terminate_msg_ctx, env, AXIS2_TRUE);
if(seq_prop_mgr)
{
@@ -314,7 +327,9 @@
if(completed)
{
AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
- "[sandesha2]Sequence %s is completed. So adding terminate msg", rms_sequence_id);
+ "[sandesha2]Sequence %s is completed. So adding terminate msg",
+ rms_sequence_id);
+
sandesha2_terminate_mgr_send_terminate_seq_msg(env, rm_msg_ctx, rms_sequence_id,
internal_sequence_id, storage_mgr, seq_prop_mgr, create_seq_mgr, sender_mgr);
}
@@ -338,17 +353,33 @@
sandesha2_msg_ctx_set_paused(rm_msg_ctx, env, AXIS2_TRUE);
if(seq_prop_mgr)
+ {
sandesha2_seq_property_mgr_free(seq_prop_mgr, env);
+ }
+
if(create_seq_mgr)
+ {
sandesha2_create_seq_mgr_free(create_seq_mgr, env);
+ }
+
if(sender_mgr)
+ {
sandesha2_sender_mgr_free(sender_mgr, env);
+ }
+
if(next_msg_mgr)
+ {
sandesha2_next_msg_mgr_free(next_msg_mgr, env);
+ }
+
if(storage_mgr)
+ {
sandesha2_storage_mgr_free(storage_mgr, env);
+ }
+
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
"[sandesha2]Exit:sandesha2_terminate_seq_msg_processor_process_in_msg");
+
return AXIS2_SUCCESS;
}
@@ -529,36 +560,36 @@
msg_ctx = sandesha2_msg_ctx_get_msg_ctx(rm_msg_ctx, env);
out_msg_ctx = sandesha2_utils_create_out_msg_ctx(env, msg_ctx);
- out_rm_msg = sandesha2_msg_creator_create_terminate_seq_res_msg(env,
- rm_msg_ctx, out_msg_ctx, seq_prop_mgr);
+ out_rm_msg = sandesha2_msg_creator_create_terminate_seq_res_msg(env, rm_msg_ctx, out_msg_ctx,
+ seq_prop_mgr);
if(!out_rm_msg)
+ {
return AXIS2_FAILURE;
- ack_rm_msg = sandesha2_ack_mgr_generate_ack_msg(env, rm_msg_ctx, seq_id,
- seq_prop_mgr);
+ }
+
+ ack_rm_msg = sandesha2_ack_mgr_generate_ack_msg(env, rm_msg_ctx, seq_id, seq_prop_mgr);
if(ack_rm_msg)
{
seq_ack = sandesha2_msg_ctx_get_seq_ack(ack_rm_msg, env);
sandesha2_msg_ctx_set_seq_ack(out_rm_msg, env, seq_ack);
}
+
sandesha2_msg_ctx_add_soap_envelope(out_rm_msg, env);
sandesha2_msg_ctx_set_flow(out_rm_msg, env, AXIS2_OUT_FLOW);
- property = axutil_property_create_with_args(env, 0, 0, 0,
- AXIS2_VALUE_TRUE);
- axis2_msg_ctx_set_property(out_msg_ctx, env,
- SANDESHA2_APPLICATION_PROCESSING_DONE, property);
+ property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE);
+ axis2_msg_ctx_set_property(out_msg_ctx, env, SANDESHA2_APPLICATION_PROCESSING_DONE, property);
+
/* test code */
/*
to_epr = axis2_msg_ctx_get_to(out_msg_ctx, env);
if(to_epr && !sandesha2_utils_is_anon_uri(env,
axis2_endpoint_ref_get_address(to_epr, env)))
{
- axis2_msg_ctx_t *tsr_msg_ctx = axis2_core_utils_create_out_msg_ctx(
- env, msg_ctx);
+ axis2_msg_ctx_t *tsr_msg_ctx = axis2_core_utils_create_out_msg_ctx(env, msg_ctx);
orig_trans_out = axis2_msg_ctx_get_transport_out_desc(tsr_msg_ctx, env);
property = axutil_property_create_with_args(env, 0, 0, 0, orig_trans_out);
- axis2_msg_ctx_set_property(tsr_msg_ctx, env,
- SANDESHA2_ORIGINAL_TRANSPORT_OUT_DESC, property);
+ axis2_msg_ctx_set_property(tsr_msg_ctx, env, SANDESHA2_ORIGINAL_TRANSPORT_OUT_DESC, property);
trans_out = sandesha2_utils_get_transport_out(env);
axis2_msg_ctx_set_transport_out_desc(tsr_msg_ctx, env, trans_out);
@@ -566,23 +597,19 @@
term_res_bean = sandesha2_sender_bean_create(env);
sandesha2_sender_bean_set_msg_ctx_ref_key(term_res_bean, env, key);
property = axutil_property_create_with_args(env, 0, 0, 0, key);
- axis2_msg_ctx_set_property(tsr_msg_ctx, env, SANDESHA2_MESSAGE_STORE_KEY,
- property);
+ axis2_msg_ctx_set_property(tsr_msg_ctx, env, SANDESHA2_MESSAGE_STORE_KEY, property);
sandesha2_storage_mgr_store_msg_ctx(storage_mgr, env, key, tsr_msg_ctx);
*/
/* TODO: refine the terminate delay */
/*
- sandesha2_sender_bean_set_time_to_send(term_res_bean, env,
- sandesha2_utils_get_current_time_in_millis(env) +
- SANDESHA2_TERMINATE_DELAY);
+ sandesha2_sender_bean_set_time_to_send(term_res_bean, env,
+ sandesha2_utils_get_current_time_in_millis(env) + SANDESHA2_TERMINATE_DELAY);
sandesha2_sender_bean_set_msg_id(term_res_bean, env,
(axis2_char_t *) axis2_msg_ctx_get_msg_id(tsr_msg_ctx, env));
sandesha2_sender_bean_set_send(term_res_bean, env, AXIS2_TRUE);
- property = axutil_property_create_with_args(env, 0, 0, 0,
- AXIS2_VALUE_TRUE);
- axis2_msg_ctx_set_property(msg_ctx, env, SANDESHA2_QUALIFIED_FOR_SENDING,
- property);
+ property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE);
+ axis2_msg_ctx_set_property(msg_ctx, env, SANDESHA2_QUALIFIED_FOR_SENDING, property);
sandesha2_sender_bean_set_resend(term_res_bean, env, AXIS2_FALSE);
retrans_mgr = sandesha2_storage_mgr_get_retrans_mgr(storage_mgr, env);
sandesha2_sender_mgr_insert(retrans_mgr, env, term_res_bean);
@@ -609,12 +636,20 @@
{
axis2_op_ctx_set_response_written(op_ctx, env, AXIS2_TRUE);
}
+
if(engine)
+ {
axis2_engine_free(engine, env);
+ }
+
if(out_rm_msg)
+ {
sandesha2_msg_ctx_free(out_rm_msg, env);
- AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI, "[sandesha2]Exit:sandesha2_"\
- "terminate_seq_msg_processor_add_terminate_seq_res");
+ }
+
+ AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
+ "[sandesha2] Exit:sandesha2_terminate_seq_msg_processor_add_terminate_seq_res");
+
return AXIS2_SUCCESS;
}
@@ -668,37 +703,51 @@
axis2_msg_ctx_get_to(msg_ctx, env), env);
property = axis2_msg_ctx_get_property(msg_ctx, env, SANDESHA2_CLIENT_SEQ_KEY);
if(property)
+ {
seq_key = axutil_property_get_value(property, env);
+ }
+
int_seq_id = sandesha2_utils_get_client_internal_sequence_id(env, to_address, seq_key);
out_seq_id = sandesha2_utils_get_seq_property(env, int_seq_id,
SANDESHA2_SEQUENCE_PROPERTY_RMS_SEQ_ID, seq_prop_mgr);
if(!out_seq_id)
{
- AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI, "[sandesha2]seq_id was not"
- " found. Cannot send the terminate message");
- AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_CANNOT_FIND_SEQ_ID,
- AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "[sandesha2]seq_id was not found. Cannot send the terminate message");
+ AXIS2_ERROR_SET(env->error, SANDESHA2_ERROR_CANNOT_FIND_SEQ_ID, AXIS2_FAILURE);
if(seq_prop_mgr)
+ {
sandesha2_seq_property_mgr_free(seq_prop_mgr, env);
+ }
if(create_seq_mgr)
+ {
sandesha2_create_seq_mgr_free(create_seq_mgr, env);
+ }
if(sender_mgr)
+ {
sandesha2_sender_mgr_free(sender_mgr, env);
+ }
if(storage_mgr)
+ {
sandesha2_storage_mgr_free(storage_mgr, env);
+ }
+
return AXIS2_FAILURE;
}
- terminated = sandesha2_utils_get_seq_property(env, int_seq_id,
- SANDESHA2_SEQ_PROP_TERMINATE_ADDED, seq_prop_mgr);
+
+ terminated = sandesha2_utils_get_seq_property(env, int_seq_id,
+ SANDESHA2_SEQ_PROP_TERMINATE_ADDED, seq_prop_mgr);
old_op = axis2_msg_ctx_get_op(msg_ctx, env);
qname = axutil_qname_create(env, "temp", NULL, NULL);
out_in_op = axis2_op_create_with_qname(env, qname);
if(qname)
+ {
axutil_qname_free(qname, env);
+ }
+
axis2_op_set_msg_exchange_pattern(out_in_op, env, AXIS2_MEP_URI_OUT_IN);
- axis2_op_set_in_flow(out_in_op, env,
- axis2_op_get_in_flow(old_op, env));
+ axis2_op_set_in_flow(out_in_op, env, axis2_op_get_in_flow(old_op, env));
/*axutil_allocator_switch_to_global_pool(env->allocator);
op_ctx = axis2_op_ctx_create(env, out_in_op, NULL);
@@ -709,56 +758,93 @@
if(terminated && 0 == axutil_strcmp(terminated, AXIS2_VALUE_TRUE))
{
- AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI,
- "[sandesha2]Terminate was added previously");
+ AXIS2_LOG_DEBUG(env->log, AXIS2_LOG_SI, "[sandesha2] Terminate was added previously");
if(terminated)
+ {
AXIS2_FREE(env->allocator, terminated);
+ }
+
if(out_seq_id)
+ {
AXIS2_FREE(env->allocator, out_seq_id);
+ }
+
if(seq_prop_mgr)
+ {
sandesha2_seq_property_mgr_free(seq_prop_mgr, env);
+ }
+
if(create_seq_mgr)
+ {
sandesha2_create_seq_mgr_free(create_seq_mgr, env);
+ }
+
if(sender_mgr)
+ {
sandesha2_sender_mgr_free(sender_mgr, env);
+ }
+
if(storage_mgr)
+ {
sandesha2_storage_mgr_free(storage_mgr, env);
+ }
+
return AXIS2_SUCCESS;
}
+
if(terminated)
+ {
AXIS2_FREE(env->allocator, terminated);
+ }
+
term_seq_part = sandesha2_msg_ctx_get_terminate_seq(rm_msg_ctx, env);
sandesha2_identifier_set_identifier(sandesha2_terminate_seq_get_identifier(
term_seq_part, env), env, out_seq_id);
sandesha2_msg_ctx_set_flow(rm_msg_ctx, env, AXIS2_OUT_FLOW);
property = axutil_property_create_with_args(env, 0, 0, 0, AXIS2_VALUE_TRUE);
- axis2_msg_ctx_set_property(msg_ctx, env, SANDESHA2_APPLICATION_PROCESSING_DONE,
- property);
+ axis2_msg_ctx_set_property(msg_ctx, env, SANDESHA2_APPLICATION_PROCESSING_DONE, property);
axis2_msg_ctx_set_to(msg_ctx, env, axis2_endpoint_ref_create(env, to_address));
rm_version = sandesha2_utils_get_rm_version(env, int_seq_id, seq_prop_mgr);
if(!rm_version)
{
AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
- "[sandesha2]Cant find the rm_version of the given message");
+ "[sandesha2] Cant find the rm_version of the given message");
+
if(out_seq_id)
+ {
AXIS2_FREE(env->allocator, out_seq_id);
+ }
+
if(seq_prop_mgr)
+ {
sandesha2_seq_property_mgr_free(seq_prop_mgr, env);
+ }
+
if(create_seq_mgr)
+ {
sandesha2_create_seq_mgr_free(create_seq_mgr, env);
+ }
+
if(sender_mgr)
+ {
sandesha2_sender_mgr_free(sender_mgr, env);
+ }
+
if(storage_mgr)
+ {
sandesha2_storage_mgr_free(storage_mgr, env);
+ }
+
return AXIS2_FAILURE;
}
axis2_msg_ctx_set_wsa_action(msg_ctx, env,
- sandesha2_spec_specific_consts_get_terminate_seq_action(
- env, rm_version));
- temp_action = sandesha2_spec_specific_consts_get_terminate_seq_soap_action
- (env, rm_version);
+ sandesha2_spec_specific_consts_get_terminate_seq_action(env, rm_version));
+ temp_action = sandesha2_spec_specific_consts_get_terminate_seq_soap_action(env, rm_version);
if(rm_version)
+ {
AXIS2_FREE(env->allocator, rm_version);
+ }
+
soap_action = axutil_string_create(env, temp_action);
axis2_msg_ctx_set_soap_action(msg_ctx, env, soap_action);
transport_to = sandesha2_utils_get_seq_property(env, int_seq_id,
@@ -794,26 +880,41 @@
sandesha2_sender_mgr_insert(retrans_mgr, env, term_bean);*/
term_added = sandesha2_seq_property_bean_create(env);
- sandesha2_seq_property_bean_set_name(term_added, env,
- SANDESHA2_SEQ_PROP_TERMINATE_ADDED);
+ sandesha2_seq_property_bean_set_name(term_added, env, SANDESHA2_SEQ_PROP_TERMINATE_ADDED);
sandesha2_seq_property_bean_set_seq_id(term_added, env, out_seq_id);
if(out_seq_id)
+ {
AXIS2_FREE(env->allocator, out_seq_id);
+ }
+
sandesha2_seq_property_bean_set_value(term_added, env, AXIS2_VALUE_TRUE);
sandesha2_seq_property_mgr_insert(seq_prop_mgr, env, term_added);
sandesha2_terminate_mgr_terminate_sending_side(env, conf_ctx, int_seq_id,
axis2_msg_ctx_get_server_side(msg_ctx, env), storage_mgr, seq_prop_mgr,
create_seq_mgr, sender_mgr);
if(seq_prop_mgr)
+ {
sandesha2_seq_property_mgr_free(seq_prop_mgr, env);
+ }
+
if(create_seq_mgr)
+ {
sandesha2_create_seq_mgr_free(create_seq_mgr, env);
+ }
+
if(sender_mgr)
+ {
sandesha2_sender_mgr_free(sender_mgr, env);
+ }
+
if(storage_mgr)
+ {
sandesha2_storage_mgr_free(storage_mgr, env);
+ }
+
AXIS2_LOG_TRACE(env->log, AXIS2_LOG_SI,
- "[sandesha2]Exit:sandesha2_terminate_msg_processor_process_out_msg");
+ "[sandesha2] Exit:sandesha2_terminate_msg_processor_process_out_msg");
+
return AXIS2_SUCCESS;
}
Modified: webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/util/terminate_mgr.c
URL: http://svn.apache.org/viewvc/webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/util/terminate_mgr.c?rev=681731&r1=681730&r2=681731&view=diff
==============================================================================
--- webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/util/terminate_mgr.c (original)
+++ webservices/sandesha/tags/sandesha2/c/worker_thread_removed-23may2008/src/util/terminate_mgr.c Fri Aug 1 08:57:23 2008
@@ -1213,7 +1213,7 @@
axis2_msg_ctx_set_soap_envelope(response_msg_ctx, env, response_envelope);
- axis2_msg_ctx_set_server_side(response_msg_ctx, env, AXIS2_TRUE);
+ /*axis2_msg_ctx_set_server_side(response_msg_ctx, env, AXIS2_TRUE);*/
axis2_msg_ctx_set_op_ctx(response_msg_ctx, env, axis2_msg_ctx_get_op_ctx(msg_ctx, env));
axis2_msg_ctx_set_svc_ctx(response_msg_ctx, env, axis2_msg_ctx_get_svc_ctx(msg_ctx, env));
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org