s3:smbcontrol: Use cmdline_messaging_context
authorChristof Schmitt <cs@samba.org>
Tue, 21 Aug 2018 19:35:11 +0000 (12:35 -0700)
committerAndreas Schneider <asn@cryptomilk.org>
Fri, 7 Sep 2018 15:26:16 +0000 (17:26 +0200)
Initialize the messaging context through cmdline_messaging_context to
allow access to config in clustered Samba.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13465

Signed-off-by: Christof Schmitt <cs@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/utils/smbcontrol.c
source3/utils/wscript_build

index 6e612e9dd8fa68d5337839d3224fa8100ed9a734..d768849b766b1365a46d7ff2c29bd91f456bbf11 100644 (file)
@@ -35,6 +35,7 @@
 #include "util_tdb.h"
 #include "../lib/util/pidfile.h"
 #include "serverid.h"
+#include "cmdline_contexts.h"
 
 #if HAVE_LIBUNWIND_H
 #include <libunwind.h>
@@ -1609,21 +1610,23 @@ int main(int argc, const char **argv)
        if (argc <= 1)
                usage(pc);
 
+       msg_ctx = cmdline_messaging_context(get_dyn_CONFIGFILE());
+       if (msg_ctx == NULL) {
+               fprintf(stderr,
+                       "Could not init messaging context, not root?\n");
+               TALLOC_FREE(frame);
+               exit(1);
+       }
+
+       evt_ctx = server_event_context();
+
        lp_load_global(get_dyn_CONFIGFILE());
 
        /* Need to invert sense of return code -- samba
          * routines mostly return True==1 for success, but
          * shell needs 0. */ 
 
-       if (!(evt_ctx = samba_tevent_context_init(NULL)) ||
-           !(msg_ctx = messaging_init(NULL, evt_ctx))) {
-               fprintf(stderr, "could not init messaging context\n");
-               TALLOC_FREE(frame);
-               exit(1);
-       }
-
        ret = !do_command(evt_ctx, msg_ctx, argc, argv);
-       TALLOC_FREE(msg_ctx);
        TALLOC_FREE(frame);
        return ret;
 }
index 11bd2015c3a37082410e259f687c2a2069fdc501..6793c6d5c8a4e52f6cbefd4b14b7264b95898fe1 100644 (file)
@@ -18,6 +18,7 @@ bld.SAMBA3_BINARY('smbcontrol',
                  talloc
                  smbconf
                  popt_samba3
+                 cmdline_contexts
                  PRINTBASE''')
 
 bld.SAMBA3_BINARY('smbtree',