NTSTATUS ctdb_watch_us(struct ctdbd_connection *conn);
NTSTATUS ctdb_unwatch(struct ctdbd_connection *conn);
NTSTATUS register_with_ctdbd(struct ctdbd_connection *conn, uint64_t srvid);
+NTSTATUS ctdbd_probe(void);
#endif /* _CTDBD_CONN_H */
return status;
}
+NTSTATUS ctdbd_probe(void)
+{
+ /*
+ * Do a very early check if ctdbd is around to avoid an abort and core
+ * later
+ */
+ struct ctdbd_connection *conn = NULL;
+ NTSTATUS status;
+
+ status = ctdbd_messaging_connection(talloc_tos(), &conn);
+
+ /*
+ * We only care if we can connect.
+ */
+ TALLOC_FREE(conn);
+
+ return status;
+}
+
#else
+NTSTATUS ctdbd_probe(void)
+{
+ return NT_STATUS_OK;
+}
+
NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
uint32_t dst_vnn, uint64_t dst_srvid,
const uint8_t *buf, size_t buflen)
exit(1);
}
+ if (lp_clustering()) {
+ NTSTATUS status;
+
+ status = ctdbd_probe();
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(0, ("clustering=yes but ctdbd connect failed: "
+ "%s\n", nt_errstr(status)));
+ exit(1);
+ }
+ }
+
/* Init the security context and global current_user */
init_sec_ctx();
#include "auth.h"
#include "messages.h"
#include "../lib/util/pidfile.h"
+#include "ctdbd_conn.h"
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_WINBIND
exit(1);
}
+ if (lp_clustering()) {
+ NTSTATUS status;
+
+ status = ctdbd_probe();
+ if (!NT_STATUS_IS_OK(status)) {
+ DEBUG(0, ("clustering=yes but ctdbd connect failed: "
+ "%s\n", nt_errstr(status)));
+ exit(1);
+ }
+ }
+
/* Initialise messaging system */
if (winbind_messaging_context() == NULL) {