From: <z-...@us...> - 2008-01-10 10:48:46
|
Revision: 7495 http://armagetronad.svn.sourceforge.net/armagetronad/?rev=7495&view=rev Author: z-man Date: 2008-01-10 02:48:46 -0800 (Thu, 10 Jan 2008) Log Message: ----------- Unblocking stdin before every read. SIGSTOP signals cause it to get blocked, freezing the server. Modified Paths: -------------- armagetronad/branches/0.2.8/armagetronad/src/render/rConsoleCout.cpp Modified: armagetronad/branches/0.2.8/armagetronad/src/render/rConsoleCout.cpp =================================================================== --- armagetronad/branches/0.2.8/armagetronad/src/render/rConsoleCout.cpp 2008-01-10 10:46:42 UTC (rev 7494) +++ armagetronad/branches/0.2.8/armagetronad/src/render/rConsoleCout.cpp 2008-01-10 10:48:46 UTC (rev 7495) @@ -66,6 +66,7 @@ } + #define MAXLINE 1000 static char line_in[MAXLINE+2]; static int currentIn=0; @@ -121,12 +122,24 @@ #else - while (read(stdin_descriptor,&line_in[currentIn],1)>0){ - if (line_in[currentIn]=='\n' || currentIn>=MAXLINE-1){ + // unblock stdin before every read. SIGSTOP blocks it. + if ( unblocked ) + { + sr_Unblock_stdin(); + } + + while ( read(stdin_descriptor,&line_in[currentIn],1)>0){ + if (line_in[currentIn]=='\n' || currentIn>=MAXLINE-1) + { line_in[currentIn+1]='\0'; std::stringstream s(line_in); tConfItemBase::LoadAll(s); currentIn=0; + + if ( unblocked ) + { + sr_Unblock_stdin(); + } } else currentIn++; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |