Changeset - r736:854db55b9ab9
[Not reviewed]
master
0 1 0
truelight - 19 years ago 2004-12-20 16:35:16
truelight@openttd.org
(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.
1 file changed with 9 insertions and 5 deletions:
0 comments (0 inline, 0 general)
dedicated.c
Show inline comments
 
@@ -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
0 comments (0 inline, 0 general)