Fix support for libwebsockets 3.x.

This commit is contained in:
Roger A. Light 2019-08-29 12:12:05 +01:00
parent 4f3b4f8d44
commit 4c4ca38938
2 changed files with 4 additions and 11 deletions

View File

@ -1,6 +1,7 @@
Broker: Broker:
- Fix v5 DISCONNECT packets with remaining length == 2 being treated as a - Fix v5 DISCONNECT packets with remaining length == 2 being treated as a
protocol error. Closes #1367. protocol error. Closes #1367.
- Fix support for libwebsockets 3.x.
Build: Build:
- Fix missing function warnings on NetBSD. - Fix missing function warnings on NetBSD.

View File

@ -180,7 +180,7 @@ static int callback_mqtt(struct libwebsocket_context *context,
struct mosquitto_db *db; struct mosquitto_db *db;
struct mosquitto *mosq = NULL; struct mosquitto *mosq = NULL;
struct mosquitto__packet *packet; struct mosquitto__packet *packet;
int count, i, j; int count;
const struct libwebsocket_protocols *p; const struct libwebsocket_protocols *p;
struct libws_mqtt_data *u = (struct libws_mqtt_data *)user; struct libws_mqtt_data *u = (struct libws_mqtt_data *)user;
size_t pos; size_t pos;
@ -195,16 +195,7 @@ static int callback_mqtt(struct libwebsocket_context *context,
mosq = context__init(db, WEBSOCKET_CLIENT); mosq = context__init(db, WEBSOCKET_CLIENT);
if(mosq){ if(mosq){
p = libwebsockets_get_protocol(wsi); p = libwebsockets_get_protocol(wsi);
for (i=0; i<db->config->listener_count; i++){ mosq->listener = p->user;
if (db->config->listeners[i].protocol == mp_websockets) {
for (j=0; db->config->listeners[i].ws_protocol[j].name; j++){
if (p == &db->config->listeners[i].ws_protocol[j]){
mosq->listener = &db->config->listeners[i];
mosq->listener->client_count++;
}
}
}
}
if(!mosq->listener){ if(!mosq->listener){
mosquitto__free(mosq); mosquitto__free(mosq);
return -1; return -1;
@ -715,6 +706,7 @@ struct libwebsocket_context *mosq_websockets_init(struct mosquitto__listener *li
p[i].callback = protocols[i].callback; p[i].callback = protocols[i].callback;
p[i].per_session_data_size = protocols[i].per_session_data_size; p[i].per_session_data_size = protocols[i].per_session_data_size;
p[i].rx_buffer_size = protocols[i].rx_buffer_size; p[i].rx_buffer_size = protocols[i].rx_buffer_size;
p[i].user = listener;
} }
memset(&info, 0, sizeof(info)); memset(&info, 0, sizeof(info));