The branch, master has been updated
       via  fdcae2872b6 selftest: use SAMBA_DEPRECATED_SUPPRESS=1 for all tests
       via  9d047192a6e s3:tests: use SAMBA_DEPRECATED_SUPPRESS=1 for backbox 
tests
       via  12bc55ff7aa ldb: version 2.4 will be used for Samba 4.15
       via  1ad5df9f744 tdb: version 1.4.4
       via  bc1ee7ca064 talloc: version 2.3.3
       via  17c86a2c5a5 s3:winbind: Get rid of the winbind dc-connect child
       via  9f632405032 s3:winbind: Remove trailing whitespaces in 
winbindd_dual.c
       via  ea5b7309fb1 s3:winbind: Remove trailing whitespaces in winbindd_cm.c
       via  5ecda3bc3fb s3:winbind: Remove trailing whitespaces in winbindd.c
      from  7938d94d12e s4-selftest: add net offlinejoin tests

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit fdcae2872b684dbc834274e688e4a0071a028a58
Author: Stefan Metzmacher <me...@samba.org>
Date:   Fri Jul 9 14:12:39 2021 +0200

    selftest: use SAMBA_DEPRECATED_SUPPRESS=1 for all tests
    
    The deprecation warnings are filling the logs and make it hard to
    find/see real problems.
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>
    
    Autobuild-User(master): Stefan Metzmacher <me...@samba.org>
    Autobuild-Date(master): Wed Jul 14 21:57:11 UTC 2021 on sn-devel-184

commit 9d047192a6e9d96a6142bad902f37af6169e854e
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Jul 14 06:30:03 2021 +0200

    s3:tests: use SAMBA_DEPRECATED_SUPPRESS=1 for backbox tests
    
    These tests should not depend on the number of deprecation warnings
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

commit 12bc55ff7aae653bb3894bc55fe4f1ba86902a2d
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Jul 14 22:50:19 2021 +0200

    ldb: version 2.4 will be used for Samba 4.15
    
    - Improve calculate_popt_array_length()
    - Use C99 initializers for builtin_popt_options[]
    - pyldb: Fix Message.items() for a message containing elements
    - pyldb: Add test for Message.items()
    - tests: Use ldbsearch '--scope instead of '-s'
    - pyldb: fix a typo
    - Change page size of guidindexpackv1.ldb
    - Use a 1MiB lmdb so the test also passes on aarch64 CentOS stream
    - attrib_handler casefold: simplify space dropping
    - fix ldb_comparison_fold off-by-one overrun
    - CVE-2020-27840: pytests: move Dn.validate test to ldb
    - CVE-2020-27840 ldb_dn: avoid head corruption in ldb_dn_explode
    - CVE-2021-20277 ldb/attrib_handlers casefold: stay in bounds
    - CVE-2021-20277 ldb tests: ldb_match tests with extra spaces
    - improve comments for ldb_module_connect_backend()
    - test/ldb_tdb: correct introductory comments
    - ldb.h: remove undefined async_ctx function signatures
    - correct comments in attrib_handers val_to_int64
    - dn tests use cmocka print functions
    - ldb_match: remove redundant check
    - add tests for ldb_wildcard_compare
    - ldb_match: trailing chunk must match end of string
    - pyldb: catch potential overflow error in py_timestring
    - ldb: remove some 'if PY3's in tests
    - Add missing break in switch statement
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

commit 1ad5df9f74426c78ff128d963a785aad707e7ed1
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Jul 14 22:30:19 2021 +0200

    tdb: version 1.4.4
    
    - Fix a memory leak on error
    - python: remove all 'from __future__ import print_function'
    - Fix CID 1471761 String not null terminated
    - Use hex_byte() in parse_hex()
    - Use hex_byte() in read_data()
    - fix studio compiler build
    - Fix some signed/unsigned comparisons
    - also use __has_attribute macro to check for attribute support
    - Fix clang 9 missing-field-initializer warnings
    - pytdb tests: add test for storev()
    - pytdb: add python binding for storev()
    - tdbtorture: Use ARRAY_DEL_ELEMENT()
    - py3: Remove #define PyInt_FromLong PyLong_FromLong
    - py3: Remove #define PyInt_AsLong PyLong_AsLong
    - py3: Remove #define PyInt_Check PyLong_Check
    - tdb: Align integer types
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

