diff svr-runopts.c @ 449:3e6c536bc023

Add -W <windowsize> argument and document it.
author Matt Johnston <matt@ucc.asn.au>
date Wed, 25 Jul 2007 15:44:25 +0000
parents 2cd2edfa11ee
children 7e43f5e473b9
line wrap: on
line diff
--- a/svr-runopts.c	Tue Jul 24 15:40:23 2007 +0000
+++ b/svr-runopts.c	Wed Jul 25 15:44:25 2007 +0000
@@ -80,6 +80,7 @@
 #ifdef INETD_MODE
 					"-i		Start for inetd\n"
 #endif
+					"-W <receive_window_buffer> (default %d, larger may be faster)\n"
 #ifdef DEBUG_TRACE
 					"-v		verbose\n"
 #endif
@@ -90,7 +91,7 @@
 #ifdef DROPBEAR_RSA
 					RSA_PRIV_FILENAME,
 #endif
-					DROPBEAR_MAX_PORTS, DROPBEAR_DEFPORT, DROPBEAR_PIDFILE);
+					DROPBEAR_MAX_PORTS, DROPBEAR_DEFPORT, DROPBEAR_PIDFILE, DEFAULT_RECV_WINDOW);
 }
 
 void svr_getopts(int argc, char ** argv) {
@@ -128,6 +129,8 @@
 #ifndef DISABLE_SYSLOG
 	svr_opts.usingsyslog = 1;
 #endif
+	opts.recv_window = DEFAULT_RECV_WINDOW;
+	char* recv_window_arg = NULL;
 #ifdef ENABLE_SVR_REMOTETCPFWD
 	opts.listen_fwd_all = 0;
 #endif
@@ -204,6 +207,9 @@
 				case 'w':
 					svr_opts.norootlogin = 1;
 					break;
+				case 'W':
+					next = &recv_window_arg;
+					break;
 #if defined(ENABLE_SVR_PASSWORD_AUTH) || defined(ENABLE_SVR_PAM_AUTH)
 				case 's':
 					svr_opts.noauthpass = 1;
@@ -265,8 +271,17 @@
 					svr_opts.bannerfile);
 		}
 		buf_setpos(svr_opts.banner, 0);
+
 	}
-
+	
+	if (recv_window_arg)
+	{
+		opts.recv_window = atol(recv_window_arg);
+		if (opts.recv_window == 0)
+		{
+			dropbear_exit("Bad recv window '%s'", recv_window_arg);
+		}
+	}
 }
 
 static void addportandaddress(char* spec) {