From 3e4894c7f5445efc9fe559e6dd9a9f58bbd2732e Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 25 Feb 2009 22:52:39 +0100 Subject: [PATCH] Don't log out player when update aborts a command recvclient() confused command abortion with an idle timeout. Broken in commit 08b94556, v4.3.20. --- src/lib/player/recvclient.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/lib/player/recvclient.c b/src/lib/player/recvclient.c index a34b278a7..06ab8ae76 100644 --- a/src/lib/player/recvclient.c +++ b/src/lib/player/recvclient.c @@ -29,7 +29,7 @@ * * Known contributors to this file: * Dave Pare, 1986 - * Markus Armbruster, 2006-2008 + * Markus Armbruster, 2006-2009 * Ron Koenderink, 2009 */ @@ -59,7 +59,7 @@ int recvclient(char *cmd, int size) { - int count; + int count, res; count = -1; while (!player->aborted) { @@ -85,11 +85,15 @@ recvclient(char *cmd, int size) if (player->aborted) break; - if (io_input(player->iop, IO_WAIT) <= 0) { - if (!io_error(player->iop) && !io_eof(player->iop)) { - pr_flash(player, "idle connection terminated\n"); - player->state = PS_SHUTDOWN; - } + res = io_input(player->iop, IO_WAIT); + if (res > 0) + ; + else if (res < 0) + player->aborted = player->eof = 1; + else if (io_eof(player->iop)) + player->aborted = player->eof = 1; + else if (!player->aborted) { + pr_flash(player, "idle connection terminated\n"); player->aborted = player->eof = 1; } } -- 2.43.0