commit bc1ee7ca0640f0136e5af7dcc4ca8ed0a5893053
Author: Stefan Metzmacher <me...@samba.org>
Date:   Wed Jul 14 22:28:19 2021 +0200

    talloc: version 2.3.3
    
    - python: Ensure reference counts are properly incremented
    - Bug 9931: change pytalloc source to LGPL
    
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

commit 17c86a2c5a5a5e2b194362e5f36f0f99910222c5
Author: Isaac Boukris <ibouk...@gmail.com>
Date:   Thu Sep 17 11:12:53 2020 +0200

    s3:winbind: Get rid of the winbind dc-connect child
    
    The new code uses PING_DC to tell the child to try to go online.
    
    Pair-Programmed-With: Andreas Schneider <a...@samba.org>
    Pair-Programmed-With: Stefan Metzmacher <me...@samba.org>
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Signed-off-by: Isaac Boukris <ibouk...@samba.org>
    Signed-off-by: Stefan Metzmacher <me...@samba.org>

commit 9f632405032b2c6ebbe6ed205fd301a31c2910d5
Author: Andreas Schneider <a...@samba.org>
Date:   Tue Jul 13 14:39:38 2021 +0200

    s3:winbind: Remove trailing whitespaces in winbindd_dual.c
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit ea5b7309fb1a0f1ed7c1e4de00f98e9adc9f5dbf
Author: Andreas Schneider <a...@samba.org>
Date:   Tue Jul 13 14:37:17 2021 +0200

    s3:winbind: Remove trailing whitespaces in winbindd_cm.c
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

commit 5ecda3bc3fbf899602a7e953d7c424f6435577d5
Author: Andreas Schneider <a...@samba.org>
Date:   Tue Jul 13 14:38:56 2021 +0200

    s3:winbind: Remove trailing whitespaces in winbindd.c
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Stefan Metzmacher <me...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 lib/ldb/wscript                                    |   1 +
 ...oc-util-2.3.0.sigs => pytalloc-util-2.3.3.sigs} |   0
 .../ABI/{talloc-2.1.10.sigs => talloc-2.3.3.sigs}  |   0
 lib/talloc/wscript                                 |   2 +-
 lib/tdb/ABI/{tdb-1.3.17.sigs => tdb-1.4.4.sigs}    |   0
 lib/tdb/wscript                                    |   2 +-
 librpc/idl/messaging.idl                           |   3 +-
 selftest/selftest.pl                               |   2 +
 source3/script/tests/test_aio_outstanding.sh       |   5 +-
 source3/script/tests/test_force_close_share.sh     |   5 +-
 source3/script/tests/test_netfileenum.sh           |   5 +-
 source3/script/tests/test_open_eintr.sh            |   5 +-
 source3/winbindd/winbindd.c                        |  16 +-
 source3/winbindd/winbindd.h                        |   7 +-
 source3/winbindd/winbindd_cm.c                     | 410 +++------------------
 source3/winbindd/winbindd_dual.c                   |  51 +--
 source3/winbindd/winbindd_ndr.c                    |   1 -
 source3/winbindd/winbindd_proto.h                  |   4 +
 source3/winbindd/winbindd_util.c                   | 116 ++++--
 19 files changed, 191 insertions(+), 444 deletions(-)
 copy lib/talloc/ABI/{pytalloc-util-2.3.0.sigs => pytalloc-util-2.3.3.sigs} 
