mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	Debug output uses local buffer to avoid clashes between threads.
This commit is contained in:
		@@ -309,22 +309,15 @@ die(const char *msg, ...)
 | 
			
		||||
void
 | 
			
		||||
debug(const char *msg, ...)
 | 
			
		||||
{
 | 
			
		||||
#define MAX_DEBUG_BUFSIZE       65536
 | 
			
		||||
#define MAX_DEBUG_BUFSIZE 16384
 | 
			
		||||
  va_list args;
 | 
			
		||||
  static uint bufsize = 4096;
 | 
			
		||||
  static char *buf = NULL;
 | 
			
		||||
 | 
			
		||||
  if (!buf)
 | 
			
		||||
    buf = mb_alloc(&root_pool, bufsize);
 | 
			
		||||
  char buf[MAX_DEBUG_BUFSIZE];
 | 
			
		||||
 | 
			
		||||
  va_start(args, msg);
 | 
			
		||||
  if (dbgf)
 | 
			
		||||
    {
 | 
			
		||||
      while (bvsnprintf(buf, bufsize, msg, args) < 0)
 | 
			
		||||
        if (bufsize >= MAX_DEBUG_BUFSIZE)
 | 
			
		||||
          bug("Extremely long debug output, split it.");
 | 
			
		||||
        else
 | 
			
		||||
          buf = mb_realloc(buf, (bufsize *= 2));
 | 
			
		||||
      if (bvsnprintf(buf, MAX_DEBUG_BUFSIZE, msg, args) < 0)
 | 
			
		||||
	bug("Extremely long debug output, split it.");
 | 
			
		||||
 | 
			
		||||
      fputs(buf, dbgf);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user