75 |
75 |
76 switch (reason) { |
76 switch (reason) { |
77 |
77 |
78 case LWS_CALLBACK_ESTABLISHED: { |
78 case LWS_CALLBACK_ESTABLISHED: { |
79 ws_clients++; |
79 ws_clients++; |
80 syslog(LOG_NOTICE, "ws: new connection, total %d", ws_clients); |
|
81 pss->ringbuffer_tail = ringbuffer_head; |
80 pss->ringbuffer_tail = ringbuffer_head; |
82 pss->wsi = wsi; |
81 pss->wsi = wsi; |
83 break; |
82 break; |
84 } |
83 } |
85 |
84 |
86 case LWS_CALLBACK_PROTOCOL_DESTROY: |
85 case LWS_CALLBACK_PROTOCOL_DESTROY: |
87 syslog(LOG_NOTICE, "ws: protocol cleaning up"); |
86 syslog(LOG_NOTICE, "Websocket: protocol cleaning up"); |
88 for (n = 0; n < sizeof ringbuffer / sizeof ringbuffer[0]; n++) |
87 for (n = 0; n < sizeof ringbuffer / sizeof ringbuffer[0]; n++) |
89 if (ringbuffer[n].payload) |
88 if (ringbuffer[n].payload) |
90 free(ringbuffer[n].payload); |
89 free(ringbuffer[n].payload); |
91 break; |
90 break; |
92 |
91 |
220 |
218 |
221 context = lws_create_context(&info); |
219 context = lws_create_context(&info); |
222 |
220 |
223 if (context == NULL) { |
221 if (context == NULL) { |
224 syslog(LOG_NOTICE, "libwebsocket_create_context() failed"); |
222 syslog(LOG_NOTICE, "libwebsocket_create_context() failed"); |
225 } |
223 return (void *)1; |
226 syslog(LOG_NOTICE, "Websocket server port %d started", info.port); |
224 } |
|
225 syslog(LOG_NOTICE, "Websocket: server started port %d", info.port); |
227 |
226 |
228 /* |
227 /* |
229 * Loop forever until external shutdown variable is set. |
228 * Loop forever until external shutdown variable is set. |
230 */ |
229 */ |
231 while (n >= 0 && ! my_shutdown) { |
230 while (n >= 0 && ! my_shutdown) { |
232 |
231 |
233 n = lws_service(context, 50); |
232 n = lws_service(context, 50); |
234 } |
233 } |
235 lws_context_destroy(context); |
234 lws_context_destroy(context); |
236 |
235 |
237 syslog(LOG_NOTICE, "Thread ws_loop stopped"); |
236 syslog(LOG_NOTICE, "Websocket: server stopped"); |
238 return 0; |
237 return (void *)0; |
239 } |
238 } |
240 |
239 |
241 |
240 |