]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
oops... forgot to safeguard against recursive character adding
authordivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 10 Jul 2007 06:39:28 +0000 (06:39 +0000)
committerdivverent <divverent@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 10 Jul 2007 06:39:28 +0000 (06:39 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7480 d7cf8633-e32d-0410-b094-e92efae38249

console.c

index 01b38b4833e73bb80a265407a6b9e044d0853090..d7e614a120c221380fd737cc8f314a9cfd2501f8 100644 (file)
--- a/console.c
+++ b/console.c
@@ -79,6 +79,7 @@ cvar_t log_file = {0, "log_file","", "filename to log messages to"};
 cvar_t log_dest_udp = {0, "log_dest_udp","", "UDP address to log messages to (in QW rcon compatible format); multiple destinations can be separated by spaces; DO NOT SPECIFY DNS NAMES HERE"};
 char log_dest_buffer[1400]; // UDP packet
 size_t log_dest_buffer_pos;
+qboolean log_dest_buffer_appending;
 char crt_log_file [MAX_OSPATH] = "";
 qfile_t* logfile = NULL;
 
@@ -112,10 +113,11 @@ void Log_DestBuffer_Flush()
        qboolean have_opened_temp_sockets = false;
        if(s) if(log_dest_buffer_pos > 5)
        {
+               ++log_dest_buffer_appending;
                log_dest_buffer[log_dest_buffer_pos++] = 0;
 
                if(!NetConn_HaveServerPorts() && !NetConn_HaveClientPorts()) // then temporarily open one
-               {
+               {
                        have_opened_temp_sockets = true;
                        NetConn_OpenServerPorts(true);
                }
@@ -132,6 +134,7 @@ void Log_DestBuffer_Flush()
 
                if(have_opened_temp_sockets)
                        NetConn_CloseServerPorts();
+               --log_dest_buffer_appending;
        }
        log_dest_buffer_pos = 0;
 }
@@ -679,8 +682,13 @@ Adds a character to the rcon buffer
 */
 void Con_Rcon_AddChar(char c)
 {
+       if(log_dest_buffer_appending)
+               return;
+       ++log_dest_buffer_appending;
+
        // if this print is in response to an rcon command, add the character
        // to the rcon redirect buffer
+
        if (rcon_redirect && rcon_redirect_bufferpos < (int)sizeof(rcon_redirect_buffer) - 1)
                rcon_redirect_buffer[rcon_redirect_bufferpos++] = c;
        else if(*log_dest_udp.string) // don't duplicate rcon command responses here, these are sent another way
@@ -693,6 +701,8 @@ void Con_Rcon_AddChar(char c)
        }
        else
                log_dest_buffer_pos = 0;
+
+       --log_dest_buffer_appending;
 }
 
 /*