diff options
-rw-r--r-- | main/samba/APKBUILD | 6 | ||||
-rw-r--r-- | main/samba/samba-maximum-number-of-winbindd-clients.patch | 134 |
2 files changed, 138 insertions, 2 deletions
diff --git a/main/samba/APKBUILD b/main/samba/APKBUILD index 1d4509750..c4d97476f 100644 --- a/main/samba/APKBUILD +++ b/main/samba/APKBUILD @@ -1,7 +1,7 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=samba pkgver=3.5.6 -pkgrel=3 +pkgrel=4 pkgdesc="Tools to access a server's filespace and printers via SMB" url="http://www.samba.org" arch="all" @@ -16,6 +16,7 @@ source="http://us1.$pkgname.org/$pkgname/ftp/stable/$pkgname-$pkgver.tar.gz samba.confd samba.logrotate samba-uclibc-fstab.patch + samba-maximum-number-of-winbindd-clients.patch " pkggroups="winbind" @@ -154,4 +155,5 @@ md5sums="bf6c09ea497a166df8bd672db1d8da8f samba-3.5.6.tar.gz c8a7f6ac5df2f73dbf023e25ea39927b samba.initd c150433426e18261e6e3eed3930e1a76 samba.confd b7cafabfb4fa5b3ab5f2e857d8d1c733 samba.logrotate -811e5a3f570d0053cf27a73248be4ae6 samba-uclibc-fstab.patch" +811e5a3f570d0053cf27a73248be4ae6 samba-uclibc-fstab.patch +a906d4049df6ca1a3c106e7df52d9925 samba-maximum-number-of-winbindd-clients.patch" diff --git a/main/samba/samba-maximum-number-of-winbindd-clients.patch b/main/samba/samba-maximum-number-of-winbindd-clients.patch new file mode 100644 index 000000000..6e84bb413 --- /dev/null +++ b/main/samba/samba-maximum-number-of-winbindd-clients.patch @@ -0,0 +1,134 @@ +From eeb24afd78a6448e808aaf96dbd7d5abf51bbd40 Mon Sep 17 00:00:00 2001 +From: Pierre Carrier <pcarrier@redhat.com> +Date: Tue, 14 Sep 2010 16:43:39 -0700 +Subject: [PATCH] Allows changing the maximum number of simultaneous clients in winbindd through an smb.conf option. + +Signed-off-by: Jeremy Allison <jra@samba.org> +--- + docs-xml/smbdotconf/winbind/winbindmaxclients.xml | 14 ++++++++++++++ + source3/include/local.h | 3 --- + source3/include/proto.h | 1 + + source3/param/loadparm.c | 13 ++++++++++++- + source3/winbindd/winbindd.c | 8 +++----- + 5 files changed, 30 insertions(+), 9 deletions(-) + create mode 100644 docs-xml/smbdotconf/winbind/winbindmaxclients.xml + +diff --git a/docs-xml/smbdotconf/winbind/winbindmaxclients.xml b/docs-xml/smbdotconf/winbind/winbindmaxclients.xml +new file mode 100644 +index 0000000..ae49e45 +--- /dev/null ++++ b/docs-xml/smbdotconf/winbind/winbindmaxclients.xml +@@ -0,0 +1,14 @@ ++<samba:parameter name="winbind max clients" ++ context="G" ++ type="integer" ++ advanced="1" developer="1" ++ xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> ++<description> ++ <para>This parameter specifies the maximum number of clients ++ the <citerefentry><refentrytitle>winbindd</refentrytitle> ++ <manvolnum>8</manvolnum></citerefentry> daemon can connect with. ++ </para> ++</description> ++ ++<value type="default">200</value> ++</samba:parameter> +diff --git a/source3/include/local.h b/source3/include/local.h +index a3baf64..93ec4cc 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 f089c69..e1751e8 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 e3fc2d8..bb6e132 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 7a9ebb8..9c0a1fb 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; + } + } +-- +1.7.0.4 + |