1
0
Fork 0

(svn r1188) -Fix: [Network] Fixed that CTRL+<key> could sometimes hang a dedicated

server till enter was pressed. CTRL+D after a random key still does hang 
the dedicated server till enter is pressed.
release/0.4.5
truelight 2004-12-20 16:35:16 +00:00
parent 9b237345d1
commit 3d0cd51f27
1 changed files with 9 additions and 5 deletions

View File

@ -65,8 +65,8 @@ void DedicatedFork()
/* Signal handlers */
static void DedicatedSignalHandler(int sig)
{
_exit_game = true;
signal(sig, DedicatedSignalHandler);
_exit_game = true;
signal(sig, DedicatedSignalHandler);
}
#endif
@ -97,6 +97,7 @@ static bool InputWaiting()
{
struct timeval tv;
fd_set readfds;
byte ret;
tv.tv_sec = 0;
tv.tv_usec = 1;
@ -105,9 +106,9 @@ static bool InputWaiting()
FD_SET(STDIN, &readfds);
/* don't care about writefds and exceptfds: */
select(STDIN+1, &readfds, NULL, NULL, &tv);
ret = select(STDIN + 1, &readfds, NULL, NULL, &tv);
if (FD_ISSET(STDIN, &readfds))
if (ret > 0)
return true;
else
return false;
@ -128,6 +129,9 @@ static void DedicatedHandleKeyInput()
#ifdef UNIX
if (InputWaiting()) {
if (_exit_game)
return;
fgets(input_line, 200, stdin);
// Forget about the final \n (or \r)
strtok(input_line, "\r\n");
@ -167,7 +171,7 @@ static int DedicatedVideoMainLoop()
#ifdef UNIX
signal(SIGTERM, DedicatedSignalHandler);
signal(SIGINT, DedicatedSignalHandler);
signal(SIGABRT, DedicatedSignalHandler);
signal(SIGQUIT, DedicatedSignalHandler);
#endif
// Load the dedicated server stuff