|  | @@ -912,38 +912,43 @@ typedef struct tagTHREADNAME_INFO
 | 
	
		
			
				|  |  |  #include <sys/prctl.h>
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -void mg_set_thread_name(const char* threadName)
 | 
	
		
			
				|  |  | +void mg_set_thread_name(const char* name)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | +    char threadName[16]; /* Max. thread length in Linux/OSX/.. */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (snprintf(threadName, sizeof(threadName), "civetweb-%s", name)<0) return;
 | 
	
		
			
				|  |  | +    threadName[sizeof(threadName)-1] = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  #if defined(_WIN32)
 | 
	
		
			
				|  |  |  #if defined(_MSC_VER)
 | 
	
		
			
				|  |  | -   /* Windows and Visual Studio Compiler */
 | 
	
		
			
				|  |  | -   THREADNAME_INFO info;
 | 
	
		
			
				|  |  | -   info.dwType     = 0x1000;
 | 
	
		
			
				|  |  | -   info.szName     = threadName;
 | 
	
		
			
				|  |  | -   info.dwThreadID = -1;
 | 
	
		
			
				|  |  | -   info.dwFlags    = 0;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   __try
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -      RaiseException(0x406D1388, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info);
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -   __except(EXCEPTION_EXECUTE_HANDLER)
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | +    /* Windows and Visual Studio Compiler */
 | 
	
		
			
				|  |  | +    __try
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        THREADNAME_INFO info;
 | 
	
		
			
				|  |  | +        info.dwType     = 0x1000;
 | 
	
		
			
				|  |  | +        info.szName     = threadName;
 | 
	
		
			
				|  |  | +        info.dwThreadID = -1;
 | 
	
		
			
				|  |  | +        info.dwFlags    = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        RaiseException(0x406D1388, 0, sizeof(info)/sizeof(ULONG_PTR), (ULONG_PTR*)&info);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    __except(EXCEPTION_EXECUTE_HANDLER)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  #elif defined(__MINGW32__)
 | 
	
		
			
				|  |  |     /* No option known to set thread name for MinGW */
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  #elif defined(__linux__)
 | 
	
		
			
				|  |  | -   /* Not Windows */
 | 
	
		
			
				|  |  | +   /* Linux (TODO: test) */
 | 
	
		
			
				|  |  |     (void)prctl(PR_SET_NAME,threadName,0,0,0);
 | 
	
		
			
				|  |  |  #elif defined(__APPLE__) || defined(__MACH__)
 | 
	
		
			
				|  |  | -   /* OS X */
 | 
	
		
			
				|  |  | +   /* OS X (TODO: test) */
 | 
	
		
			
				|  |  |     (void)pthread_setname_np(threadName);
 | 
	
		
			
				|  |  |  #elif defined(BSD) || defined(__FreeBSD__) || defined(__OpenBSD__)
 | 
	
		
			
				|  |  | -   /* BSD */
 | 
	
		
			
				|  |  | +   /* BSD (TODO: test) */
 | 
	
		
			
				|  |  |     pthread_set_name_np(pthread_self(), threadName);
 | 
	
		
			
				|  |  |  #else
 | 
	
		
			
				|  |  | -   /* POSIX */
 | 
	
		
			
				|  |  | +   /* POSIX (TODO: test) */
 | 
	
		
			
				|  |  |     (void)pthread_setname_np(pthread_self(), threadName);
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  |  }
 | 
	
	
		
			
				|  | @@ -5264,7 +5269,7 @@ static void read_websocket(struct mg_connection *conn)
 | 
	
		
			
				|  |  |      char *data = mem;
 | 
	
		
			
				|  |  |      unsigned char mop;  /* mask flag and opcode */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    mg_set_thread_name("Civetweb Websocket");
 | 
	
		
			
				|  |  | +    mg_set_thread_name("wsock");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Loop continuously, reading messages from the socket, invoking the
 | 
	
		
			
				|  |  |         callback, and waiting repeatedly until an error occurs. */
 | 
	
	
		
			
				|  | @@ -5385,6 +5390,8 @@ static void read_websocket(struct mg_connection *conn)
 | 
	
		
			
				|  |  |              conn->data_len += n;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    mg_set_thread_name("worker");
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  int mg_websocket_write(struct mg_connection* conn, int opcode, const char* data, size_t dataLen)
 | 
	
	
		
			
				|  | @@ -6860,7 +6867,7 @@ static void *worker_thread_run(void *thread_func_param)
 | 
	
		
			
				|  |  |      struct mg_connection *conn;
 | 
	
		
			
				|  |  |      struct mg_workerTLS tls;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    mg_set_thread_name("Civetweb Worker");
 | 
	
		
			
				|  |  | +    mg_set_thread_name("worker");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      tls.is_master = 0;
 | 
	
		
			
				|  |  |  #if defined(_WIN32) && !defined(__SYMBIAN32__)
 | 
	
	
		
			
				|  | @@ -7027,7 +7034,7 @@ static void master_thread_run(void *thread_func_param)
 | 
	
		
			
				|  |  |      int i;
 | 
	
		
			
				|  |  |      int workerthreadcount;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    mg_set_thread_name("Civetweb Master");
 | 
	
		
			
				|  |  | +    mg_set_thread_name("master");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /* Increase priority of the master thread */
 | 
	
		
			
				|  |  |  #if defined(_WIN32)
 |