The branch, v3-3-test has been updated via 2870fe50af5163e30330f5a3ef21d0b7eea85ee5 (commit) via b3d47f099286778252c6df6bf2c1fee0c4e26560 (commit) from 1ce726b951621cb4b34069c31d1318fc04ad2389 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test - Log ----------------------------------------------------------------- commit 2870fe50af5163e30330f5a3ef21d0b7eea85ee5 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu Jun 5 19:00:05 2008 +0200 libnetjoin: add libnet_join_rollback(). This is required now if the join verify failed and we already modified the local configuration. Guenther commit b3d47f099286778252c6df6bf2c1fee0c4e26560 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Thu Jun 5 18:58:27 2008 +0200 libnetjoin: First store configuration and then verify the join. Jerry, this fixes the issues while joining with "config backend = registry". Guenther ----------------------------------------------------------------------- Summary of changes: source/libnet/libnet_join.c | 46 ++++++++++++++++++++++++++++++++++++++---- 1 files changed, 41 insertions(+), 5 deletions(-) Changeset truncated at 500 lines: diff --git a/source/libnet/libnet_join.c b/source/libnet/libnet_join.c index 3b2bce9..3678ff9 100644 --- a/source/libnet/libnet_join.c +++ b/source/libnet/libnet_join.c @@ -1333,6 +1333,8 @@ static WERROR do_JoinConfig(struct libnet_JoinCtx *r) return werr; } + lp_load(get_dyn_CONFIGFILE(),true,false,false,true); + r->out.modified_config = true; r->out.result = werr; @@ -1359,6 +1361,8 @@ static WERROR libnet_unjoin_config(struct libnet_UnjoinCtx *r) return werr; } + lp_load(get_dyn_CONFIGFILE(),true,false,false,true); + r->out.modified_config = true; r->out.result = werr; @@ -1729,6 +1733,35 @@ static WERROR libnet_DomainJoin(TALLOC_CTX *mem_ctx, /**************************************************************** ****************************************************************/ +WERROR libnet_join_rollback(TALLOC_CTX *mem_ctx, + struct libnet_JoinCtx *r) +{ + WERROR werr; + struct libnet_UnjoinCtx *u = NULL; + + werr = libnet_init_UnjoinCtx(mem_ctx, &u); + if (!W_ERROR_IS_OK(werr)) { + return werr; + } + + u->in.debug = r->in.debug; + u->in.dc_name = r->in.dc_name; + u->in.domain_name = r->in.domain_name; + u->in.admin_account = r->in.admin_account; + u->in.admin_password = r->in.admin_password; + u->in.modify_config = r->in.modify_config; + u->in.unjoin_flags = WKSSVC_JOIN_FLAGS_JOIN_TYPE | + WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE; + + werr = libnet_Unjoin(mem_ctx, u); + TALLOC_FREE(u); + + return werr; +} + +/**************************************************************** +****************************************************************/ + WERROR libnet_Join(TALLOC_CTX *mem_ctx, struct libnet_JoinCtx *r) { @@ -1748,17 +1781,20 @@ WERROR libnet_Join(TALLOC_CTX *mem_ctx, if (!W_ERROR_IS_OK(werr)) { goto done; } - - werr = libnet_join_post_verify(mem_ctx, r); - if (!W_ERROR_IS_OK(werr)) { - goto done; - } } werr = libnet_join_post_processing(mem_ctx, r); if (!W_ERROR_IS_OK(werr)) { goto done; } + + if (r->in.join_flags & WKSSVC_JOIN_FLAGS_JOIN_TYPE) { + werr = libnet_join_post_verify(mem_ctx, r); + if (!W_ERROR_IS_OK(werr)) { + libnet_join_rollback(mem_ctx, r); + } + } + done: r->out.result = werr; -- Samba Shared Repository