]> git.pond.sub.org Git - empserver/commit
Fix treatment of EOF from player
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 15 Jul 2008 02:37:02 +0000 (22:37 -0400)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 15 Jul 2008 10:35:56 +0000 (06:35 -0400)
commitb3a7a8ee11595aac2bd27f76b3adf9e4c48bb0eb
tree4104d36ca2159e3facede7ef7fd50f16d102cf8c
parent9c5854c8c93979c1744c97c90df672070e080a99
Fix treatment of EOF from player

Commit 79407e68 (v4.3.11) changed recvclient() to keep failing after
receiving EOF from player.  This was bad, because some places getting
input check player->aborted instead of recvclient() failure, and
player->aborted wasn't set on EOF.  Bugs caused by this:

* comm_bomb(), ship_bomb(), plane_bomb(), land_bomb() went into an
  infinite loop that eventually ate all memory.

* deli(), desi(), dist(), fly(), morale(), zdon(), att_prompt(),
  ask_move_in() interpreted EOF as empty input instead of no more
  input.

* cmd_sail_ship() dereferenced a null pointer.

Fix by setting player->aborted on EOF, too.
include/player.h
src/lib/player/player.c
src/lib/player/recvclient.c