Fix $CONTROL plugin unregistering.

pull/1865/head
Roger A. Light 5 years ago
parent 711d24221d
commit c927446264

@ -110,7 +110,7 @@ int control__register_callback(struct mosquitto_db *db, struct mosquitto__securi
#endif #endif
} }
int control__unregister_callback(struct mosquitto_db *db, struct mosquitto__callback *cb_base, MOSQ_FUNC_generic_callback cb_func, const char *topic) int control__unregister_callback(struct mosquitto_db *db, struct mosquitto__security_options *opts, MOSQ_FUNC_generic_callback cb_func, const char *topic)
{ {
#ifdef WITH_CONTROL #ifdef WITH_CONTROL
struct mosquitto__callback *cb_found; struct mosquitto__callback *cb_found;
@ -121,9 +121,9 @@ int control__unregister_callback(struct mosquitto_db *db, struct mosquitto__call
if(topic_len == 0 || topic_len > 65535) return MOSQ_ERR_INVAL; if(topic_len == 0 || topic_len > 65535) return MOSQ_ERR_INVAL;
if(strncmp(topic, "$CONTROL/", strlen("$CONTROL/"))) return MOSQ_ERR_INVAL; if(strncmp(topic, "$CONTROL/", strlen("$CONTROL/"))) return MOSQ_ERR_INVAL;
HASH_FIND(hh, cb_base, topic, topic_len, cb_found); HASH_FIND(hh, opts->plugin_callbacks.control, topic, topic_len, cb_found);
if(cb_found){ if(cb_found){
HASH_DELETE(hh, cb_base, cb_found); HASH_DELETE(hh, opts->plugin_callbacks.control, cb_found);
mosquitto__free(cb_found->data); mosquitto__free(cb_found->data);
mosquitto__free(cb_found); mosquitto__free(cb_found);

@ -742,7 +742,7 @@ int control__process(struct mosquitto_db *db, struct mosquitto *context, struct
void control__cleanup(struct mosquitto_db *db); void control__cleanup(struct mosquitto_db *db);
#endif #endif
int control__register_callback(struct mosquitto_db *db, struct mosquitto__security_options *opts, MOSQ_FUNC_generic_callback cb_func, const char *topic, void *userdata); int control__register_callback(struct mosquitto_db *db, struct mosquitto__security_options *opts, MOSQ_FUNC_generic_callback cb_func, const char *topic, void *userdata);
int control__unregister_callback(struct mosquitto_db *db, struct mosquitto__callback *cb_base, MOSQ_FUNC_generic_callback cb_func, const char *topic); int control__unregister_callback(struct mosquitto_db *db, struct mosquitto__security_options *opts, MOSQ_FUNC_generic_callback cb_func, const char *topic);
/* ============================================================ /* ============================================================

@ -245,8 +245,7 @@ int mosquitto_callback_unregister(mosquitto_plugin_id_t *identifier, int event,
cb_base = &security_options->plugin_callbacks.ext_auth_continue; cb_base = &security_options->plugin_callbacks.ext_auth_continue;
break; break;
case MOSQ_EVT_CONTROL: case MOSQ_EVT_CONTROL:
cb_base = &security_options->plugin_callbacks.control; return control__unregister_callback(db, security_options, cb_func, data);
return control__unregister_callback(db, *cb_base, cb_func, data);
break; break;
case MOSQ_EVT_MESSAGE: case MOSQ_EVT_MESSAGE:
cb_base = &security_options->plugin_callbacks.message; cb_base = &security_options->plugin_callbacks.message;

Loading…
Cancel
Save