From f9e2657a9aa3d9c50f316f2c2c8e2b275431eb0c Mon Sep 17 00:00:00 2001 From: Steven Dake Date: Wed, 13 Jul 2005 20:09:11 +0000 Subject: [PATCH] defect 709 if synchronize async called, but no callback set, error not returned git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@747 fd59a12c-fef9-0310-b244-a6a79926bd2f --- lib/ckpt.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/ckpt.c b/lib/ckpt.c index 454900ff..58420829 100644 --- a/lib/ckpt.c +++ b/lib/ckpt.c @@ -1634,6 +1634,7 @@ saCkptCheckpointSynchronizeAsync ( SaInvocationT invocation) { SaAisErrorT error; + struct ckptInstance *ckptInstance; struct ckptCheckpointInstance *ckptCheckpointInstance; struct req_lib_ckpt_checkpointsynchronizeasync req_lib_ckpt_checkpointsynchronizeasync; struct res_lib_ckpt_checkpointsynchronizeasync res_lib_ckpt_checkpointsynchronizeasync; @@ -1649,6 +1650,20 @@ saCkptCheckpointSynchronizeAsync ( goto error_put; } + error = saHandleInstanceGet (&ckptHandleDatabase, ckptCheckpointInstance->ckptHandle, + (void *)&ckptInstance); + if (error != SA_AIS_OK) { + goto error_put; + } + + if (ckptInstance->callbacks.saCkptCheckpointSynchronizeCallback == NULL) { + saHandleInstancePut (&ckptHandleDatabase, ckptCheckpointInstance->ckptHandle); + error = SA_AIS_ERR_INIT; + goto error_put; + } + + saHandleInstancePut (&ckptHandleDatabase, ckptCheckpointInstance->ckptHandle); + req_lib_ckpt_checkpointsynchronizeasync.header.size = sizeof (struct req_lib_ckpt_checkpointsynchronizeasync); req_lib_ckpt_checkpointsynchronizeasync.header.id = MESSAGE_REQ_CKPT_CHECKPOINT_CHECKPOINTSYNCHRONIZEASYNC; memcpy (&req_lib_ckpt_checkpointsynchronizeasync.checkpointName,