diff options
author | Pierre Carrier <pcarrier@redhat.com> | 2010-09-14 16:43:39 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-09-14 16:43:39 -0700 |
commit | eeb24afd78a6448e808aaf96dbd7d5abf51bbd40 (patch) | |
tree | 259985fbd4f6a16dd3352c21f312fc56279e0307 /source3 | |
parent | 0b270f014f67b8ff49b70fb41b2cceac121f337e (diff) | |
download | samba-eeb24afd78a6448e808aaf96dbd7d5abf51bbd40.tar.gz samba-eeb24afd78a6448e808aaf96dbd7d5abf51bbd40.tar.bz2 samba-eeb24afd78a6448e808aaf96dbd7d5abf51bbd40.zip |
Allows changing the maximum number of simultaneous clients in winbindd through an smb.conf option.
Signed-off-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/local.h | 3 | ||||
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/param/loadparm.c | 13 | ||||
-rw-r--r-- | source3/winbindd/winbindd.c | 8 |
4 files changed, 16 insertions, 9 deletions
diff --git a/source3/include/local.h b/source3/include/local.h index a3baf64f9a..93ec4cc9db 100644 --- a/source3/include/local.h +++ b/source3/include/local.h @@ -239,9 +239,6 @@ /* Number in seconds for winbindd to wait for the mutex. Make this 2 * smbd wait time. */ #define WINBIND_SERVER_MUTEX_WAIT_TIME (( ((NUM_CLI_AUTH_CONNECT_RETRIES) * ((CLI_AUTH_TIMEOUT)/1000)) + 5)*2) -/* Max number of simultaneous winbindd socket connections. */ -#define WINBINDD_MAX_SIMULTANEOUS_CLIENTS 200 - /* Buffer size to use when printing backtraces */ #define BACKTRACE_STACK_SIZE 64 diff --git a/source3/include/proto.h b/source3/include/proto.h index f089c696f0..e1751e803f 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -3539,6 +3539,7 @@ int lp_smb_encrypt(int ); char lp_magicchar(const struct share_params *p ); int lp_winbind_cache_time(void); int lp_winbind_reconnect_delay(void); +int lp_winbind_max_clients(void); const char **lp_winbind_nss_info(void); int lp_algorithmic_rid_base(void); int lp_name_cache_timeout(void); diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index e3fc2d8b3a..bb6e1324fe 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -262,7 +262,7 @@ struct global { int oplock_break_wait_time; int winbind_cache_time; int winbind_reconnect_delay; - int winbind_max_idle_children; + int winbind_max_clients; char **szWinbindNssInfo; int iLockSpinTime; char *szLdapMachineSuffix; @@ -4606,6 +4606,15 @@ static struct parm_struct parm_table[] = { .flags = FLAG_ADVANCED, }, { + .label = "winbind max clients", + .type = P_INTEGER, + .p_class = P_GLOBAL, + .ptr = &Globals.winbind_max_clients, + .special = NULL, + .enum_list = NULL, + .flags = FLAG_ADVANCED, + }, + { .label = "winbind enum users", .type = P_BOOL, .p_class = P_GLOBAL, @@ -5299,6 +5308,7 @@ static void init_globals(bool reinit_globals) Globals.winbind_cache_time = 300; /* 5 minutes */ Globals.winbind_reconnect_delay = 30; /* 30 seconds */ + Globals.winbind_max_clients = 200; Globals.bWinbindEnumUsers = False; Globals.bWinbindEnumGroups = False; Globals.bWinbindUseDefaultDomain = False; @@ -5877,6 +5887,7 @@ FN_LOCAL_INTEGER(lp_smb_encrypt, ismb_encrypt) FN_LOCAL_CHAR(lp_magicchar, magic_char) FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time) FN_GLOBAL_INTEGER(lp_winbind_reconnect_delay, &Globals.winbind_reconnect_delay) +FN_GLOBAL_INTEGER(lp_winbind_max_clients, &Globals.winbind_max_clients) FN_GLOBAL_LIST(lp_winbind_nss_info, &Globals.szWinbindNssInfo) FN_GLOBAL_INTEGER(lp_algorithmic_rid_base, &Globals.AlgorithmicRidBase) FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout) diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 7a9ebb8a82..9c0a1fb921 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -908,17 +908,15 @@ static void winbindd_listen_fde_handler(struct tevent_context *ev, struct winbindd_listen_state *s = talloc_get_type_abort(private_data, struct winbindd_listen_state); - while (winbindd_num_clients() > - WINBINDD_MAX_SIMULTANEOUS_CLIENTS - 1) { + while (winbindd_num_clients() > lp_winbind_max_clients() - 1) { DEBUG(5,("winbindd: Exceeding %d client " "connections, removing idle " - "connection.\n", - WINBINDD_MAX_SIMULTANEOUS_CLIENTS)); + "connection.\n", lp_winbind_max_clients())); if (!remove_idle_client()) { DEBUG(0,("winbindd: Exceeding %d " "client connections, no idle " "connection found\n", - WINBINDD_MAX_SIMULTANEOUS_CLIENTS)); + lp_winbind_max_clients())); break; } } |