Index: server/srv_main.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/srv_main.c,v retrieving revision 1.32 diff -u -r1.32 srv_main.c --- srv_main.c 2001/02/25 16:52:12 1.32 +++ srv_main.c 2001/02/27 17:40:58 @@ -934,11 +934,23 @@ return; } + if (server_state != RUN_GAME_STATE + && type != PACKET_ALLOC_NATION + && type != PACKET_CHAT_MSG + && type != PACKET_CONN_PONG) { + freelog(LOG_ERROR, _("got a packet of type %d " + "outside RUN_GAME_STATE"), type); + free(packet); + return; + } + pplayer->nturns_idle=0; if((!pplayer->is_alive || pconn->observer) && !(type == PACKET_CHAT_MSG || type == PACKET_REPORT_REQUEST || type == PACKET_CONN_PONG)) { + freelog(LOG_ERROR, _("Got a packet of type %d from a " + "dead or observer player"), type); free(packet); return; } @@ -1182,6 +1194,12 @@ int i, nation_used_count; struct packet_generic_values select_nation; + if (server_state != SELECT_RACES_STATE) { + freelog(LOG_ERROR, _("Trying to alloc nation outside " + "of SELECT_RACES_STATE!")); + return; + } + remove_leading_trailing_spaces(packet->name); if (strlen(packet->name)==0) { @@ -1189,7 +1207,7 @@ send_select_nation(pplayer); return; } - + for(i=0; ination_no) { send_select_nation(pplayer); /* it failed - nation taken */