| 
					
				 | 
			
			
				@@ -138,15 +138,14 @@ void connection_close_handler(struct mg_connection *conn) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-static int runLoop = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static void * eventMain(void * arg) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     char msg[256];
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     struct mg_context *ctx = (struct mg_context *)arg;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tWebSockContext *ws_ctx = (tWebSockContext*) mg_get_user_data(ctx);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    runLoop = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    while (runLoop) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ws_ctx->runLoop = 1;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    while (ws_ctx->runLoop) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         time_t t = time(0);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         struct tm * timestr = localtime(&t);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sprintf(msg,"title %s",asctime(timestr));
 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -174,14 +173,15 @@ void websock_send_broadcast(struct mg_context *ctx, const char * data, int data_ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void websock_init_lib(struct mg_context *ctx) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     tWebSockContext *ws_ctx = (tWebSockContext*) mg_get_user_data(ctx);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    memset(ws_ctx->socketList,0,sizeof(ws_ctx->socketList));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    memset(ws_ctx,0,sizeof(*ws_ctx));
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* todo: use mg_start_thread_id instead of mg_start_thread */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     mg_start_thread(eventMain, ctx);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 void websock_exit_lib(struct mg_context *ctx) {
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    runLoop = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    tWebSockContext *ws_ctx = (tWebSockContext*) mg_get_user_data(ctx);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ws_ctx->runLoop = 0;
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* todo: wait for the thread instead of a timeout */
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     mg_sleep(2000);
 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }
 
			 |