Pat Donlin
2014-04-21 16:23:43 UTC
A regression was introduced into lanplus.c in the 14-rc1 build. This
change to ipmi_lanplus_open_session() added a check for null response
(timeout) and returns a 1 to the caller. This steps on a change I added
a few lines down to return a 2 to the caller on timeout, signifying a
retryable error. The result of this is an occasional assertion:
ipmitool: lanplus.c:2211: ipmi_lanplus_send_payload: Assertion `session->v2_data.session_state == LANPLUS_STATE_OPEN_SESSION_RECEIEVED' failed.
Aborted (core dumped)
Here is a patch to 1.8.14-rc2 to put things back to correct:
diff -Naur lanplus.c.orig lanplus.c
--- lanplus.c.orig 2014-04-21 10:43:54.670532051 -0500
+++ lanplus.c 2014-04-21 11:11:16.280884840 -0500
@@ -2882,17 +2882,12 @@
free(msg);
msg = NULL;
- if (!rsp) {
- lprintf(LOG_WARNING, "Error sending open session message.");
- return -1;
- }
- if (verbose)
- lanplus_dump_open_session_response(rsp);
-
if (rsp == NULL ) {
lprintf(LOG_DEBUG, "Timeout in open session response message.");
return 2;
}
+ if (verbose)
+ lanplus_dump_open_session_response(rsp);
if (rsp->payload.open_session_response.rakp_return_code !=
IPMI_RAKP_STATUS_NO_ERRORS)
{
change to ipmi_lanplus_open_session() added a check for null response
(timeout) and returns a 1 to the caller. This steps on a change I added
a few lines down to return a 2 to the caller on timeout, signifying a
retryable error. The result of this is an occasional assertion:
ipmitool: lanplus.c:2211: ipmi_lanplus_send_payload: Assertion `session->v2_data.session_state == LANPLUS_STATE_OPEN_SESSION_RECEIEVED' failed.
Aborted (core dumped)
Here is a patch to 1.8.14-rc2 to put things back to correct:
diff -Naur lanplus.c.orig lanplus.c
--- lanplus.c.orig 2014-04-21 10:43:54.670532051 -0500
+++ lanplus.c 2014-04-21 11:11:16.280884840 -0500
@@ -2882,17 +2882,12 @@
free(msg);
msg = NULL;
- if (!rsp) {
- lprintf(LOG_WARNING, "Error sending open session message.");
- return -1;
- }
- if (verbose)
- lanplus_dump_open_session_response(rsp);
-
if (rsp == NULL ) {
lprintf(LOG_DEBUG, "Timeout in open session response message.");
return 2;
}
+ if (verbose)
+ lanplus_dump_open_session_response(rsp);
if (rsp->payload.open_session_response.rakp_return_code !=
IPMI_RAKP_STATUS_NO_ERRORS)
{