Details
-
Bug
-
Status: Resolved
-
Minor
-
Resolution: Fixed
-
1.1.0
-
None
-
Windows XP, Visual Studio 2005
Description
If the client repository is incomplete, in particular, if the client has the axis2_http_sender.dll and axis2_http_receiver.dll in the binary directory with the application instead of in the repo/lib directory, the service cannot be created with a very uninformative Axis errorno 2, AXIS2_ERROR_INVALID_NULL_PARAM.
The initial error is diagnosed well by axutil_class_loader_create_dll() who posts errorno 100, AXIS2_ERROR_DLL_CREATE_FAILED. But the code in axis2_conf_builder_process_transport_senders() in conf_builder.c ignores the error indicated by the null pointer return and proceeds to call axis2_transport_out_desc_set_sender() with the null pointer, yielding the very uninformative NULL_PARAM error.
In axis2_conf_builder_process_transport_senders(), the code fragment:
transport_sender =
axutil_class_loader_create_dll(env, impl_info_param);
axis2_transport_out_desc_add_param(transport_out, env,
impl_info_param);
status =
axis2_transport_out_desc_set_sender(transport_out, env,
transport_sender);
should read:
transport_sender =
axutil_class_loader_create_dll(env, impl_info_param);
axis2_transport_out_desc_add_param(transport_out, env,
impl_info_param);
if (!transport_sender)
status =
axis2_transport_out_desc_set_sender(transport_out, env,
transport_sender);
When I introduced this change, the service create fails with the useful errorno 100 pointing the administrator to the DLL problem.
Of course, when the axis2_http_sender.dll and axis2_http_receiver.dll are placed correctly in the repo/lib directory, the error disappears.