mirror of
https://github.com/eclipse-mosquitto/mosquitto.git
synced 2026-02-05 18:50:06 +08:00
Use _SAFE version incase a callback unregisters itself.
This commit is contained in:
@@ -104,7 +104,7 @@ static int plugin__acl_check(struct mosquitto__security_options *opts, struct mo
|
|||||||
{
|
{
|
||||||
int rc = MOSQ_ERR_PLUGIN_DEFER;
|
int rc = MOSQ_ERR_PLUGIN_DEFER;
|
||||||
struct mosquitto_acl_msg msg;
|
struct mosquitto_acl_msg msg;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto_evt_acl_check event_data;
|
struct mosquitto_evt_acl_check event_data;
|
||||||
|
|
||||||
memset(&msg, 0, sizeof(msg));
|
memset(&msg, 0, sizeof(msg));
|
||||||
@@ -114,7 +114,7 @@ static int plugin__acl_check(struct mosquitto__security_options *opts, struct mo
|
|||||||
msg.qos = qos;
|
msg.qos = qos;
|
||||||
msg.retain = retain;
|
msg.retain = retain;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.acl_check, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.acl_check, cb_base, cb_next){
|
||||||
/* FIXME - username deny special chars */
|
/* FIXME - username deny special chars */
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ Contributors:
|
|||||||
static int plugin__basic_auth(struct mosquitto__security_options *opts, struct mosquitto *context)
|
static int plugin__basic_auth(struct mosquitto__security_options *opts, struct mosquitto *context)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_basic_auth event_data;
|
struct mosquitto_evt_basic_auth event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
int rc;
|
int rc;
|
||||||
int rc_final = MOSQ_ERR_PLUGIN_IGNORE;
|
int rc_final = MOSQ_ERR_PLUGIN_IGNORE;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.basic_auth, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.basic_auth, cb_base, cb_next){
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.client = context;
|
event_data.client = context;
|
||||||
event_data.username = context->username;
|
event_data.username = context->username;
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ Contributors:
|
|||||||
static void plugin__handle_connect_single(struct mosquitto__security_options *opts, struct mosquitto *context)
|
static void plugin__handle_connect_single(struct mosquitto__security_options *opts, struct mosquitto *context)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_connect event_data;
|
struct mosquitto_evt_connect event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.client = context;
|
event_data.client = context;
|
||||||
DL_FOREACH(opts->plugin_callbacks.connect, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.connect, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_CONNECT, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_CONNECT, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ Contributors:
|
|||||||
static void plugin__handle_disconnect_single(struct mosquitto__security_options *opts, struct mosquitto *context, int reason)
|
static void plugin__handle_disconnect_single(struct mosquitto__security_options *opts, struct mosquitto *context, int reason)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_disconnect event_data;
|
struct mosquitto_evt_disconnect event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
|
|
||||||
if(context->id == NULL) return;
|
if(context->id == NULL) return;
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.client = context;
|
event_data.client = context;
|
||||||
event_data.reason = reason;
|
event_data.reason = reason;
|
||||||
DL_FOREACH(opts->plugin_callbacks.disconnect, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.disconnect, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_DISCONNECT, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_DISCONNECT, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,13 +31,13 @@ Contributors:
|
|||||||
static int plugin__ext_auth_start(struct mosquitto__security_options *opts, struct mosquitto *context, bool reauth, const void *data_in, uint16_t data_in_len, void **data_out, uint16_t *data_out_len)
|
static int plugin__ext_auth_start(struct mosquitto__security_options *opts, struct mosquitto *context, bool reauth, const void *data_in, uint16_t data_in_len, void **data_out, uint16_t *data_out_len)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_extended_auth event_data;
|
struct mosquitto_evt_extended_auth event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
int rc;
|
int rc;
|
||||||
int rc_final = MOSQ_ERR_PLUGIN_DEFER;
|
int rc_final = MOSQ_ERR_PLUGIN_DEFER;
|
||||||
|
|
||||||
UNUSED(reauth);
|
UNUSED(reauth);
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.ext_auth_start, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.ext_auth_start, cb_base, cb_next){
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.client = context;
|
event_data.client = context;
|
||||||
event_data.auth_method = context->auth_method;
|
event_data.auth_method = context->auth_method;
|
||||||
@@ -104,9 +104,9 @@ static int plugin__ext_auth_continue(struct mosquitto__security_options *opts, s
|
|||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
struct mosquitto_evt_extended_auth event_data;
|
struct mosquitto_evt_extended_auth event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.ext_auth_continue, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.ext_auth_continue, cb_base, cb_next){
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.client = context;
|
event_data.client = context;
|
||||||
event_data.data_in = data_in;
|
event_data.data_in = data_in;
|
||||||
|
|||||||
@@ -128,11 +128,11 @@ static int plugin__security_init_single(mosquitto_plugin_id_t *plugin, bool relo
|
|||||||
int i;
|
int i;
|
||||||
int rc;
|
int rc;
|
||||||
struct mosquitto_evt_reload event_data;
|
struct mosquitto_evt_reload event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
|
|
||||||
if(reload){
|
if(reload){
|
||||||
for(i=0; i<plugin->config.security_option_count; i++){
|
for(i=0; i<plugin->config.security_option_count; i++){
|
||||||
DL_FOREACH(plugin->config.security_options[i]->plugin_callbacks.reload, cb_base){
|
DL_FOREACH_SAFE(plugin->config.security_options[i]->plugin_callbacks.reload, cb_base, cb_next){
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
|
|
||||||
event_data.options = NULL;
|
event_data.options = NULL;
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ struct should_free {
|
|||||||
static int plugin__handle_message_single(struct mosquitto__callback *callbacks, enum mosquitto_plugin_event ev_type, struct should_free *to_free, struct mosquitto *context, struct mosquitto_base_msg *stored)
|
static int plugin__handle_message_single(struct mosquitto__callback *callbacks, enum mosquitto_plugin_event ev_type, struct should_free *to_free, struct mosquitto *context, struct mosquitto_base_msg *stored)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_message event_data;
|
struct mosquitto_evt_message event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
int rc = MOSQ_ERR_SUCCESS;
|
int rc = MOSQ_ERR_SUCCESS;
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
@@ -43,7 +43,7 @@ static int plugin__handle_message_single(struct mosquitto__callback *callbacks,
|
|||||||
event_data.retain = stored->retain;
|
event_data.retain = stored->retain;
|
||||||
event_data.properties = stored->properties;
|
event_data.properties = stored->properties;
|
||||||
|
|
||||||
DL_FOREACH(callbacks, cb_base){
|
DL_FOREACH_SAFE(callbacks, cb_base, cb_next){
|
||||||
rc = cb_base->cb(ev_type, &event_data, cb_base->userdata);
|
rc = cb_base->cb(ev_type, &event_data, cb_base->userdata);
|
||||||
if(rc != MOSQ_ERR_SUCCESS){
|
if(rc != MOSQ_ERR_SUCCESS){
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -34,13 +34,13 @@ Contributors:
|
|||||||
void plugin_persist__handle_restore(void)
|
void plugin_persist__handle_restore(void)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_restore event_data;
|
struct mosquitto_evt_persist_restore event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
opts = &db.config->security_options;
|
opts = &db.config->security_options;
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_restore, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_restore, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_RESTORE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_RESTORE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -49,7 +49,7 @@ void plugin_persist__handle_restore(void)
|
|||||||
void plugin_persist__handle_client_add(struct mosquitto *context)
|
void plugin_persist__handle_client_add(struct mosquitto *context)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_client event_data;
|
struct mosquitto_evt_persist_client event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
struct mosquitto_message_v5 will;
|
struct mosquitto_message_v5 will;
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ void plugin_persist__handle_client_add(struct mosquitto *context)
|
|||||||
event_data.data.retain_available = context->retain_available;
|
event_data.data.retain_available = context->retain_available;
|
||||||
event_data.data.max_packet_size = context->maximum_packet_size;
|
event_data.data.max_packet_size = context->maximum_packet_size;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_client_add, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_client_add, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_ADD, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_ADD, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
context->is_persisted = true;
|
context->is_persisted = true;
|
||||||
@@ -85,7 +85,7 @@ void plugin_persist__handle_client_add(struct mosquitto *context)
|
|||||||
void plugin_persist__handle_client_update(struct mosquitto *context)
|
void plugin_persist__handle_client_update(struct mosquitto *context)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_client event_data;
|
struct mosquitto_evt_persist_client event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
struct mosquitto_message_v5 will;
|
struct mosquitto_message_v5 will;
|
||||||
|
|
||||||
@@ -111,7 +111,7 @@ void plugin_persist__handle_client_update(struct mosquitto *context)
|
|||||||
event_data.data.retain_available = context->retain_available;
|
event_data.data.retain_available = context->retain_available;
|
||||||
event_data.data.max_packet_size = context->maximum_packet_size;
|
event_data.data.max_packet_size = context->maximum_packet_size;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_client_update, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_client_update, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_UPDATE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_UPDATE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -120,7 +120,7 @@ void plugin_persist__handle_client_update(struct mosquitto *context)
|
|||||||
void plugin_persist__handle_client_delete(struct mosquitto *context)
|
void plugin_persist__handle_client_delete(struct mosquitto *context)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_client event_data;
|
struct mosquitto_evt_persist_client event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(context->is_persisted == false
|
if(context->is_persisted == false
|
||||||
@@ -135,7 +135,7 @@ void plugin_persist__handle_client_delete(struct mosquitto *context)
|
|||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.data.clientid = context->id;
|
event_data.data.clientid = context->id;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_client_delete, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_client_delete, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_DELETE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_DELETE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
context->is_persisted = false;
|
context->is_persisted = false;
|
||||||
@@ -145,7 +145,7 @@ void plugin_persist__handle_client_delete(struct mosquitto *context)
|
|||||||
void plugin_persist__handle_subscription_add(struct mosquitto *context, const struct mosquitto_subscription *sub)
|
void plugin_persist__handle_subscription_add(struct mosquitto *context, const struct mosquitto_subscription *sub)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_subscription event_data;
|
struct mosquitto_evt_persist_subscription event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(db.shutdown || context->is_persisted == false) return;
|
if(db.shutdown || context->is_persisted == false) return;
|
||||||
@@ -157,7 +157,7 @@ void plugin_persist__handle_subscription_add(struct mosquitto *context, const st
|
|||||||
event_data.data.identifier = sub->identifier;
|
event_data.data.identifier = sub->identifier;
|
||||||
event_data.data.options = sub->options;
|
event_data.data.options = sub->options;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_subscription_add, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_subscription_add, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_SUBSCRIPTION_ADD, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_SUBSCRIPTION_ADD, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ void plugin_persist__handle_subscription_add(struct mosquitto *context, const st
|
|||||||
void plugin_persist__handle_subscription_delete(struct mosquitto *context, char *sub)
|
void plugin_persist__handle_subscription_delete(struct mosquitto *context, char *sub)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_subscription event_data;
|
struct mosquitto_evt_persist_subscription event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(db.shutdown || context->is_persisted == false) return;
|
if(db.shutdown || context->is_persisted == false) return;
|
||||||
@@ -177,7 +177,7 @@ void plugin_persist__handle_subscription_delete(struct mosquitto *context, char
|
|||||||
event_data.data.clientid = context->id;
|
event_data.data.clientid = context->id;
|
||||||
event_data.data.topic_filter = sub;
|
event_data.data.topic_filter = sub;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_subscription_delete, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_subscription_delete, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_SUBSCRIPTION_DELETE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_SUBSCRIPTION_DELETE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -186,7 +186,7 @@ void plugin_persist__handle_subscription_delete(struct mosquitto *context, char
|
|||||||
void plugin_persist__handle_client_msg_add(struct mosquitto *context, const struct mosquitto__client_msg *client_msg)
|
void plugin_persist__handle_client_msg_add(struct mosquitto *context, const struct mosquitto__client_msg *client_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_client_msg event_data;
|
struct mosquitto_evt_persist_client_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(context->is_persisted == false
|
if(context->is_persisted == false
|
||||||
@@ -209,7 +209,7 @@ void plugin_persist__handle_client_msg_add(struct mosquitto *context, const stru
|
|||||||
event_data.data.direction = (uint8_t)client_msg->data.direction;
|
event_data.data.direction = (uint8_t)client_msg->data.direction;
|
||||||
event_data.data.state = (uint8_t)client_msg->data.state;
|
event_data.data.state = (uint8_t)client_msg->data.state;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_client_msg_add, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_client_msg_add, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_MSG_ADD, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_MSG_ADD, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,7 +218,7 @@ void plugin_persist__handle_client_msg_add(struct mosquitto *context, const stru
|
|||||||
void plugin_persist__handle_client_msg_delete(struct mosquitto *context, const struct mosquitto__client_msg *client_msg)
|
void plugin_persist__handle_client_msg_delete(struct mosquitto *context, const struct mosquitto__client_msg *client_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_client_msg event_data;
|
struct mosquitto_evt_persist_client_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(context->is_persisted == false
|
if(context->is_persisted == false
|
||||||
@@ -239,7 +239,7 @@ void plugin_persist__handle_client_msg_delete(struct mosquitto *context, const s
|
|||||||
event_data.data.store_id = client_msg->base_msg->data.store_id;
|
event_data.data.store_id = client_msg->base_msg->data.store_id;
|
||||||
event_data.data.direction = (uint8_t)client_msg->data.direction;
|
event_data.data.direction = (uint8_t)client_msg->data.direction;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_client_msg_delete, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_client_msg_delete, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_MSG_DELETE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_MSG_DELETE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -248,7 +248,7 @@ void plugin_persist__handle_client_msg_delete(struct mosquitto *context, const s
|
|||||||
void plugin_persist__handle_client_msg_update(struct mosquitto *context, const struct mosquitto__client_msg *client_msg)
|
void plugin_persist__handle_client_msg_update(struct mosquitto *context, const struct mosquitto__client_msg *client_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_client_msg event_data;
|
struct mosquitto_evt_persist_client_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(context->is_persisted == false
|
if(context->is_persisted == false
|
||||||
@@ -270,7 +270,7 @@ void plugin_persist__handle_client_msg_update(struct mosquitto *context, const s
|
|||||||
event_data.data.direction = (uint8_t)client_msg->data.direction;
|
event_data.data.direction = (uint8_t)client_msg->data.direction;
|
||||||
event_data.data.qos = client_msg->data.qos;
|
event_data.data.qos = client_msg->data.qos;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_client_msg_update, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_client_msg_update, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_MSG_UPDATE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_CLIENT_MSG_UPDATE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -279,7 +279,7 @@ void plugin_persist__handle_client_msg_update(struct mosquitto *context, const s
|
|||||||
void plugin_persist__handle_base_msg_add(struct mosquitto__base_msg *base_msg)
|
void plugin_persist__handle_base_msg_add(struct mosquitto__base_msg *base_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_base_msg event_data;
|
struct mosquitto_evt_persist_base_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(base_msg->stored || db.shutdown) return;
|
if(base_msg->stored || db.shutdown) return;
|
||||||
@@ -304,7 +304,7 @@ void plugin_persist__handle_base_msg_add(struct mosquitto__base_msg *base_msg)
|
|||||||
event_data.data.qos = base_msg->data.qos;
|
event_data.data.qos = base_msg->data.qos;
|
||||||
event_data.data.retain = base_msg->data.retain;
|
event_data.data.retain = base_msg->data.retain;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_base_msg_add, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_base_msg_add, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_BASE_MSG_ADD, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_BASE_MSG_ADD, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
base_msg->stored = true;
|
base_msg->stored = true;
|
||||||
@@ -314,7 +314,7 @@ void plugin_persist__handle_base_msg_add(struct mosquitto__base_msg *base_msg)
|
|||||||
void plugin_persist__handle_base_msg_delete(struct mosquitto__base_msg *base_msg)
|
void plugin_persist__handle_base_msg_delete(struct mosquitto__base_msg *base_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_base_msg event_data;
|
struct mosquitto_evt_persist_base_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(base_msg->stored == false || db.shutdown) return;
|
if(base_msg->stored == false || db.shutdown) return;
|
||||||
@@ -324,7 +324,7 @@ void plugin_persist__handle_base_msg_delete(struct mosquitto__base_msg *base_msg
|
|||||||
|
|
||||||
event_data.data.store_id = base_msg->data.store_id;
|
event_data.data.store_id = base_msg->data.store_id;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_base_msg_delete, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_base_msg_delete, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_BASE_MSG_DELETE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_BASE_MSG_DELETE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
base_msg->stored = false;
|
base_msg->stored = false;
|
||||||
@@ -334,7 +334,7 @@ void plugin_persist__handle_base_msg_delete(struct mosquitto__base_msg *base_msg
|
|||||||
void plugin_persist__handle_retain_msg_set(struct mosquitto__base_msg *base_msg)
|
void plugin_persist__handle_retain_msg_set(struct mosquitto__base_msg *base_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_retain_msg event_data;
|
struct mosquitto_evt_persist_retain_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(db.shutdown) return;
|
if(db.shutdown) return;
|
||||||
@@ -345,7 +345,7 @@ void plugin_persist__handle_retain_msg_set(struct mosquitto__base_msg *base_msg)
|
|||||||
event_data.store_id = base_msg->data.store_id;
|
event_data.store_id = base_msg->data.store_id;
|
||||||
event_data.topic = base_msg->data.topic;
|
event_data.topic = base_msg->data.topic;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_retain_msg_set, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_retain_msg_set, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_RETAIN_MSG_SET, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_RETAIN_MSG_SET, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -354,7 +354,7 @@ void plugin_persist__handle_retain_msg_set(struct mosquitto__base_msg *base_msg)
|
|||||||
void plugin_persist__handle_retain_msg_delete(struct mosquitto__base_msg *base_msg)
|
void plugin_persist__handle_retain_msg_delete(struct mosquitto__base_msg *base_msg)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_persist_retain_msg event_data;
|
struct mosquitto_evt_persist_retain_msg event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
struct mosquitto__security_options *opts;
|
struct mosquitto__security_options *opts;
|
||||||
|
|
||||||
if(db.shutdown) return;
|
if(db.shutdown) return;
|
||||||
@@ -364,7 +364,7 @@ void plugin_persist__handle_retain_msg_delete(struct mosquitto__base_msg *base_m
|
|||||||
|
|
||||||
event_data.topic = base_msg->data.topic;
|
event_data.topic = base_msg->data.topic;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.persist_retain_msg_delete, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.persist_retain_msg_delete, cb_base, cb_next){
|
||||||
cb_base->cb(MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE, &event_data, cb_base->userdata);
|
cb_base->cb(MOSQ_EVT_PERSIST_RETAIN_MSG_DELETE, &event_data, cb_base->userdata);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,11 +31,11 @@ Contributors:
|
|||||||
static int plugin__psk_key_get(struct mosquitto__security_options *opts, struct mosquitto *context, const char *hint, const char *identity, char *key, int max_key_len)
|
static int plugin__psk_key_get(struct mosquitto__security_options *opts, struct mosquitto *context, const char *hint, const char *identity, char *key, int max_key_len)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_psk_key event_data;
|
struct mosquitto_evt_psk_key event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
int rc;
|
int rc;
|
||||||
int rc_final = MOSQ_ERR_SUCCESS;
|
int rc_final = MOSQ_ERR_SUCCESS;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.psk_key, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.psk_key, cb_base, cb_next){
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
event_data.client = context;
|
event_data.client = context;
|
||||||
event_data.hint = hint;
|
event_data.hint = hint;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ Contributors:
|
|||||||
static int plugin__handle_subscribe_single(struct mosquitto__security_options *opts, struct mosquitto *context, struct mosquitto_subscription *sub)
|
static int plugin__handle_subscribe_single(struct mosquitto__security_options *opts, struct mosquitto *context, struct mosquitto_subscription *sub)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_subscribe event_data;
|
struct mosquitto_evt_subscribe event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
int rc = MOSQ_ERR_SUCCESS;
|
int rc = MOSQ_ERR_SUCCESS;
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
@@ -37,7 +37,7 @@ static int plugin__handle_subscribe_single(struct mosquitto__security_options *o
|
|||||||
event_data.data.identifier = sub->identifier;
|
event_data.data.identifier = sub->identifier;
|
||||||
event_data.data.properties = sub->properties;
|
event_data.data.properties = sub->properties;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.subscribe, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.subscribe, cb_base, cb_next){
|
||||||
rc = cb_base->cb(MOSQ_EVT_SUBSCRIBE, &event_data, cb_base->userdata);
|
rc = cb_base->cb(MOSQ_EVT_SUBSCRIBE, &event_data, cb_base->userdata);
|
||||||
if(rc != MOSQ_ERR_SUCCESS){
|
if(rc != MOSQ_ERR_SUCCESS){
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -29,11 +29,11 @@ Contributors:
|
|||||||
static void plugin__handle_tick_single(struct mosquitto__security_options *opts)
|
static void plugin__handle_tick_single(struct mosquitto__security_options *opts)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_tick event_data;
|
struct mosquitto_evt_tick event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.tick, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.tick, cb_base, cb_next){
|
||||||
mosquitto_time_ns(&event_data.now_s, &event_data.now_ns);
|
mosquitto_time_ns(&event_data.now_s, &event_data.now_ns);
|
||||||
event_data.next_s = 0;
|
event_data.next_s = 0;
|
||||||
event_data.next_ms = 0;
|
event_data.next_ms = 0;
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ Contributors:
|
|||||||
static int plugin__handle_unsubscribe_single(struct mosquitto__security_options *opts, struct mosquitto *context, struct mosquitto_subscription *sub)
|
static int plugin__handle_unsubscribe_single(struct mosquitto__security_options *opts, struct mosquitto *context, struct mosquitto_subscription *sub)
|
||||||
{
|
{
|
||||||
struct mosquitto_evt_unsubscribe event_data;
|
struct mosquitto_evt_unsubscribe event_data;
|
||||||
struct mosquitto__callback *cb_base;
|
struct mosquitto__callback *cb_base, *cb_next;
|
||||||
int rc = MOSQ_ERR_SUCCESS;
|
int rc = MOSQ_ERR_SUCCESS;
|
||||||
|
|
||||||
memset(&event_data, 0, sizeof(event_data));
|
memset(&event_data, 0, sizeof(event_data));
|
||||||
@@ -35,7 +35,7 @@ static int plugin__handle_unsubscribe_single(struct mosquitto__security_options
|
|||||||
event_data.data.topic_filter = sub->topic_filter;
|
event_data.data.topic_filter = sub->topic_filter;
|
||||||
event_data.data.properties = sub->properties;
|
event_data.data.properties = sub->properties;
|
||||||
|
|
||||||
DL_FOREACH(opts->plugin_callbacks.unsubscribe, cb_base){
|
DL_FOREACH_SAFE(opts->plugin_callbacks.unsubscribe, cb_base, cb_next){
|
||||||
rc = cb_base->cb(MOSQ_EVT_UNSUBSCRIBE, &event_data, cb_base->userdata);
|
rc = cb_base->cb(MOSQ_EVT_UNSUBSCRIBE, &event_data, cb_base->userdata);
|
||||||
if(rc != MOSQ_ERR_SUCCESS){
|
if(rc != MOSQ_ERR_SUCCESS){
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user