Hi,
attached are proposed solution to *dispatch* functions, which returns
CS_ERR_BAD_HANDLE (AIS_ERR_BAD_HANDLE (9)).

David, can you please test them, and give results?

Anyway, this patches helps to SAF test, to pass CLM, EVT 100% and helps
checkpoint to get one more point, so from my point of view, it's good to
merge that, even if that doesn't help David.

Regards,
  Honza
diff --git a/trunk/lib/amf.c b/trunk/lib/amf.c
index 898f675..e7e8ffb 100644
--- a/trunk/lib/amf.c
+++ b/trunk/lib/amf.c
@@ -204,6 +204,10 @@ saAmfDispatch (
 			amfInstance->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/ckpt.c b/trunk/lib/ckpt.c
index c7ebabe..57e0051 100644
--- a/trunk/lib/ckpt.c
+++ b/trunk/lib/ckpt.c
@@ -334,6 +334,10 @@ saCkptDispatch (
 			ckptInstance->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/clm.c b/trunk/lib/clm.c
index b1382f2..00294c4 100644
--- a/trunk/lib/clm.c
+++ b/trunk/lib/clm.c
@@ -290,6 +290,10 @@ saClmDispatch (
 			clmInstance->ipc_handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/evt.c b/trunk/lib/evt.c
index 1b8d037..18ac814 100644
--- a/trunk/lib/evt.c
+++ b/trunk/lib/evt.c
@@ -598,6 +598,10 @@ saEvtDispatch(
 			evti->ipc_handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/lck.c b/trunk/lib/lck.c
index cd80014..3488c7d 100644
--- a/trunk/lib/lck.c
+++ b/trunk/lib/lck.c
@@ -332,6 +332,10 @@ saLckDispatch (
 			lckInstance->ipc_handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/msg.c b/trunk/lib/msg.c
index 1c20119..689ffbc 100644
--- a/trunk/lib/msg.c
+++ b/trunk/lib/msg.c
@@ -254,6 +257,9 @@ saMsgDispatch (
 			msgInstance->ipc_handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			return (CS_OK);
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/tmr.c b/trunk/lib/tmr.c
index 9b7d1f6..ad10215 100644
--- a/trunk/lib/tmr.c
+++ b/trunk/lib/tmr.c
@@ -211,6 +211,10 @@ saTmrDispatch (
 			tmrInstance->ipc_handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/cfg.c b/trunk/lib/cfg.c
index 4cd0c92..4b8e9b0 100644
--- a/trunk/lib/cfg.c
+++ b/trunk/lib/cfg.c
@@ -175,6 +175,10 @@ corosync_cfg_dispatch (
 			cfg_instance->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/confdb.c b/trunk/lib/confdb.c
index f35469f..8f0c2ec 100644
--- a/trunk/lib/confdb.c
+++ b/trunk/lib/confdb.c
@@ -307,6 +307,10 @@ cs_error_t confdb_dispatch (
 			confdb_inst->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/cpg.c b/trunk/lib/cpg.c
index 05a81b0..ef3f648 100644
--- a/trunk/lib/cpg.c
+++ b/trunk/lib/cpg.c
@@ -241,6 +241,10 @@ cs_error_t cpg_dispatch (
 			cpg_inst->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/evs.c b/trunk/lib/evs.c
index 4c8d321..4713e40 100644
--- a/trunk/lib/evs.c
+++ b/trunk/lib/evs.c
@@ -210,6 +210,10 @@ evs_error_t evs_dispatch (
 			evs_inst->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/quorum.c b/trunk/lib/quorum.c
index 8f6028b..3e0c6a3 100644
--- a/trunk/lib/quorum.c
+++ b/trunk/lib/quorum.c
@@ -358,6 +358,10 @@ cs_error_t quorum_dispatch (
 			quorum_inst->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
diff --git a/trunk/lib/votequorum.c b/trunk/lib/votequorum.c
index f76395a..38fc85d 100644
--- a/trunk/lib/votequorum.c
+++ b/trunk/lib/votequorum.c
@@ -712,6 +712,10 @@ cs_error_t votequorum_dispatch (
 			votequorum_inst->handle,
 			(void **)&dispatch_data,
 			timeout);
+		if (error == CS_ERR_BAD_HANDLE) {
+			error = CS_OK;
+			goto error_put;
+		}
 		if (error != CS_OK) {
 			goto error_put;
 		}
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais

Reply via email to