Date:	Thursday October 26, 2000 @ 5:06
Author:	xyzzy

Update of /home/netrek/cvsroot/Vanilla/ntserv
In directory swashbuckler.fortress.real-time.com:/var/tmp/cvs-serv30198

Modified Files:
	getentry.c getname.c main.c proto.h socket.c 
Log Message:
Fix problem where if the client disconnected while the server was waiting for
the version packet, ntserv would not check for the client dying suck up 100%
CPU.

Also add a parameter to socketPause() with the timeout to wait for.


****************************************

Index: Vanilla/ntserv/getentry.c
diff -u Vanilla/ntserv/getentry.c:1.7 Vanilla/ntserv/getentry.c:1.8
--- Vanilla/ntserv/getentry.c:1.7	Tue Aug 15 05:16:28 2000
+++ Vanilla/ntserv/getentry.c	Thu Oct 26 05:06:14 2000
@@ -45,7 +45,7 @@
 	    me->p_status=PDEAD;
 	    me->p_explode=600;
 	}
-	socketPause();
+	socketPause(1);
 	readFromClient();
 	if (isClientDead()) {
 	    int i;
Index: Vanilla/ntserv/getname.c
diff -u Vanilla/ntserv/getname.c:1.9 Vanilla/ntserv/getname.c:1.10
--- Vanilla/ntserv/getname.c:1.9	Fri Jun 23 04:12:58 2000
+++ Vanilla/ntserv/getname.c	Thu Oct 26 05:06:14 2000
@@ -62,7 +62,7 @@
 	/* Been ghostbusted? */
 	if (me->p_status==PFREE) exitGame();
 	if (isClientDead()) exitGame();
-	socketPause();
+	socketPause(1);
 	readFromClient();
     }
 
Index: Vanilla/ntserv/main.c
diff -u Vanilla/ntserv/main.c:1.19 Vanilla/ntserv/main.c:1.20
--- Vanilla/ntserv/main.c:1.19	Tue Aug 15 05:16:28 2000
+++ Vanilla/ntserv/main.c	Thu Oct 26 05:06:14 2000
@@ -150,15 +150,20 @@
     }
     starttime=time(NULL);
     while (userVersion==0) {
+	time_t t;
 	/* Waiting for user to send his version number.
 	 * We give him thirty seconds to do so...
 	 */
-	if (starttime+30 < time(NULL)) {
+	if (isClientDead()) {
+	    ERROR(2,("ntserv/main.c: disconnect waiting for version packet from %s\n", host));
+	    exit(1);
+	}
+	if (starttime+30 < time(&t)) {
 	    ERROR(2,("ntserv/main.c: no version packet received from %s\n",
 		     host));
 	    exit(1);
 	}
-	socketPause();
+	socketPause(starttime+30-t);
 	readFromClient();
     }
     if (!checkVersion()) {
Index: Vanilla/ntserv/proto.h
diff -u Vanilla/ntserv/proto.h:1.4 Vanilla/ntserv/proto.h:1.5
--- Vanilla/ntserv/proto.h:1.4	Fri Mar 24 13:55:15 2000
+++ Vanilla/ntserv/proto.h	Thu Oct 26 05:06:14 2000
@@ -1,4 +1,4 @@
-/* $Id: proto.h,v 1.4 2000/03/24 19:55:15 karthik Exp $
+/* $Id: proto.h,v 1.5 2000/10/26 10:06:14 xyzzy Exp $
  *
  * Function prototypes for externally accessed functions.
  */
@@ -182,7 +182,7 @@
 void updateClient(void);
 void sendClientPacket(void *);
 void flushSockBuf(void);
-void socketPause(void);
+void socketPause(int);
 int readFromClient(void);
 int checkVersion(void);
 void logEntry(void);
Index: Vanilla/ntserv/socket.c
diff -u Vanilla/ntserv/socket.c:1.27 Vanilla/ntserv/socket.c:1.28
--- Vanilla/ntserv/socket.c:1.27	Thu Jul 20 19:56:31 2000
+++ Vanilla/ntserv/socket.c	Thu Oct 26 05:06:14 2000
@@ -1,4 +1,4 @@
-/* $Id: socket.c,v 1.27 2000/07/21 00:56:31 ahn Exp $
+/* $Id: socket.c,v 1.28 2000/10/26 10:06:14 xyzzy Exp $
  */
 
 /*
@@ -899,12 +899,12 @@
 	fatMerge();
 }
 
-void socketPause(void)
+void socketPause(int sec)
 {
     struct timeval timeout;
     fd_set readfds;
 
-    timeout.tv_sec=1;
+    timeout.tv_sec=sec;
     timeout.tv_usec=0;
     FD_ZERO(&readfds);
     FD_SET(sock, &readfds);