loadparm: fixed service list handling
authorAndrew Tridgell <tridge@samba.org>
Tue, 6 Dec 2011 00:30:24 +0000 (11:30 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 15 Dec 2011 22:36:22 +0000 (23:36 +0100)
when you have:

  server services = +smb -s3fs

and 'smb' is already in the list, then this should not be an
error. This ensures that a config that specifically sets the services
it wants doesn't generate an error if the service list being set
happens to be the default

lib/param/loadparm.c

index 48b5221c5a8cc6be0cae6b74eba55e7b6840306a..37d4d0ff0b4962bf588e7b2971441488ce203988 100644 (file)
@@ -2509,23 +2509,13 @@ static bool set_variable(TALLOC_CTX *mem_ctx, int parmnum, void *parm_ptr,
                        char **new_list = str_list_make(mem_ctx,
                                                        pszParmValue, NULL);
                        for (i=0; new_list[i]; i++) {
-                               if (new_list[i][0] == '+' && new_list[i][1] &&
-                                   (!str_list_check(*(const char ***)parm_ptr,
-                                                    &new_list[i][1]))) {
-                                       *(const char ***)parm_ptr = str_list_add(*(const char ***)parm_ptr,
-                                                                                &new_list[i][1]);
-                               } else if (new_list[i][0] == '-' && new_list[i][1]) {
-#if 0 /* This is commented out because we sometimes parse the list
-       * twice, and so we can't assert on this */
+                               if (new_list[i][0] == '+' && new_list[i][1]) {
                                        if (!str_list_check(*(const char ***)parm_ptr,
                                                            &new_list[i][1])) {
-                                               DEBUG(0, ("Unsupported value for: %s = %s, %s is not in the original list [%s]\n",
-                                                         pszParmName, pszParmValue, new_list[i],
-                                                         str_list_join_shell(mem_ctx, *(const char ***)parm_ptr, ' ')));
-                                               return false;
-
+                                               *(const char ***)parm_ptr = str_list_add(*(const char ***)parm_ptr,
+                                                                                        &new_list[i][1]);
                                        }
-#endif
+                               } else if (new_list[i][0] == '-' && new_list[i][1]) {
                                        str_list_remove(*(const char ***)parm_ptr,
                                                        &new_list[i][1]);
                                } else {