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>
* play.c: Playing the game
*
* Known contributors to this file:
- * Markus Armbruster, 2007-2015
+ * Markus Armbruster, 2007-2016
* Ron Koenderink, 2007-2009
*/
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) {