Some minor memory leak fixes.
This commit is contained in:
parent
1fb5a3edc6
commit
3d58f5ed82
@ -235,6 +235,9 @@ void mqtt3_config_cleanup(struct mqtt3_config *config)
|
||||
if(config->listeners[i].crlfile) _mosquitto_free(config->listeners[i].crlfile);
|
||||
if(config->listeners[i].tls_version) _mosquitto_free(config->listeners[i].tls_version);
|
||||
if(config->listeners[i].ssl_ctx) SSL_CTX_free(config->listeners[i].ssl_ctx);
|
||||
#endif
|
||||
#ifdef WITH_WEBSOCKETS
|
||||
if(config->listeners[i].http_dir) _mosquitto_free(config->listeners[i].http_dir);
|
||||
#endif
|
||||
}
|
||||
_mosquitto_free(config->listeners);
|
||||
|
@ -342,6 +342,32 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WITH_WEBSOCKETS
|
||||
for(i=0; i<int_db.config->listener_count; i++){
|
||||
if(int_db.config->listeners[i].ws_context){
|
||||
hack_head = libwebsocket_context_user(int_db.config->listeners[i].ws_context);
|
||||
libwebsocket_context_destroy(int_db.config->listeners[i].ws_context);
|
||||
if(hack_head){
|
||||
while(hack_head){
|
||||
#ifdef WIN32
|
||||
#error FIXME
|
||||
#else
|
||||
if(hack_head->http_dir){
|
||||
_mosquitto_free(hack_head->http_dir);
|
||||
}
|
||||
#endif
|
||||
hack = hack_head->next;
|
||||
_mosquitto_free(hack_head);
|
||||
hack_head = hack;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(int_db.config->listeners[i].ws_protocol){
|
||||
_mosquitto_free(int_db.config->listeners[i].ws_protocol);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
HASH_ITER(hh_id, int_db.contexts_by_id, ctxt, ctxt_tmp){
|
||||
#ifdef WITH_WEBSOCKETS
|
||||
if(!ctxt->wsi){
|
||||
@ -363,21 +389,6 @@ int main(int argc, char *argv[])
|
||||
HASH_DELETE(hh_for_free, int_db.contexts_for_free, ctxt);
|
||||
mqtt3_context_cleanup(&int_db, ctxt, true);
|
||||
}
|
||||
#ifdef WITH_WEBSOCKETS
|
||||
for(i=0; i<int_db.config->listener_count; i++){
|
||||
if(int_db.config->listeners[i].ws_context){
|
||||
hack_head = libwebsocket_context_user(int_db.config->listeners[i].ws_context);
|
||||
libwebsocket_context_destroy(int_db.config->listeners[i].ws_context);
|
||||
if(hack_head){
|
||||
while(hack_head){
|
||||
hack = hack_head->next;
|
||||
_mosquitto_free(hack_head);
|
||||
hack_head = hack;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
mqtt3_db_close(&int_db);
|
||||
|
||||
|
@ -76,6 +76,7 @@ struct _mqtt3_listener {
|
||||
#ifdef WITH_WEBSOCKETS
|
||||
struct libwebsocket_context *ws_context;
|
||||
char *http_dir;
|
||||
struct libwebsocket_protocols *ws_protocol;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -513,6 +513,7 @@ struct libwebsocket_context *mosq_websockets_init(struct _mqtt3_listener *listen
|
||||
#endif
|
||||
user = _mosquitto_calloc(1, sizeof(struct libws_mqtt_hack));
|
||||
if(!user){
|
||||
_mosquitto_free(p);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -523,11 +524,13 @@ struct libwebsocket_context *mosq_websockets_init(struct _mqtt3_listener *listen
|
||||
user->http_dir = realpath(listener->http_dir, NULL);
|
||||
if(!user->http_dir){
|
||||
_mosquitto_free(user);
|
||||
_mosquitto_free(p);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
info.user = user;
|
||||
listener->ws_protocol = p;
|
||||
|
||||
lws_set_log_level(0, NULL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user