The branch, master has been updated
       via  d1ded27 s3: Wrap creating the svcctl keys in a transaction
       via  a5495e7 s3: Make reg_backend_db.h includable by itself (cherry 
picked from commit 6ba31d3bd29dd11b1b98859f4d8a65d9be7dac60)
      from  5cd6d93 s3: Fix Coverity ID 2472, UNINIT

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


- Log -----------------------------------------------------------------
commit d1ded271b6e8f8ff7f09c4830411e389d26b1b10
Author: Volker Lendecke <v...@samba.org>
Date:   Sat Apr 9 18:15:12 2011 +0200

    s3: Wrap creating the svcctl keys in a transaction
    
    This makes the startup of smbd in make test much quicker and thus more 
reliable
    (cherry picked from commit f1aa38b414e97d8687d0bebf65baa384f75301b4)
    
    Autobuild-User: Volker Lendecke <vlen...@samba.org>
    Autobuild-Date: Mon Apr 11 22:09:58 CEST 2011 on sn-devel-104

commit a5495e70cc5f7659ab94d8570195edf3bd41072b
Author: Volker Lendecke <v...@samba.org>
Date:   Sat Apr 9 18:13:59 2011 +0200

    s3: Make reg_backend_db.h includable by itself
    (cherry picked from commit 6ba31d3bd29dd11b1b98859f4d8a65d9be7dac60)

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

Summary of changes:
 source3/registry/reg_backend_db.h          |    1 +
 source3/rpc_server/svcctl/srv_svcctl_reg.c |   28 ++++++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/registry/reg_backend_db.h 
b/source3/registry/reg_backend_db.h
index fbdcfb4..9d5ff90 100644
--- a/source3/registry/reg_backend_db.h
+++ b/source3/registry/reg_backend_db.h
@@ -21,6 +21,7 @@
 #ifndef _REG_BACKEND_DB_H
 #define _REG_BACKEND_DB_H
 
+#include "registry.h"
 
 WERROR init_registry_key(const char *add_path);
 WERROR init_registry_data(void);
diff --git a/source3/rpc_server/svcctl/srv_svcctl_reg.c 
b/source3/rpc_server/svcctl/srv_svcctl_reg.c
index d262ff8..eb0c2bd 100644
--- a/source3/rpc_server/svcctl/srv_svcctl_reg.c
+++ b/source3/rpc_server/svcctl/srv_svcctl_reg.c
@@ -30,6 +30,7 @@
 #include "rpc_client/cli_winreg.h"
 #include "rpc_server/svcctl/srv_svcctl_reg.h"
 #include "auth.h"
+#include "registry/reg_backend_db.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_REGISTRY
@@ -575,6 +576,19 @@ bool svcctl_init_winreg(struct messaging_context *msg_ctx)
                goto done;
        }
 
+       result = regdb_open();
+       if (!W_ERROR_IS_OK(result)) {
+               DEBUG(10, ("regdb_open failed: %s\n",
+                          win_errstr(result)));
+               goto done;
+       }
+       result = regdb_transaction_start();
+       if (!W_ERROR_IS_OK(result)) {
+               DEBUG(10, ("regdb_transaction_start failed: %s\n",
+                          win_errstr(result)));
+               goto done;
+       }
+
        status = dcerpc_winreg_int_hklm_openkey(tmp_ctx,
                                                get_session_info_system(),
                                                msg_ctx,
@@ -674,6 +688,20 @@ done:
                dcerpc_winreg_CloseKey(h, tmp_ctx, &key_hnd, &result);
        }
 
+       if (ok) {
+               result = regdb_transaction_commit();
+               if (!W_ERROR_IS_OK(result)) {
+                       DEBUG(10, ("regdb_transaction_commit failed: %s\n",
+                                  win_errstr(result)));
+               }
+       } else {
+               result = regdb_transaction_cancel();
+               if (!W_ERROR_IS_OK(result)) {
+                       DEBUG(10, ("regdb_transaction_cancel failed: %s\n",
+                                  win_errstr(result)));
+               }
+       }
+       regdb_close();
        return ok;
 }
 


-- 
Samba Shared Repository

Reply via email to