[PATCH] parameter 'passwd chat timeout'

Jeff McElroy samba-technical at radux.com
Wed Jan 22 17:46:00 GMT 2003


    The 'passwd chat' script currently has a hard coded 2 second timeout 
that it uses when waiting for a response.  This is too small for us 
since we propogate the  password to a corporate meta-directory via java, 
soap and ssl (which takes 10 seconds on a clear day).  

    Is there any performance/usability reason why this timeout has been 
kept small ?  

    Attached is a patch for 2.2.7a and HEAD for the parameter 'passwd 
chat timeout' that allows this timeout to be adjusted.  The default 
value for this parameter is kept at 2 seconds.

Jeff McElroy


-------------- next part --------------
Index: source/param/loadparm.c
===================================================================
RCS file: /cvsroot/samba/source/param/loadparm.c,v
retrieving revision 1.475
diff -u -r1.475 loadparm.c
--- source/param/loadparm.c	13 Jan 2003 13:03:24 -0000	1.475
+++ source/param/loadparm.c	22 Jan 2003 17:31:34 -0000
@@ -279,6 +279,7 @@
 	int restrict_anonymous;
 	int name_cache_timeout;
 	param_opt_struct *param_opt;
+	int passwd_chat_timeout;
 }
 global;
 
@@ -1110,6 +1111,7 @@
 	{"winbind enum users", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumUsers, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
 	{"winbind enum groups", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumGroups, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
 	{"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, FLAG_ADVANCED | FLAG_DEVELOPER},
+	{"passwd chat timeout", P_INTEGER, P_GLOBAL, &Globals.passwd_chat_timeout, NULL, NULL, FLAG_BASIC},
 
 	{NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0}
 };
@@ -1453,6 +1455,8 @@
 	Globals.bUseSpnego = True;
 
 	string_set(&Globals.smb_ports, SMB_PORTS);
+
+	Globals.passwd_chat_timeout=2000; /* In milliseconds */
 }
 
 static TALLOC_CTX *lp_talloc;
@@ -1827,6 +1831,7 @@
 FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers)
 FN_GLOBAL_BOOL(lp_algorithmic_rid_base, &Globals.bAlgorithmicRidBase)
 FN_GLOBAL_INTEGER(lp_name_cache_timeout, &Globals.name_cache_timeout)
+FN_GLOBAL_INTEGER(lp_passwd_chat_timeout, &Globals.passwd_chat_timeout)
 
 /* local prototypes */
 
Index: source/smbd/chgpasswd.c
===================================================================
RCS file: /cvsroot/samba/source/smbd/chgpasswd.c,v
retrieving revision 1.100
diff -u -r1.100 chgpasswd.c
--- source/smbd/chgpasswd.c	15 Jan 2003 22:15:07 -0000	1.100
+++ source/smbd/chgpasswd.c	22 Jan 2003 17:31:37 -0000
@@ -245,7 +245,9 @@
 		if (strequal(expected, "."))
 			return True;
 
-		timeout = 2000;
+		timeout=lp_passwd_chat_timeout();
+		DEBUG(100, ("expect: passwd_chat_timeout=%d\n", timeout));
+
 		nread = 0;
 		buffer[nread] = 0;
 
-------------- next part --------------
diff -uwrB samba-2.2.7a.dist/source/param/loadparm.c samba-2.2.7a/source/param/loadparm.c
--- samba-2.2.7a.dist/source/param/loadparm.c	Tue Dec 10 14:58:15 2002
+++ samba-2.2.7a/source/param/loadparm.c	Tue Jan 21 20:18:53 2003
@@ -286,6 +286,7 @@
 	BOOL bUseMmap;
 	BOOL bUnixExtensions;
 	int name_cache_timeout;
+	int passwd_chat_timeout;
 }
 global;
 
@@ -1118,6 +1119,7 @@
 	{"winbind enum users", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumUsers, NULL, NULL, 0},
 	{"winbind enum groups", P_BOOL, P_GLOBAL, &Globals.bWinbindEnumGroups, NULL, NULL, 0},
 	{"winbind use default domain", P_BOOL, P_GLOBAL, &Globals.bWinbindUseDefaultDomain, NULL, NULL, 0},
+	{"passwd chat timeout", P_INTEGER, P_GLOBAL, &Globals.passwd_chat_timeout, NULL, NULL, FLAG_BASIC},
 
 	{NULL, P_BOOL, P_NONE, NULL, NULL, NULL, 0}
 };
@@ -1467,6 +1469,8 @@
 	 */
 
 	interpret_coding_system(KANJI);
+
+	Globals.passwd_chat_timeout=2000;
 }
 
 static TALLOC_CTX *lp_talloc;
@@ -1822,6 +1826,7 @@
 FN_LOCAL_CHAR(lp_magicchar, magic_char)
 FN_GLOBAL_INTEGER(lp_winbind_cache_time, &Globals.winbind_cache_time)
 FN_GLOBAL_BOOL(lp_hide_local_users, &Globals.bHideLocalUsers)
+FN_GLOBAL_INTEGER(lp_passwd_chat_timeout, &Globals.passwd_chat_timeout)
 
 /* local prototypes */
 
diff -uwrB samba-2.2.7a.dist/source/smbd/chgpasswd.c samba-2.2.7a/source/smbd/chgpasswd.c
--- samba-2.2.7a.dist/source/smbd/chgpasswd.c	Tue Jan 21 19:32:42 2003
+++ samba-2.2.7a/source/smbd/chgpasswd.c	Tue Jan 21 23:36:13 2003
@@ -239,7 +239,8 @@
 		if (strequal(expected, "."))
 			return True;
 
-		timeout = 2000;
+		timeout=lp_passwd_chat_timeout();
+		DEBUG(100, ("expect: passwd_chat_timeout=%d\n", timeout));
 		nread = 0;
 		buffer[nread] = 0;
 


More information about the samba-technical mailing list