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:
parent
38097c4986
commit
37e68e5796
1 changed files with 2 additions and 2 deletions
|
@ -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) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue