Added "passwd chat timeout" parameter. Docs to follow.
authorJeremy Allison <jra@samba.org>
Mon, 24 Nov 2003 20:18:47 +0000 (20:18 +0000)
committerJeremy Allison <jra@samba.org>
Mon, 24 Nov 2003 20:18:47 +0000 (20:18 +0000)
Jeremy.
(This used to be commit 16097f2072085432f4c669d9e008023f36f7afbb)

source3/param/loadparm.c
source3/smbd/chgpasswd.c

index e98d9249646c259cdedffeaa64884ed07e4e907c..54cc2f3eef9dab3d40dcc7b9e4ab1031e308f6c9 100644 (file)
@@ -262,6 +262,7 @@ typedef struct
        BOOL bPamPasswordChange;
        BOOL bUnixPasswdSync;
        BOOL bPasswdChatDebug;
+       int iPasswdChatTimeout;
        BOOL bTimestampLogs;
        BOOL bNTSmbSupport;
        BOOL bNTPipeSupport;
@@ -797,6 +798,7 @@ static struct parm_struct parm_table[] = {
        {"passwd program", P_STRING, P_GLOBAL, &Globals.szPasswdProgram, NULL, NULL, FLAG_ADVANCED}, 
        {"passwd chat", P_STRING, P_GLOBAL, &Globals.szPasswdChat, NULL, NULL, FLAG_ADVANCED}, 
        {"passwd chat debug", P_BOOL, P_GLOBAL, &Globals.bPasswdChatDebug, NULL, NULL, FLAG_ADVANCED}, 
+       {"passwd chat timeout", P_INTEGER, P_GLOBAL, &Globals.iPasswdChatTimeout, NULL, NULL, FLAG_ADVANCED}, 
        {"username map", P_STRING, P_GLOBAL, &Globals.szUsernameMap, NULL, NULL, FLAG_ADVANCED}, 
        {"password level", P_INTEGER, P_GLOBAL, &Globals.pwordlevel, NULL, NULL, FLAG_ADVANCED}, 
        {"username level", P_INTEGER, P_GLOBAL, &Globals.unamelevel, NULL, NULL, FLAG_ADVANCED}, 
@@ -1412,6 +1414,7 @@ static void init_globals(void)
        Globals.bUnixPasswdSync = False;
        Globals.bPamPasswordChange = False;
        Globals.bPasswdChatDebug = False;
+       Globals.iPasswdChatTimeout = 2; /* 2 second default. */
        Globals.bUnicode = True;        /* Do unicode on the wire by default */
        Globals.bNTPipeSupport = True;  /* Do NT pipes by default. */
        Globals.bNTStatusSupport = True; /* Use NT status by default. */
@@ -1725,6 +1728,7 @@ FN_GLOBAL_BOOL(lp_bind_interfaces_only, &Globals.bBindInterfacesOnly)
 FN_GLOBAL_BOOL(lp_pam_password_change, &Globals.bPamPasswordChange)
 FN_GLOBAL_BOOL(lp_unix_password_sync, &Globals.bUnixPasswdSync)
 FN_GLOBAL_BOOL(lp_passwd_chat_debug, &Globals.bPasswdChatDebug)
+FN_GLOBAL_INTEGER(lp_passwd_chat_timeout, &Globals.iPasswdChatTimeout)
 FN_GLOBAL_BOOL(lp_unicode, &Globals.bUnicode)
 FN_GLOBAL_BOOL(lp_nt_pipe_support, &Globals.bNTPipeSupport)
 FN_GLOBAL_BOOL(lp_nt_status_support, &Globals.bNTStatusSupport)
index d99570ff7c0125acbdf5b3c26f3018f4300a2b59..5caf78e41a6bd74aca8d938ee63a28fd36c4b793 100644 (file)
@@ -245,7 +245,8 @@ static int expect(int master, char *issue, char *expected)
                if (strequal(expected, "."))
                        return True;
 
-               timeout = 2000;
+               /* Initial timeout. */
+               timeout = lp_passwd_chat_timeout() * 1000;
                nread = 0;
                buffer[nread] = 0;
 
@@ -261,8 +262,10 @@ static int expect(int master, char *issue, char *expected)
                                pstrcpy( str, buffer);
                                trim_char( str, ' ', ' ');
 
-                               if ((match = (unix_wild_match(expected, str) == 0)))
-                                       timeout = 200;
+                               if ((match = (unix_wild_match(expected, str) == 0))) {
+                                       /* Now data has started to return, lower timeout. */
+                                       timeout = lp_passwd_chat_timeout() * 100;
+                               }
                        }
                }