[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12568414#action_12568414 ] Bill Mitchell commented on AXIS2C-791: -- Senaka, following your suggestion, I restored the AXIS2_ERROR_SET calls in svn rev 627226. > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > Fix For: 1.3.0 > > Attachments: diff.txt > > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12566477#action_12566477 ] Senaka Fernando commented on AXIS2C-791: Hi once again, I saw your modifications. That's something really nice to be doing. Actually, why bother to use the param check. But, one word of caution. You also got to do this, Bill. AXIS2_ERROR_SET_STATUS_CODE(error, AXIS2_FAILURE); So that we know for sure the error has been neatly set. Anyway, my latest modification will not be requiring this change. Regards, Senaka > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > Fix For: 1.3.0 > > Attachments: diff.txt > > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12566464#action_12566464 ] Senaka Fernando commented on AXIS2C-791: Hi again Bill, I do have a second thought in this regard, to which I'm presently looking into. That is to leave alone the way in which the param checks are implemented and manually set the status to failure when you are sure that it has failed. This stratergy can be adopted so that your status code will be preserved and the robust operation would not return a SUCCESS. I will do this change for 1.3.0. Regards, Senaka > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > Fix For: 1.3.0 > > Attachments: diff.txt > > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12566456#action_12566456 ] Senaka Fernando commented on AXIS2C-791: I strongly agree with what you say, Bill. I believe that the param checks or what so ever portion of code, should not rectify a FAILURE into a SUCCESS. I think you have discovered a critical bug, and which I believe can be solved in this manner. * Set the status to FAILURE, if it was not a CRITICAL_FAILURE if it fails, or leave it as it is for SUCCESS. * I think that should be the way to go ahead. Also, I believe that the fix no 1, I provided by me is a mere camouflage as you say. I adopted that stratergy as I did not have any alternative. I think we can do a post 1.3.0 fix to alter the behaviour of param checks, and make sure it doesn't cause any havoc on un-obvious assumptions. Thanks, Senaka > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > Fix For: 1.3.0 > > Attachments: diff.txt > > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12566106#action_12566106 ] Senaka Fernando commented on AXIS2C-791: Hi Bill, Thanks for the fix. However, I saw two side effects of your fix. 1. After the error being set, somehow or the other the env->error's status changes, from FAILURE to SUCCESS just before we return NULL, Then the one-way operations return SUCCESS. Therefore, I have reset the error to ensure that the status wont change. 2. There is an error in the logic of axis2_op_client_add_msg_ctx, where we wont check whether the op_client->op_ctx is NULL. This caused some samples to segfault occasionally. I have fixed these two issues. Thanks, Senaka > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > Fix For: 1.3.0 > > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12565776#action_12565776 ] Bill Mitchell commented on AXIS2C-791: -- Okay, Senaka, you may indeed have run across the same problems I did. I intend to pick this issue up again today, now that I've checked-in fixes to the guththila issues I reported. > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12565775#action_12565775 ] Senaka Fernando commented on AXIS2C-791: Hi Bill, I tried to return the status if AXIS2_TRANSPORT_SENDER_INVOKE fails, when I recently fixed the issue with send_robust, but, ran into some issues with samples. May be because of AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE), which I did not pay much attention to. Therefore, please have an eye on that too. However, +1 for the rest of the issues. Hope to see this fixed soon. Regards, Senaka > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Bill Mitchell >Priority: Minor > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12565396#action_12565396 ] Dinesh Premalal commented on AXIS2C-791: Hi Bill, If time permits , please look into this issue. I guess you could resolve this issue. > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Dinesh Premalal >Priority: Minor > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
[jira] Commented: (AXIS2C-791) On in-out message flow that fails with no response, no error code or misleading error code is returned, expected error number 3.
[ https://issues.apache.org/jira/browse/AXIS2C-791?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12546833 ] Bill Mitchell commented on AXIS2C-791: -- On testing again with source through svn revision 599502, I see different but still problematic behavior. When the URL specified does not point to a running/listening server system, my client sees error 82, Input stream is NULL in message context. Stepping through the code, what I observe is: (a) In axis2_http_transport_sender_write_message, after calling AXIS2_HTTP_SENDER_SEND, the error number is a valid 74, AXIS2_ERROR_HTTP_CLIENT_TRANSPORT_ERROR. (b) But later in the code, when it is determined that the message is not output only, the call to axis2_http_transport_utils_create_soap_msg() replaces this error with the less informative error 82. Unless I'm missing something, like there is some path for retrying write operations, it seems to me that the initial send error number should be returned directly, as happens in the out-only path irrespective of whether an error occurs. In particular, I would think that: (1) In http_transport_sender.c, axis2_http_transport_sender_write_message(), if the status is not success on a two-way message exchange, it should return the error it already has without trying to process the non-existent response envelope. (2) In http_transport_sender.c, axis2_http_transport_sender_invoke() should return failure status if axis2_http_transport_sender_write_message fails, instead of ignoring returned status. (3) In engine.c, axis2_engine_send(), should return failure if AXIS2_TRANSPORT_SENDER_INVOKE fails, instead of ignoring the returned status. > On in-out message flow that fails with no response, no error code or > misleading error code is returned, expected error number 3. > -- > > Key: AXIS2C-791 > URL: https://issues.apache.org/jira/browse/AXIS2C-791 > Project: Axis2-C > Issue Type: Bug > Components: core/clientapi >Affects Versions: 1.1.0 > Environment: Windows XP, Visual Studio 2005 >Reporter: Bill Mitchell >Assignee: Dinesh Premalal >Priority: Minor > > If a blocking I/O is requested for an in-out message exchange and no response > is received, axis2_svc_client_send_receive et.al. return a zero response > pointer. But one would expect the errno variable to contain some value > indicating the error. > In op_client.c in axis2_op_client_two_way_send() there is code at the very > end, when there is no response envelope, to ensure that an error code is > returned: > if (AXIS2_ERROR_GET_STATUS_CODE(env->error) != AXIS2_SUCCESS) > { > AXIS2_ERROR_SET(env->error, > > AXIS2_ERROR_BLOCKING_INVOCATION_EXPECTS_RESPONSE, > AXIS2_FAILURE); > if (engine) > { > axis2_engine_free(engine, env); > engine = NULL; > } > axis2_msg_ctx_free(response, env); > return NULL; > } > As you can see, the !=AXIS2_SUCCESS test should be ==AXIS2_SUCCESS, as the > intent is to return error number 3 when no other error has been diagnosed. > Unfortunately, even after this fix, in the nightly build of 11/27/07, there > is a new bug that causes error number 3 to be replaced with an uninformative > error 2, invalid null parameter. In svc_client, when the empty response is > returned, axis2_op_client_add_msg_ctx() is called with an intentional null > value clear the ctx. > In the post 1.1 source, parameter validation has been added to > axis2_op_client_add_msg_ctx() to diagnose this intended result as an error: > AXIS2_EXTERN axis2_status_t AXIS2_CALL > axis2_op_client_add_msg_ctx( > axis2_op_client_t * op_client, > const axutil_env_t * env, > axis2_msg_ctx_t * mc) > { > axis2_msg_ctx_t *out_msg_ctx = NULL, > *in_msg_ctx = NULL; > axis2_msg_ctx_t **msg_ctx_map = NULL; > AXIS2_PARAM_CHECK (env->error, op_client, AXIS2_FAILURE); > AXIS2_PARAM_CHECK (env->error, mc, AXIS2_FAILURE); > The second AXIS2_PARAM_CHECK should be removed. > After making both these changes in the development shapshot, when the client > receives no response, for example if the URL points to a non-running server, > the client correctly receives error 3, Blocking invocation expects response. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTEC