|  | @@ -1575,26 +1575,26 @@ mg_snprintf(const struct mg_connection *conn,
 | 
	
		
			
				|  |  |  static int64_t
 | 
	
		
			
				|  |  |  get_random(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -    static uint64_t lfsr = 0;
 | 
	
		
			
				|  |  | -    static uint64_t lcg = 0;
 | 
	
		
			
				|  |  | -    struct timespec now;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    memset(&now, 0, sizeof(now));
 | 
	
		
			
				|  |  | -    clock_gettime(CLOCK_MONOTONIC, &now);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    if (lfsr == 0) {
 | 
	
		
			
				|  |  | -        lfsr = (((uint64_t)now.tv_sec) << 21) ^ (uint64_t)now.tv_nsec
 | 
	
		
			
				|  |  | -               ^ (uint64_t)(ptrdiff_t)&now;
 | 
	
		
			
				|  |  | -        lcg = (((uint64_t)now.tv_sec) << 25) + (uint64_t)now.tv_nsec
 | 
	
		
			
				|  |  | -              + (uint64_t)(ptrdiff_t)&now;
 | 
	
		
			
				|  |  | -    } else {
 | 
	
		
			
				|  |  | -        lfsr = (lfsr >> 1)
 | 
	
		
			
				|  |  | -               | ((((lfsr >> 0) ^ (lfsr >> 1) ^ (lfsr >> 3) ^ (lfsr >> 4)) & 1)
 | 
	
		
			
				|  |  | -                  << 63);
 | 
	
		
			
				|  |  | -        lcg = lcg * 6364136223846793005 + 1442695040888963407;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +	static uint64_t lfsr = 0;
 | 
	
		
			
				|  |  | +	static uint64_t lcg = 0;
 | 
	
		
			
				|  |  | +	struct timespec now;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	memset(&now, 0, sizeof(now));
 | 
	
		
			
				|  |  | +	clock_gettime(CLOCK_MONOTONIC, &now);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +	if (lfsr == 0) {
 | 
	
		
			
				|  |  | +		lfsr = (((uint64_t)now.tv_sec) << 21) ^ (uint64_t)now.tv_nsec
 | 
	
		
			
				|  |  | +		       ^ (uint64_t)(ptrdiff_t)&now;
 | 
	
		
			
				|  |  | +		lcg = (((uint64_t)now.tv_sec) << 25) + (uint64_t)now.tv_nsec
 | 
	
		
			
				|  |  | +		      + (uint64_t)(ptrdiff_t)&now;
 | 
	
		
			
				|  |  | +	} else {
 | 
	
		
			
				|  |  | +		lfsr = (lfsr >> 1)
 | 
	
		
			
				|  |  | +		       | ((((lfsr >> 0) ^ (lfsr >> 1) ^ (lfsr >> 3) ^ (lfsr >> 4)) & 1)
 | 
	
		
			
				|  |  | +		          << 63);
 | 
	
		
			
				|  |  | +		lcg = lcg * 6364136223846793005 + 1442695040888963407;
 | 
	
		
			
				|  |  | +	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    return (lfsr ^ lcg ^ now.tv_nsec);
 | 
	
		
			
				|  |  | +	return (lfsr ^ lcg ^ now.tv_nsec);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -8289,7 +8289,7 @@ mg_websocket_client_write(struct mg_connection *conn,
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |  	int retval = -1;
 | 
	
		
			
				|  |  |  	char *masked_data = (char *)mg_malloc(((dataLen + 7) / 4) * 4);
 | 
	
		
			
				|  |  | -    uint32_t masking_key = (uint32_t)get_random();
 | 
	
		
			
				|  |  | +	uint32_t masking_key = (uint32_t)get_random();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if (masked_data == NULL) {
 | 
	
		
			
				|  |  |  		/* Return -1 in an error case */
 | 
	
	
		
			
				|  | @@ -11859,8 +11859,8 @@ mg_start(const struct mg_callbacks *callbacks,
 | 
	
		
			
				|  |  |  		return NULL;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /* Random number generator will initialize at the first call */
 | 
	
		
			
				|  |  | -    (void)get_random();
 | 
	
		
			
				|  |  | +	/* Random number generator will initialize at the first call */
 | 
	
		
			
				|  |  | +	(void)get_random();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	if (mg_atomic_inc(&sTlsInit) == 1) {
 | 
	
		
			
				|  |  |  
 |