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