(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.
replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
truelight 20 years ago
parent 9b237345d1
commit 3d0cd51f27

@ -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

Loading…
Cancel
Save