(100%)
 copy lib/talloc/ABI/{talloc-2.1.10.sigs => talloc-2.3.3.sigs} (100%)
 copy lib/tdb/ABI/{tdb-1.3.17.sigs => tdb-1.4.4.sigs} (100%)


Changeset truncated at 500 lines:

diff --git a/lib/ldb/wscript b/lib/ldb/wscript
index 5f98fb4f605..863dfde9339 100644
--- a/lib/ldb/wscript
+++ b/lib/ldb/wscript
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'ldb'
+# For Samba 4.15.x
 VERSION = '2.4.0'
 
 import sys, os
diff --git a/lib/talloc/ABI/pytalloc-util-2.3.0.sigs 
b/lib/talloc/ABI/pytalloc-util-2.3.3.sigs
similarity index 100%
copy from lib/talloc/ABI/pytalloc-util-2.3.0.sigs
copy to lib/talloc/ABI/pytalloc-util-2.3.3.sigs
diff --git a/lib/talloc/ABI/talloc-2.1.10.sigs 
b/lib/talloc/ABI/talloc-2.3.3.sigs
similarity index 100%
copy from lib/talloc/ABI/talloc-2.1.10.sigs
copy to lib/talloc/ABI/talloc-2.3.3.sigs
diff --git a/lib/talloc/wscript b/lib/talloc/wscript
index a767477357f..ed38c78b0e9 100644
--- a/lib/talloc/wscript
+++ b/lib/talloc/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'talloc'
-VERSION = '2.3.2'
+VERSION = '2.3.3'
 
 import os
 import sys
diff --git a/lib/tdb/ABI/tdb-1.3.17.sigs b/lib/tdb/ABI/tdb-1.4.4.sigs
similarity index 100%
copy from lib/tdb/ABI/tdb-1.3.17.sigs
copy to lib/tdb/ABI/tdb-1.4.4.sigs
diff --git a/lib/tdb/wscript b/lib/tdb/wscript
index e56ddd0578a..cee0889bd4a 100644
--- a/lib/tdb/wscript
+++ b/lib/tdb/wscript
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 
 APPNAME = 'tdb'
-VERSION = '1.4.3'
+VERSION = '1.4.4'
 
 import sys, os
 
diff --git a/librpc/idl/messaging.idl b/librpc/idl/messaging.idl
index a2070e27b46..61566919446 100644
--- a/librpc/idl/messaging.idl
+++ b/librpc/idl/messaging.idl
@@ -122,8 +122,7 @@ interface messaging
                MSG_WINBIND_ONLINE              = 0x0403,
                MSG_WINBIND_OFFLINE             = 0x0404,
                MSG_WINBIND_ONLINESTATUS        = 0x0405,
-               MSG_WINBIND_TRY_TO_GO_ONLINE    = 0x0406,
-               MSG_WINBIND_FAILED_TO_GO_ONLINE = 0x0407,
+
                MSG_WINBIND_VALIDATE_CACHE      = 0x0408,
                MSG_WINBIND_DUMP_DOMAIN_LIST    = 0x0409,
                MSG_WINBIND_IP_DROPPED          = 0x040A,
