diff options
author | Andrew Bartlett <abartlet@samba.org> | 2002-01-11 04:50:45 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2002-01-11 04:50:45 +0000 |
commit | 4acb3125cd42728e2bb3f971bfb9373decc1d0fb (patch) | |
tree | 99b7c375da60664cbf0b79b4866c5efce3557f3d /source3/libads | |
parent | 9ee8213f9a6fbcfc5a52cde36bb2b3bb146f8239 (diff) | |
download | samba-4acb3125cd42728e2bb3f971bfb9373decc1d0fb.tar.gz samba-4acb3125cd42728e2bb3f971bfb9373decc1d0fb.tar.xz samba-4acb3125cd42728e2bb3f971bfb9373decc1d0fb.zip |
Fix up 'net ads join' to delete and rejoin if the account already exists.
This fixes up a problem where a machine would join (or downgrade by trust
password change) to NT4 membership and not be able to regain full ADS
membership until a 'net ads leave'.
Andrew Bartlett
(This used to be commit ab8ff85f03b25a0dfe4ab63886a10da81207393c)
Diffstat (limited to 'source3/libads')
-rw-r--r-- | source3/libads/ldap.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index c616f09b6e..2e93e11603 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -321,8 +321,13 @@ ADS_STATUS ads_join_realm(ADS_STRUCT *ads, const char *hostname, const char *org status = ads_find_machine_acct(ads, (void **)&res, host); if (ADS_ERR_OK(status) && ads_count_replies(ads, res) == 1) { - DEBUG(0, ("Host account for %s already exists\n", host)); - return ADS_SUCCESS; + DEBUG(0, ("Host account for %s already exists - deleting for readd\n", host)); + status = ads_leave_realm(ads, host); + if (!ADS_ERR_OK(status)) { + DEBUG(0, ("Failed to delete host '%s' from the '%s' realm.\n", + host, ads->realm)); + return status; + } } status = ads_add_machine_acct(ads, host, org_unit); |