diff svr-session.c @ 940:e9dfb6d15193

Fix auth timeout regression
author Matt Johnston <matt@ucc.asn.au>
date Wed, 09 Jul 2014 22:02:22 +0800
parents a0819ecfee0b
children f7f6c15b0ec3
line wrap: on
line diff
--- a/svr-session.c	Wed Jul 09 00:15:20 2014 +0800
+++ b/svr-session.c	Wed Jul 09 22:02:22 2014 +0800
@@ -80,12 +80,22 @@
 	svr_pubkey_options_cleanup();
 }
 
+static void
+svr_sessionloop() {
+	if (svr_ses.connect_time != 0 
+		&& monotonic_now() - svr_ses.connect_time >= AUTH_TIMEOUT) {
+		dropbear_close("Timeout before auth");
+	}
+}
+
 void svr_session(int sock, int childpipe) {
 	char *host, *port;
 	size_t len;
 
 	common_session_init(sock, sock);
 
+	svr_ses.connect_time = monotonic_now();;
+
 	/* Initialise server specific parts of the session */
 	svr_ses.childpipe = childpipe;
 #ifdef USE_VFORK
@@ -126,7 +136,7 @@
 
 	/* Run the main for loop. NULL is for the dispatcher - only the client
 	 * code makes use of it */
-	session_loop(NULL);
+	session_loop(svr_sessionloop);
 
 	/* Not reached */