diff --git a/selftest/selftest.pl b/selftest/selftest.pl
index d0c025af6b3..9d4462323f5 100755
--- a/selftest/selftest.pl
+++ b/selftest/selftest.pl
@@ -271,6 +271,8 @@ unless (defined($ENV{VALGRIND})) {
 # make all our python scripts unbuffered
 $ENV{PYTHONUNBUFFERED} = 1;
 
+$ENV{SAMBA_DEPRECATED_SUPPRESS} = 1;
+
 # do not depend on the users setup
 # see also bootstrap/config.py
 $ENV{TZ} = "UTC";
diff --git a/source3/script/tests/test_aio_outstanding.sh 
b/source3/script/tests/test_aio_outstanding.sh
index f4265277a1a..4f68d3bb620 100755
--- a/source3/script/tests/test_aio_outstanding.sh
+++ b/source3/script/tests/test_aio_outstanding.sh
@@ -18,6 +18,10 @@ SMBCLIENT=$2
 SERVER=$3
 SHARE=$4
 
+# Do not let deprecated option warnings muck this up
+SAMBA_DEPRECATED_SUPPRESS=1
+export SAMBA_DEPRECATED_SUPPRESS
+
 incdir=$(dirname $0)/../../../testprogs/blackbox
 . $incdir/subunit.sh
 
@@ -50,7 +54,6 @@ exec 100>smbclient-stdin  101<smbclient-stdout 
102<smbclient-stderr
 
 # consume the smbclient startup messages
 head -n 1 <&101
-head -n 1 <&102
 
 # Ensure we're putting a fresh file.
 echo "del aio_outstanding_testfile" >&100
diff --git a/source3/script/tests/test_force_close_share.sh 
b/source3/script/tests/test_force_close_share.sh
index 46db07edfbe..2d01b3162f1 100755
--- a/source3/script/tests/test_force_close_share.sh
+++ b/source3/script/tests/test_force_close_share.sh
@@ -22,6 +22,10 @@ SHARE=$5
 PREFIX=$6
 shift 6
 
+# Do not let deprecated option warnings muck this up
+SAMBA_DEPRECATED_SUPPRESS=1
+export SAMBA_DEPRECATED_SUPPRESS
+
 incdir=$(dirname $0)/../../../testprogs/blackbox
 . $incdir/subunit.sh
 . $incdir/common_test_fns.inc
@@ -71,7 +75,6 @@ exec 100>$FIFO_STDIN  101<$FIFO_STDOUT 102<$FIFO_STDERR
 
 # consume the smbclient startup messages
 head -n 1 <&101
-head -n 1 <&102
 
 # Ensure we're putting a fresh file.
 echo "lcd $(dirname $TESTFILE)" >&100
diff --git a/source3/script/tests/test_netfileenum.sh 
b/source3/script/tests/test_netfileenum.sh
index e8c464307b8..ab0eb925dbb 100755
--- a/source3/script/tests/test_netfileenum.sh
+++ b/source3/script/tests/test_netfileenum.sh
@@ -16,6 +16,10 @@ NET="$1"; shift 1
 SERVER="$1"; shift 1
 SHARE="$1"; shift 1
 
+# Do not let deprecated option warnings muck this up
+SAMBA_DEPRECATED_SUPPRESS=1
+export SAMBA_DEPRECATED_SUPPRESS
+
 incdir=$(dirname $0)/../../../testprogs/blackbox
 . $incdir/subunit.sh
 
@@ -38,7 +42,6 @@ exec 100>smbclient-stdin 101<smbclient-stdout 
102<smbclient-stderr
 
 # consume the smbclient startup messages
 head -n 1 <&101
-head -n 1 <&102
 
 FILE=x64
 
diff --git a/source3/script/tests/test_open_eintr.sh 
b/source3/script/tests/test_open_eintr.sh
index 3eabb2a4bc7..c7dec2c77da 100755
--- a/source3/script/tests/test_open_eintr.sh
+++ b/source3/script/tests/test_open_eintr.sh
@@ -16,6 +16,10 @@ SMBCONTROL=$1; shift 1
 SERVER=$1; shift 1
 SHARE=$1; shift 1
 
+# Do not let deprecated option warnings muck this up
+SAMBA_DEPRECATED_SUPPRESS=1
+export SAMBA_DEPRECATED_SUPPRESS
+
 error_inject_conf=$(dirname ${SERVERCONFFILE})/error_inject.conf
 > ${error_inject_conf}
 
@@ -41,7 +45,6 @@ exec 100>smbclient-stdin 101<smbclient-stdout 
102<smbclient-stderr
 
 # consume the smbclient startup messages
 head -n 1 <&101
-head -n 1 <&102
 
 echo "error_inject:openat = EINTR" > ${error_inject_conf}
 ${SMBCONTROL} ${CONF} 0 reload-config
diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c
index 406aaaf4ecb..4f367d07ecb 100644
--- a/source3/winbindd/winbindd.c
+++ b/source3/winbindd/winbindd.c
@@ -159,7 +159,7 @@ static void winbindd_status(void)
 
 void winbindd_flush_caches(void)
 {
-       /* We need to invalidate cached user list entries on a SIGHUP 
+       /* We need to invalidate cached user list entries on a SIGHUP
            otherwise cached access denied errors due to restrict anonymous
            hang around until the sequence number changes. */
 
@@ -202,7 +202,7 @@ static void terminate(bool is_parent)
                /* When parent goes away we should
                 * remove the socket file. Not so
                 * when children terminate.
-                */ 
+                */
                char *path = NULL;
 
                if (asprintf(&path, "%s/%s",
@@ -1383,6 +1383,8 @@ static void winbindd_register_handlers(struct 
messaging_context *msg_ctx,
 {
        bool scan_trusts = true;
        NTSTATUS status;
+       struct tevent_timer *te = NULL;
+
        /* Setup signal handlers */
 
        if (!winbindd_setup_sig_term_handler(true))
@@ -1486,6 +1488,16 @@ static void winbindd_register_handlers(struct 
messaging_context *msg_ctx,
                }
        }
 
+       te = tevent_add_timer(global_event_context(),
+                             NULL,
+                             timeval_zero(),
+                             winbindd_ping_offline_domains,
+                             NULL);
+       if (te == NULL) {
+               DBG_ERR("Failed to schedule winbindd_ping_offline_domains()\n");
+               exit(1);
+       }
+
        status = wb_irpc_register();
 
        if (!NT_STATUS_IS_OK(status)) {
diff --git a/source3/winbindd/winbindd.h b/source3/winbindd/winbindd.h
index 0dbd832c209..a6b2238cec1 100644
--- a/source3/winbindd/winbindd.h
+++ b/source3/winbindd/winbindd.h
@@ -158,8 +158,8 @@ struct winbindd_domain {
        void *private_data;
 
        /* A working DC */
-       pid_t dc_probe_pid; /* Child we're using to detect the DC. */
        char *dcname;
+       const char *ping_dcname;
        struct sockaddr_storage dcaddr;
 
        /* Sequence number stuff */
@@ -179,10 +179,7 @@ struct winbindd_domain {
        struct tevent_queue *queue;
        struct dcerpc_binding_handle *binding_handle;
 
-       /* Callback we use to try put us back online. */
-
-       uint32_t check_online_timeout;
-       struct tevent_timer *check_online_event;
+       struct tevent_req *check_online_event;
 
        /* Linked list info */
 
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c
index 9f0fd2b706c..fdb894d7ff6 100644
--- a/source3/winbindd/winbindd_cm.c
+++ b/source3/winbindd/winbindd_cm.c
@@ -1,4 +1,4 @@
-/* 
+/*
    Unix SMB/CIFS implementation.
 
    Winbind daemon connection manager
@@ -87,6 +87,7 @@
 #include "lib/gencache.h"
 #include "lib/util/string_wrappers.h"
 #include "lib/global_contexts.h"
+#include "librpc/gen_ndr/ndr_winbind_c.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_WINBIND
@@ -106,256 +107,6 @@ static bool get_dcs(TALLOC_CTX *mem_ctx, struct 
winbindd_domain *domain,
                    struct dc_name_ip **dcs, int *num_dcs,
                    uint32_t request_flags);
 
-/****************************************************************
- Child failed to find DC's. Reschedule check.
-****************************************************************/
-
-static void msg_failed_to_go_online(struct messaging_context *msg,
-                                   void *private_data,
-                                   uint32_t msg_type,
-                                   struct server_id server_id,
-                                   DATA_BLOB *data)
-{
-       struct winbindd_domain *domain;
-       const char *domainname = (const char *)data->data;
-
-       if (data->data == NULL || data->length == 0) {
-               return;
-       }
-
-       DEBUG(5,("msg_fail_to_go_online: received for domain %s.\n", 
domainname));
-
-       for (domain = domain_list(); domain; domain = domain->next) {
-               if (domain->internal) {
-                       continue;
-               }
-
-               if (strequal(domain->name, domainname)) {
-                       if (domain->online) {
-                               /* We're already online, ignore. */
-                               DEBUG(5,("msg_fail_to_go_online: domain %s "
-                                       "already online.\n", domainname));
-                               continue;
-                       }
-
-                       /* Reschedule the online check. */
-                       set_domain_offline(domain);
-                       break;
-               }
-       }
-}
-
-/****************************************************************
- Actually cause a reconnect from a message.
-****************************************************************/
-
-static void msg_try_to_go_online(struct messaging_context *msg,
-                                void *private_data,
-                                uint32_t msg_type,
-                                struct server_id server_id,
-                                DATA_BLOB *data)
-{
-       struct winbindd_domain *domain;
-       const char *domainname = (const char *)data->data;
-
-       if (data->data == NULL || data->length == 0) {
-               return;
-       }
-
-       DEBUG(5,("msg_try_to_go_online: received for domain %s.\n", 
domainname));
-
-       for (domain = domain_list(); domain; domain = domain->next) {
-               if (domain->internal) {
-                       continue;
-               }
-
-               if (strequal(domain->name, domainname)) {
-
-                       if (domain->online) {
-                               /* We're already online, ignore. */
-                               DEBUG(5,("msg_try_to_go_online: domain %s "
-                                       "already online.\n", domainname));
-                               continue;
-                       }
-
-                       /* This call takes care of setting the online
-                          flag to true if we connected, or re-adding
-                          the offline handler if false. Bypasses online
-                          check so always does network calls. */
-
-                       init_dc_connection_network(domain, true);
-                       break;
-               }
-       }
-}
-
-/****************************************************************
- Fork a child to try and contact a DC. Do this as contacting a
- DC requires blocking lookups and we don't want to block our
- parent.
-****************************************************************/
-
-static bool fork_child_dc_connect(struct winbindd_domain *domain)
-{
-       struct dc_name_ip *dcs = NULL;
-       int num_dcs = 0;
-       TALLOC_CTX *mem_ctx = NULL;
-       pid_t parent_pid = getpid();
-       char *lfile = NULL;
-       NTSTATUS status;
-       bool ok;
-
-       if (domain->dc_probe_pid != (pid_t)-1) {
-               /*
-                * We might already have a DC probe
-                * child working, check.
-                */
-               if (process_exists_by_pid(domain->dc_probe_pid)) {
-                       DEBUG(10,("fork_child_dc_connect: pid %u already "
-                               "checking for DC's.\n",
-                               (unsigned int)domain->dc_probe_pid));
-                       return true;
-               }
-               domain->dc_probe_pid = (pid_t)-1;
-       }
-
-       domain->dc_probe_pid = fork();
-
-       if (domain->dc_probe_pid == (pid_t)-1) {
-               DEBUG(0, ("fork_child_dc_connect: Could not fork: %s\n", 
strerror(errno)));
-               return False;
-       }
-
-       if (domain->dc_probe_pid != (pid_t)0) {
-               /* Parent */
-               messaging_register(global_messaging_context(), NULL,
-                                  MSG_WINBIND_TRY_TO_GO_ONLINE,
-                                  msg_try_to_go_online);
-               messaging_register(global_messaging_context(), NULL,
-                                  MSG_WINBIND_FAILED_TO_GO_ONLINE,
-                                  msg_failed_to_go_online);
-               return True;
-       }
-
-       /* Child. */
-
-       /* Leave messages blocked - we will never process one. */
-
-       if (!override_logfile) {
-               if (asprintf(&lfile, "%s/log.winbindd-dc-connect", 
get_dyn_LOGFILEBASE()) == -1) {
-                       DBG_ERR("fork_child_dc_connect: "
-                               "out of memory in asprintf().\n");
-                       _exit(1);
-               }
-       }
-
-       status = winbindd_reinit_after_fork(NULL, lfile);
-       if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(1, ("winbindd_reinit_after_fork failed: %s\n",
-                         nt_errstr(status)));
-               messaging_send_buf(global_messaging_context(),
-                                  pid_to_procid(parent_pid),
-                                  MSG_WINBIND_FAILED_TO_GO_ONLINE,
-                                  (const uint8_t *)domain->name,
-                                  strlen(domain->name)+1);
-               _exit(1);
-       }
-       SAFE_FREE(lfile);
-
-       setproctitle("dc-connect child");
-
-       mem_ctx = talloc_init("fork_child_dc_connect");
-       if (!mem_ctx) {
-               DEBUG(0,("talloc_init failed.\n"));
-               messaging_send_buf(global_messaging_context(),
-                                  pid_to_procid(parent_pid),
-                                  MSG_WINBIND_FAILED_TO_GO_ONLINE,
-                                  (const uint8_t *)domain->name,
-                                  strlen(domain->name)+1);
-               _exit(1);
-       }
-
-       ok = get_dcs(mem_ctx, domain, &dcs, &num_dcs, 0);
-       TALLOC_FREE(mem_ctx);
-       if (!ok || (num_dcs == 0)) {
-               /* Still offline ? Can't find DC's. */
-               messaging_send_buf(global_messaging_context(),
-                                  pid_to_procid(parent_pid),
-                                  MSG_WINBIND_FAILED_TO_GO_ONLINE,
-                                  (const uint8_t *)domain->name,
-                                  strlen(domain->name)+1);
-               _exit(0);
-       }
-
-       /* We got a DC. Send a message to our parent to get it to
-          try and do the same. */
-
-       messaging_send_buf(global_messaging_context(),
-                          pid_to_procid(parent_pid),
-                          MSG_WINBIND_TRY_TO_GO_ONLINE,
-                          (const uint8_t *)domain->name,
-                          strlen(domain->name)+1);
-       _exit(0);
-}
-
-/****************************************************************
- Handler triggered if we're offline to try and detect a DC.
-****************************************************************/
-
-static void check_domain_online_handler(struct tevent_context *ctx,
-                                       struct tevent_timer *te,
-                                       struct timeval now,
-                                       void *private_data)
-{
-        struct winbindd_domain *domain =
-                (struct winbindd_domain *)private_data;
-
-       DEBUG(10,("check_domain_online_handler: called for domain "
-                 "%s (online = %s)\n", domain->name, 
-                 domain->online ? "True" : "False" ));
-
-       TALLOC_FREE(domain->check_online_event);
-
-       /* Are we still in "startup" mode ? */
-
-       if (domain->startup && (time_mono(NULL) > domain->startup_time + 30)) {
-               /* No longer in "startup" mode. */
-               DEBUG(10,("check_domain_online_handler: domain %s no longer in 
'startup' mode.\n",
-                       domain->name ));
-               domain->startup = False;
-       }
-
-       /* We've been told to stay offline, so stay
-          that way. */
-
-       if (get_global_winbindd_state_offline()) {
-               DEBUG(10,("check_domain_online_handler: domain %s remaining 
globally offline\n",
-                       domain->name ));
-               return;
-       }
-
-       /* Fork a child to test if it can contact a DC. 
-          If it can then send ourselves a message to
-          cause a reconnect. */
-
-       fork_child_dc_connect(domain);
-}
-


-- 
Samba Shared Repository

Reply via email to