client: Fix obscure misdetection of input EOF

recv_input(input_fd, &inbuf) returns zero when @inbuf is full or
@input_fd is at EOF.  We avoid the former by putting @input_fd in
@rdfd only when @inbuf has space, so we can detect EOF easily.  But we
missed the case where adding a cookie fills up @inbuf.  We
misinterpret "can't read into full buffer" as "EOF on input" then.

Fix by checking for space again.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-01-02 10:11:28 +01:00
parent 38097c4986
commit 37e68e5796

View file

@ -27,7 +27,7 @@
* play.c: Playing the game
*
* Known contributors to this file:
* Markus Armbruster, 2007-2015
* Markus Armbruster, 2007-2016
* Ron Koenderink, 2007-2009
*/
@ -523,7 +523,7 @@ play(int sock)
continue;
/* read player input */
if (FD_ISSET(input_fd, &rdfd)) {
if (FD_ISSET(input_fd, &rdfd) && ring_space(&inbuf)) {
n = recv_input(input_fd, &inbuf);
if (n <= 0) {
if (input_fd) {