if (fsa_cluster_conn->llc_ops->set_cstatus_callback( fsa_cluster_conn, NULL, NULL)!=HA_OK){ crm_err("Cannot unset client status callback\n"); crm_err("REASON: %s\n", fsa_cluster_conn->llc_ops->errmsg(fsa_cluster_conn)); result = I_ERROR; }
do_dc_release(long long action,	      enum crmd_fsa_cause cause,	      enum crmd_fsa_state cur_state,	      enum crmd_fsa_input current_input,	      fsa_data_t *msg_data){	enum crmd_fsa_input result = I_NULL;		crm_trace("################## Releasing the DC ##################");	stopTimer(dc_heartbeat);	if (fsa_cluster_conn->llc_ops->set_cstatus_callback(		    fsa_cluster_conn, NULL, NULL)!=HA_OK){		crm_err("Cannot unset client status callback\n");		crm_err("REASON: %s\n",		       fsa_cluster_conn->llc_ops->errmsg(fsa_cluster_conn));		result = I_ERROR;	}	if(action & A_DC_RELEASE) {		clear_bit_inplace(fsa_input_register, R_THE_DC);				/* get a new CIB from the new DC */		clear_bit_inplace(fsa_input_register, R_HAVE_CIB);	} else if (action & A_DC_RELEASED) {		if(cur_state == S_STOPPING) {			result = I_SHUTDOWN; /* necessary? */			result = I_RELEASE_SUCCESS;		}#if 0		else if( are there errors ) {			/* we cant stay up if not healthy */			/* or perhaps I_ERROR and go to S_RECOVER? */			result = I_SHUTDOWN;		}#endif		else			result = I_RELEASE_SUCCESS;	} else {		crm_err("Warning, do_dc_release invoked for action %s",		       fsa_action2string(action));	}	crm_verbose("Am I still the DC? %s", AM_I_DC?XML_BOOLEAN_YES:XML_BOOLEAN_NO);	return result;}