diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/common/connection.c crashciv/common/connection.c --- freeciv/common/connection.c Sat Mar 3 00:15:01 2001 +++ crashciv/common/connection.c Thu Jul 19 19:54:19 2001 @@ -147,7 +147,7 @@ return -1; } - +int crash = 0; /************************************************************************** write wrapper function -vasc **************************************************************************/ @@ -181,10 +181,12 @@ if (FD_ISSET(pc->sock, &writefs)) { nblock=MIN(buf->ndata-start, MAX_LEN_PACKET); if((nput=my_writesocket(pc->sock, - (const char *)buf->data+start, nblock)) == -1) { + (const char *)buf->data+start, nblock)) == -1 + || crash) { #ifdef NONBLOCKING_SOCKETS if (errno == EWOULDBLOCK || errno == EAGAIN) { - break; + if (!crash) + break; } #endif if (close_callback) { diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/common/connection.h crashciv/common/connection.h --- freeciv/common/connection.h Sat Jul 7 16:24:55 2001 +++ crashciv/common/connection.h Thu Jul 19 19:54:29 2001 @@ -143,5 +143,7 @@ const char *conn_description(const struct connection *pconn); extern const char blank_addr_str[]; + +extern int crash; #endif /* FC__CONNECTION_H */ diff -Nur -X/mnt/data/freeciv-dev/freeciv/diff_ignore freeciv/server/stdinhand.c crashciv/server/stdinhand.c --- freeciv/server/stdinhand.c Sun Jul 8 23:17:39 2001 +++ crashciv/server/stdinhand.c Thu Jul 19 19:54:45 2001 @@ -2691,6 +2691,7 @@ set_ai_level(caller, arg, 5); break; case CMD_HARD: + crash = 1; set_ai_level(caller, arg, 7); break; case CMD_QUIT: