summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h1
-rw-r--r--source3/param/loadparm.c36
2 files changed, 26 insertions, 11 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 46600e2db2..6dd9c7e7e8 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4079,6 +4079,7 @@ bool lp_string_is_valid_boolean(const char *parm_value);
bool lp_invert_boolean(const char *str, const char **inverse_str);
bool lp_canonicalize_boolean(const char *str, const char**canon_str);
bool service_ok(int iService);
+bool process_registry_service(const char *service_name);
bool lp_config_backend_is_registry(void);
bool lp_config_backend_is_file(void);
bool lp_file_list_changed(void);
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 7e2affed08..380b9e1b8c 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -6824,10 +6824,10 @@ static bool process_smbconf_service(struct smbconf_service *service)
return true;
}
-/*
- * process_registry_globals
+/**
+ * load a service from registry and activate it
*/
-static bool process_registry_globals(void)
+bool process_registry_service(const char *service_name)
{
WERROR werr;
struct smbconf_service *service = NULL;
@@ -6839,19 +6839,18 @@ static bool process_registry_globals(void)
goto done;
}
- ret = do_parameter("registry shares", "yes", NULL);
- if (!ret) {
- goto done;
- }
+ DEBUG(5, ("process_registry_service: service name %s\n", service_name));
- if (!smbconf_share_exists(conf_ctx, GLOBAL_NAME)) {
- /* nothing to read from the registry yet but make sure lp_load
- * doesn't return false */
+ if (!smbconf_share_exists(conf_ctx, service_name)) {
+ /*
+ * Registry does not contain data for this service (yet),
+ * but make sure lp_load doesn't return false.
+ */
ret = true;
goto done;
}
- werr = smbconf_get_share(conf_ctx, mem_ctx, GLOBAL_NAME, &service);
+ werr = smbconf_get_share(conf_ctx, mem_ctx, service_name, &service);
if (!W_ERROR_IS_OK(werr)) {
goto done;
}
@@ -6869,6 +6868,21 @@ done:
return ret;
}
+/*
+ * process_registry_globals
+ */
+static bool process_registry_globals(void)
+{
+ bool ret;
+
+ ret = do_parameter("registry shares", "yes", NULL);
+ if (!ret) {
+ return ret;
+ }
+
+ return process_registry_service(GLOBAL_NAME);
+}
+
static bool process_registry_shares(void)
{
WERROR werr;