diff -ru xbcs-040922.orig/com_central.c xbcs-040922.weasel-new/com_central.c
--- xbcs-040922.orig/com_central.c	2004-09-17 17:31:09.000000000 +0200
+++ xbcs-040922.weasel-new/com_central.c	2005-02-26 21:42:20.000000000 +0100
@@ -114,8 +114,8 @@
   }
   if (n>0) {
     Dbg_Out("%i dead game(s) removed\n",n);
+    Central_MakeGameTextFile();
   }
-  Central_MakeGameTextFile();
 } /* Central_ClearOldGames */
 
 
Binärdateien xbcs-040922.orig/com_central.o and xbcs-040922.weasel-new/com_central.o sind verschieden.
diff -ru xbcs-040922.orig/net_socket.c xbcs-040922.weasel-new/net_socket.c
--- xbcs-040922.orig/net_socket.c	2004-05-22 20:17:17.000000000 +0200
+++ xbcs-040922.weasel-new/net_socket.c	2005-02-26 21:52:25.000000000 +0100
@@ -83,6 +83,9 @@
   if (! Socket_SetAddressInet (pSocket, XBFalse, NULL, port)) {
     goto Error;
   }
+  if (! Socket_Set_Reuse (pSocket)) {
+    goto Error;
+  }
   if (! Socket_Bind (pSocket) ) {
     goto Error;
   }
Binärdateien xbcs-040922.orig/net_socket.o and xbcs-040922.weasel-new/net_socket.o sind verschieden.
diff -ru xbcs-040922.orig/socket.h xbcs-040922.weasel-new/socket.h
--- xbcs-040922.orig/socket.h	2004-05-22 19:09:50.000000000 +0200
+++ xbcs-040922.weasel-new/socket.h	2005-02-26 21:52:20.000000000 +0100
@@ -54,6 +54,7 @@
 extern XBBool Socket_Open     	   (XBSocket *pSocket, int type);
 extern XBBool Socket_Connect  	   (XBSocket *pSocket);
 extern XBBool Socket_Bind     	   (XBSocket *pSocket);
+extern XBBool Socket_Set_Reuse	   (XBSocket *pSocket);
 extern XBBool Socket_Accept   	   (XBSocket *pSocket, const XBSocket *pListen);
 extern XBBool Socket_Listen   	   (XBSocket *pSocket);
 extern void   Socket_Close         (XBSocket *);
diff -ru xbcs-040922.orig/x11_socket.c xbcs-040922.weasel-new/x11_socket.c
--- xbcs-040922.orig/x11_socket.c	2004-09-19 08:58:03.000000000 +0200
+++ xbcs-040922.weasel-new/x11_socket.c	2005-02-26 21:51:51.000000000 +0100
@@ -360,6 +360,20 @@
 } /* Bind */
 
 /*
+ * set socket option reuse
+ */
+XBBool
+Socket_Set_Reuse (XBSocket *pSocket)
+{
+  int so_reuseaddr = 1;
+  if (-1 == setsockopt (pSocket->fd, SOL_SOCKET, SO_REUSEADDR, &so_reuseaddr, sizeof (so_reuseaddr)) ) {
+    return XBFalse;
+  }
+  /* that's all */
+  return XBTrue;
+} /* Set_Reuse */
+
+/*
  *
  */
 XBBool
Binärdateien xbcs-040922.orig/x11_socket.o and xbcs-040922.weasel-new/x11_socket.o sind verschieden.
Binärdateien xbcs-040922.orig/xbcs and xbcs-040922.weasel-new/xbcs sind verschieden.
diff -ru xbcs-040922.orig/xblast.c xbcs-040922.weasel-new/xblast.c
--- xbcs-040922.orig/xblast.c	2004-09-22 14:49:43.000000000 +0200
+++ xbcs-040922.weasel-new/xblast.c	2005-02-26 21:55:32.000000000 +0100
@@ -57,20 +57,17 @@
   if (! Central_StartListen(&cfg)) {
     return -1;
   }
-  /* initialize timeout */
-  timeout.tv_sec = 0;
-  timeout.tv_usec = 0;
   /* loop until SIGINT */
   quit = XBFalse;
   signal(SIGINT,HandleSIGINT);
   while (! quit) {
+    /* initialize timeout */
+    timeout.tv_sec = 1;
+    timeout.tv_usec = 0;
     SelectSockets(KB_NONE, &timeout);
     Central_ClearOldGames();
     conn = Central_Connected();
     wait = SocketCountWrite();
-    if ( (conn == 0 ) && (wait == 0) ) {
-      sleep(1);
-    }
   }
   Central_StopListen();
   /* shutdown network */
Binärdateien xbcs-040922.orig/xblast.o and xbcs-040922.weasel-new/xblast.o sind verschieden.
