Add workaround for libwebsockets 3.2.0.

pull/1426/head
Roger A. Light 6 years ago
parent da5ff1746c
commit 096380fbdc

@ -1,3 +1,9 @@
1.6.7 - 201909xx
================
Broker:
- Add workaround for working with libwebsockets 3.2.0.
Client library: Client library:
- Don't use `/` in autogenerated client ids, to avoid confusing with topics. - Don't use `/` in autogenerated client ids, to avoid confusing with topics.

@ -101,6 +101,14 @@ static void temp__expire_websockets_clients(struct mosquitto_db *db)
} }
#endif #endif
#if defined(WITH_WEBSOCKETS) && LWS_LIBRARY_VERSION_NUMBER == 3002000
void lws__sul_callback(struct lws_sorted_usec_list *l)
{
}
static struct lws_sorted_usec_list sul;
#endif
int mosquitto_main_loop(struct mosquitto_db *db, mosq_sock_t *listensock, int listensock_count) int mosquitto_main_loop(struct mosquitto_db *db, mosq_sock_t *listensock, int listensock_count)
{ {
#ifdef WITH_SYS_TREE #ifdef WITH_SYS_TREE
@ -133,6 +141,11 @@ int mosquitto_main_loop(struct mosquitto_db *db, mosq_sock_t *listensock, int li
time_t expiration_check_time = 0; time_t expiration_check_time = 0;
char *id; char *id;
#if defined(WITH_WEBSOCKETS) && LWS_LIBRARY_VERSION_NUMBER == 3002000
memset(&sul, 0, sizeof(struct lws_sorted_usec_list));
#endif
#ifndef WIN32 #ifndef WIN32
sigemptyset(&sigblock); sigemptyset(&sigblock);
sigaddset(&sigblock, SIGINT); sigaddset(&sigblock, SIGINT);
@ -603,6 +616,9 @@ int mosquitto_main_loop(struct mosquitto_db *db, mosq_sock_t *listensock, int li
if(db->config->listeners[i].ws_context){ if(db->config->listeners[i].ws_context){
#if LWS_LIBRARY_VERSION_NUMBER > 3002000 #if LWS_LIBRARY_VERSION_NUMBER > 3002000
libwebsocket_service(db->config->listeners[i].ws_context, -1); libwebsocket_service(db->config->listeners[i].ws_context, -1);
#elif LWS_LIBRARY_VERSION_NUMBER == 3002000
lws_sul_schedule(db->config->listeners[i].ws_context, 0, &sul, lws__sul_callback, 10);
libwebsocket_service(db->config->listeners[i].ws_context, 0);
#else #else
libwebsocket_service(db->config->listeners[i].ws_context, 0); libwebsocket_service(db->config->listeners[i].ws_context, 0);
#endif #endif

@ -37,9 +37,6 @@ Contributors:
# define libwebsocket_protocols lws_protocols # define libwebsocket_protocols lws_protocols
# define libwebsocket_callback_reasons lws_callback_reasons # define libwebsocket_callback_reasons lws_callback_reasons
# define libwebsocket lws # define libwebsocket lws
# if LWS_LIBRARY_VERSION_NUMBER == 3002000
# error "libwebsockets 3.2.0 is not compatible with Mosquitto. <3.1.0, or >=3.2.1 will work fine"
# endif
# else # else
# define lws_pollfd pollfd # define lws_pollfd pollfd
# define lws_service_fd(A, B) libwebsocket_service_fd((A), (B)) # define lws_service_fd(A, B) libwebsocket_service_fd((A), (B))

Loading…
Cancel
Save