pthread_mutex_destroy(&client->mutex);
+#if LWS_LIBRARY_VERSION_NUMBER >= 3002000
+ lws_sul_schedule(context, 0, &client->sul_stagger, NULL, LWS_SET_TIMER_USEC_CANCEL);
+#endif
+
// remove from client list
tty_client_remove(client);
}
+#if LWS_LIBRARY_VERSION_NUMBER >= 3002000
+void
+stagger_callback(lws_sorted_usec_list_t *sul) {
+ struct tty_client *client = lws_container_of(sul, struct tty_client, sul_stagger);
+
+ lws_callback_on_writable(client->wsi);
+ lws_sul_schedule(context, 0, sul, stagger_callback, 10 * LWS_US_PER_MS);
+}
+#endif
+
void *
thread_run_command(void *args) {
struct tty_client *client = (struct tty_client *) args;
// check if there are more fragmented messages
if (lws_remaining_packet_payload(wsi) > 0 || !lws_is_final_fragment(wsi)) {
return 0;
+ } else {
+ #if LWS_LIBRARY_VERSION_NUMBER >= 3002000
+ lws_sul_schedule(context, 0, &client->sul_stagger, stagger_callback, 10);
+ #endif
}
switch (command) {
#define TTYD_VERSION "unknown"
#endif
-#if LWS_LIBRARY_VERSION_NUMBER == 3002000
-#error "libwebsockets 3.2.0 is not compatible with ttyd."
-#endif
-
volatile bool force_exit = false;
struct lws_context *context;
struct tty_server *server;
}
pthread_mutex_unlock(&server->mutex);
lws_service(context, 10);
+#if LWS_LIBRARY_VERSION_NUMBER >= 3002000
+ usleep(10 * LWS_US_PER_MS);
+#endif
}
lws_context_destroy(context);