Formatting: Double indent continuation

This commit is contained in:
Roger A. Light
2025-09-17 12:03:06 +01:00
parent 5e20df0031
commit 883fdb2ad2
39 changed files with 284 additions and 257 deletions
+2 -2
View File
@@ -130,9 +130,9 @@ int client_request_response(struct mosq_ctrl *ctrl)
if(ctrl->cfg.cafile == NULL && ctrl->cfg.capath == NULL && !ctrl->cfg.tls_use_os_certs && ctrl->cfg.port != 8883
# ifdef FINAL_WITH_TLS_PSK
&& !ctrl->cfg.psk
&& !ctrl->cfg.psk
# endif
){
){
fprintf(stderr, "Warning: You are running mosquitto_ctrl without encryption.\nThis means all of the configuration changes you are making are visible on the network, including passwords.\n\n");
}
+4 -4
View File
@@ -62,8 +62,8 @@ const char ANSI_MODULE_dark[] = "\001\e[38;5;214m\002";
const char ANSI_INPUT_dark[] = "\001\e[38;5;80m\002";
const char ANSI_ERROR_dark[] = "\001\e[38;5;198m\002";
const char *ANSI_LABEL_dark[] = {
"\001\e[38;5;207m\002",
"\001\e[38;5;219m\002",
"\001\e[38;5;207m\002",
"\001\e[38;5;219m\002",
};
const char ANSI_TOPIC_dark[] = "\001\e[93m\002";
const char ANSI_POSITIVE_dark[] = "\001\e[92m\002";
@@ -74,8 +74,8 @@ const char ANSI_MODULE_light[] = "\001\e[38;5;130m\002";
const char ANSI_INPUT_light[] = "\001\e[38;5;27m\002";
const char ANSI_ERROR_light[] = "\001\e[38;5;196m\002";
const char *ANSI_LABEL_light[] = {
"\001\e[38;5;165m\002",
"\001\e[38;5;171m\002",
"\001\e[38;5;165m\002",
"\001\e[38;5;171m\002",
};
const char ANSI_TOPIC_light[] = "\001\e[33m\002";
const char ANSI_POSITIVE_light[] = "\001\e[32m\002";
+2 -2
View File
@@ -1424,8 +1424,8 @@ int client_opts_set(struct mosquitto *mosq, struct mosq_config *cfg)
mosquitto_int_option(mosq, MOSQ_OPT_TRANSPORT, cfg->transport);
if(cfg->will_topic && mosquitto_will_set_v5(mosq, cfg->will_topic,
cfg->will_payloadlen, cfg->will_payload, cfg->will_qos,
cfg->will_retain, cfg->will_props)){
cfg->will_payloadlen, cfg->will_payload, cfg->will_qos,
cfg->will_retain, cfg->will_props)){
err_printf(cfg, "Error: Problem setting will.\n");
return 1;
+8 -8
View File
@@ -68,14 +68,14 @@ int http_c__context_init(struct mosquitto *context)
path = context->wsd.http_path?context->wsd.http_path:"/mqtt";
packet->packet_length = (uint32_t )snprintf((char *)&packet->payload[WS_PACKET_OFFSET], 1024,
"GET %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Upgrade: websocket\r\n"
"Connection: Upgrade\r\n"
"Sec-WebSocket-Key: %s\r\n"
"Sec-WebSocket-Protocol: mqtt\r\n"
"Sec-WebSocket-Version: 13\r\n"
"\r\n", path, context->host, key);
"GET %s HTTP/1.1\r\n"
"Host: %s\r\n"
"Upgrade: websocket\r\n"
"Connection: Upgrade\r\n"
"Sec-WebSocket-Key: %s\r\n"
"Sec-WebSocket-Protocol: mqtt\r\n"
"Sec-WebSocket-Version: 13\r\n"
"\r\n", path, context->host, key);
mosquitto_FREE(key);
packet->packet_length += WS_PACKET_OFFSET;
packet->to_process = packet->packet_length;
+2 -2
View File
@@ -90,7 +90,7 @@ int mosquitto__verify_ocsp_status_cb(SSL *ssl, void *arg)
ocsp_status = OCSP_response_status(rsp);
if(ocsp_status != OCSP_RESPONSE_STATUS_SUCCESSFUL){
log__printf(mosq, MOSQ_LOG_DEBUG, "OCSP: invalid status: %s (%d)",
OCSP_response_status_str(ocsp_status), ocsp_status);
OCSP_response_status_str(ocsp_status), ocsp_status);
goto end;
}
@@ -144,7 +144,7 @@ int mosquitto__verify_ocsp_status_cb(SSL *ssl, void *arg)
case V_OCSP_CERTSTATUS_REVOKED:
log__printf(mosq, MOSQ_LOG_DEBUG, "OCSP: SSL certificate revocation reason: %s (%d)",
OCSP_crl_reason_str(crl_reason), crl_reason);
OCSP_crl_reason_str(crl_reason), crl_reason);
goto end;
case V_OCSP_CERTSTATUS_UNKNOWN:
+2 -2
View File
@@ -80,8 +80,8 @@ int mosquitto__check_keepalive(struct mosquitto *mosq)
#if defined(WITH_BROKER) && defined(WITH_BRIDGE)
/* Check if a lazy bridge should be timed out due to idle. */
if(mosq->bridge && mosq->bridge->start_type == bst_lazy
&& net__is_connected(mosq)
&& now - mosq->next_msg_out - mosq->keepalive >= mosq->bridge->idle_timeout){
&& net__is_connected(mosq)
&& now - mosq->next_msg_out - mosq->keepalive >= mosq->bridge->idle_timeout){
log__printf(mosq, MOSQ_LOG_NOTICE, "Bridge connection %s has exceeded idle timeout, disconnecting.", mosq->id);
net__socket_close(mosq);
+3 -3
View File
@@ -53,9 +53,9 @@ cJSON *mosquitto_properties_to_json(const mosquitto_property *properties)
cJSON_AddItemToArray(array, obj);
/* identifier, (key), value */
if(cJSON_AddStringToObject(obj,
"identifier",
mosquitto_property_identifier_to_string(propid)) == NULL
){
"identifier",
mosquitto_property_identifier_to_string(propid)) == NULL
){
cJSON_Delete(array);
return NULL;
}
+4 -4
View File
@@ -112,10 +112,10 @@ FILE *mosquitto_fopen(const char *path, const char *mode, bool restrict_read)
sec.lpSecurityDescriptor = &sd;
hfile = CreateFileA(buf, dwShareMode, FILE_SHARE_READ,
&sec,
dwCreationDisposition,
FILE_ATTRIBUTE_NORMAL,
NULL);
&sec,
dwCreationDisposition,
FILE_ATTRIBUTE_NORMAL,
NULL);
LocalFree(pacl);
+3 -2
View File
@@ -132,6 +132,7 @@ static int pw__create_argon2id(struct mosquitto_pw *pw, const char *password)
#endif
}
static int pw__verify_argon2id(struct mosquitto_pw *pw, const char *password)
{
#ifdef WITH_ARGON2
@@ -188,8 +189,8 @@ static int pw__hash_sha512_pbkdf2(const char *password, struct mosquitto_pw *pw,
}
PKCS5_PBKDF2_HMAC(password, (int)strlen(password),
pw->params.sha512.salt, (int)pw->params.sha512.salt_len, iterations,
digest, (int)hash_len, password_hash);
pw->params.sha512.salt, (int)pw->params.sha512.salt_len, iterations,
digest, (int)hash_len, password_hash);
return MOSQ_ERR_SUCCESS;
}
+12 -12
View File
@@ -371,15 +371,15 @@ static int add_role_with_full_permission(cJSON *j_roles, const char *role_name,
cJSON_AddItemToArray(j_roles, j_role);
if(cJSON_AddStringToObject(j_role, "rolename", role_name) == NULL
|| cJSON_AddStringToObject(j_role, "textdescription", text_description) == NULL
|| (j_acls = cJSON_AddArrayToObject(j_role, "acls")) == NULL){
|| cJSON_AddStringToObject(j_role, "textdescription", text_description) == NULL
|| (j_acls = cJSON_AddArrayToObject(j_role, "acls")) == NULL){
return MOSQ_ERR_NOMEM;
}
if(acl_add(j_acls, "publishClientSend", topic_pattern, 0, true)
|| acl_add(j_acls, "publishClientReceive", topic_pattern, 0, true)
|| acl_add(j_acls, "subscribePattern", topic_pattern, 0, true)
|| acl_add(j_acls, "unsubscribePattern", topic_pattern, 0, true)){
|| acl_add(j_acls, "publishClientReceive", topic_pattern, 0, true)
|| acl_add(j_acls, "subscribePattern", topic_pattern, 0, true)
|| acl_add(j_acls, "unsubscribePattern", topic_pattern, 0, true)){
return MOSQ_ERR_NOMEM;
}
return MOSQ_ERR_SUCCESS;
@@ -398,7 +398,7 @@ static int role_add_sys_notify(cJSON *j_roles)
if(cJSON_AddStringToObject(j_role, "rolename", "sys-notify") == NULL
|| cJSON_AddStringToObject(j_role, "textdescription",
"Allow bridges to publish connection state messages.") == NULL
"Allow bridges to publish connection state messages.") == NULL
|| (j_acls = cJSON_AddArrayToObject(j_role, "acls")) == NULL
){
@@ -426,7 +426,7 @@ static int role_add_sys_observe(cJSON *j_roles)
if(cJSON_AddStringToObject(j_role, "rolename", "sys-observe") == NULL
|| cJSON_AddStringToObject(j_role, "textdescription",
"Observe the $SYS topic hierarchy.") == NULL
"Observe the $SYS topic hierarchy.") == NULL
|| (j_acls = cJSON_AddArrayToObject(j_role, "acls")) == NULL
){
@@ -455,7 +455,7 @@ static int role_add_topic_observe(cJSON *j_roles)
if(cJSON_AddStringToObject(j_role, "rolename", "topic-observe") == NULL
|| cJSON_AddStringToObject(j_role, "textdescription",
"Read only access to the full application topic hierarchy.") == NULL
"Read only access to the full application topic hierarchy.") == NULL
|| (j_acls = cJSON_AddArrayToObject(j_role, "acls")) == NULL
){
@@ -483,10 +483,10 @@ static int add_roles(cJSON *j_tree)
}
if(add_role_with_full_permission(j_roles, "client", "Read/write access to the full application topic hierarchy.", "#")
|| add_role_with_full_permission(j_roles, "broker-admin", "Grants access to administer general broker configuration.", "$CONTROL/broker/#")
|| add_role_with_full_permission(j_roles, "dynsec-admin", "Grants access to administer clients/groups/roles.", "$CONTROL/dynamic-security/#")
|| add_role_with_full_permission(j_roles, "super-admin", "Grants access to administer all kind of broker controls", "$CONTROL/#")
|| role_add_sys_notify(j_roles) || role_add_sys_observe(j_roles) || role_add_topic_observe(j_roles)){
|| add_role_with_full_permission(j_roles, "broker-admin", "Grants access to administer general broker configuration.", "$CONTROL/broker/#")
|| add_role_with_full_permission(j_roles, "dynsec-admin", "Grants access to administer clients/groups/roles.", "$CONTROL/dynamic-security/#")
|| add_role_with_full_permission(j_roles, "super-admin", "Grants access to administer all kind of broker controls", "$CONTROL/#")
|| role_add_sys_notify(j_roles) || role_add_sys_observe(j_roles) || role_add_topic_observe(j_roles)){
return MOSQ_ERR_NOMEM;
}
+1 -1
View File
@@ -86,7 +86,7 @@ int dynsec__process_get_default_acl_access(struct dynsec__data *data, struct mos
admin_clientid, admin_username);
if(cJSON_AddStringToObject(tree, "command", "getDefaultACLAccess") == NULL
|| ((j_data = cJSON_AddObjectToObject(tree, "data")) == NULL)
|| ((j_data = cJSON_AddObjectToObject(tree, "data")) == NULL)
){
goto internal_error;
@@ -63,26 +63,26 @@ static int callback_message_in(int event, void *event_data, void *userdata)
snprintf(ts_buf, TS_BUF_LEN, "%li%03lu", ts.tv_sec, ts.tv_nsec / 1000 / 1000);
result = mosquitto_property_add_string_pair(
&ed->properties,
MQTT_PROP_USER_PROPERTY,
"$timestamp",
ts_buf);
&ed->properties,
MQTT_PROP_USER_PROPERTY,
"$timestamp",
ts_buf);
if(result != MOSQ_ERR_SUCCESS) return result;
// Add client id
result = mosquitto_property_add_string_pair(
&ed->properties,
MQTT_PROP_USER_PROPERTY,
"$clientid",
mosquitto_client_id(ed->client));
&ed->properties,
MQTT_PROP_USER_PROPERTY,
"$clientid",
mosquitto_client_id(ed->client));
if(result != MOSQ_ERR_SUCCESS) return result;
// Add client username
result = mosquitto_property_add_string_pair(
&ed->properties,
MQTT_PROP_USER_PROPERTY,
"$client_username",
mosquitto_client_username(ed->client));
&ed->properties,
MQTT_PROP_USER_PROPERTY,
"$client_username",
mosquitto_client_username(ed->client));
if(result != MOSQ_ERR_SUCCESS) return result;
// If no return occurred up to this point, we were successful
+4 -4
View File
@@ -35,7 +35,7 @@ int persist_sqlite__client_add_cb(int event, void *event_data, void *userdata)
UNUSED(event);
if(sqlite3_bind_text(ms->client_add_stmt, 1,
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
if(ed->data.username){
sqlite3_bind_text(ms->client_add_stmt, 2,
@@ -81,7 +81,7 @@ int persist_sqlite__client_remove_cb(int event, void *event_data, void *userdata
UNUSED(event);
if(sqlite3_bind_text(ms->subscription_clear_stmt, 1,
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ms->event_count++;
rc = sqlite3_step(ms->subscription_clear_stmt);
@@ -98,7 +98,7 @@ int persist_sqlite__client_remove_cb(int event, void *event_data, void *userdata
persist_sqlite__client_msg_clear(ms, ed->data.clientid);
if(sqlite3_bind_text(ms->client_remove_stmt, 1,
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ms->event_count++;
rc = sqlite3_step(ms->client_remove_stmt);
@@ -125,7 +125,7 @@ int persist_sqlite__client_update_cb(int event, void *event_data, void *userdata
if(sqlite3_bind_int64(ms->client_update_stmt, 1, ed->data.session_expiry_time) == SQLITE_OK
&& sqlite3_bind_int64(ms->client_update_stmt, 2, ed->data.will_delay_time) == SQLITE_OK
&& sqlite3_bind_text(ms->client_update_stmt, 3, ed->data.clientid,
(int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK
(int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK
){
ms->event_count++;
+89 -82
View File
@@ -56,27 +56,32 @@ static int create_tables_1_1(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS wills "
"("
"client_id TEXT PRIMARY KEY,"
"payload BLOB,"
"topic STRING NOT NULL,"
"payloadlen INTEGER,"
"qos INTEGER,"
"retain INTEGER,"
"properties STRING"
"client_id TEXT PRIMARY KEY,"
"payload BLOB,"
"topic STRING NOT NULL,"
"payloadlen INTEGER,"
"qos INTEGER,"
"retain INTEGER,"
"properties STRING"
");",
NULL, NULL, NULL);
if (rc) { return rc; }
if(rc){
return rc;
}
rc = sqlite3_exec((*ms).db,
"UPDATE version_info"
" SET major = 1, minor = 1, patch = 0"
" WHERE component = 'database_schema';",
"UPDATE version_info"
" SET major = 1, minor = 1, patch = 0"
" WHERE component = 'database_schema';",
NULL, NULL, NULL);
if (rc) { return rc; }
if(rc){
return rc;
}
return 0;
}
static int create_tables(struct mosquitto_sqlite *ms)
{
int rc;
@@ -85,18 +90,18 @@ static int create_tables(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS base_msgs "
"("
"store_id INT64 PRIMARY KEY,"
"expiry_time INT64,"
"topic STRING NOT NULL,"
"payload BLOB,"
"source_id STRING,"
"source_username STRING,"
"payloadlen INTEGER,"
"source_mid INTEGER,"
"source_port INTEGER,"
"qos INTEGER,"
"retain INTEGER,"
"properties STRING"
"store_id INT64 PRIMARY KEY,"
"expiry_time INT64,"
"topic STRING NOT NULL,"
"payload BLOB,"
"source_id STRING,"
"source_username STRING,"
"payloadlen INTEGER,"
"source_mid INTEGER,"
"source_port INTEGER,"
"qos INTEGER,"
"retain INTEGER,"
"properties STRING"
");",
NULL, NULL, NULL);
if(rc) goto fail;
@@ -104,10 +109,10 @@ static int create_tables(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS retains "
"("
"topic STRING PRIMARY KEY,"
"store_id INT64"
//"FOREIGN KEY (store_id) REFERENCES msg_store(store_id) "
//"ON DELETE CASCADE"
"topic STRING PRIMARY KEY,"
"store_id INT64"
//"FOREIGN KEY (store_id) REFERENCES msg_store(store_id) "
//"ON DELETE CASCADE"
");",
NULL, NULL, NULL);
if(rc) goto fail;
@@ -115,17 +120,17 @@ static int create_tables(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS clients "
"("
"client_id TEXT PRIMARY KEY,"
"username TEXT,"
"connection_time INT64,"
"will_delay_time INT64,"
"session_expiry_time INT64,"
"listener_port INT,"
"max_packet_size INT,"
"max_qos INT,"
"retain_available INT,"
"session_expiry_interval INT,"
"will_delay_interval INT"
"client_id TEXT PRIMARY KEY,"
"username TEXT,"
"connection_time INT64,"
"will_delay_time INT64,"
"session_expiry_time INT64,"
"listener_port INT,"
"max_packet_size INT,"
"max_qos INT,"
"retain_available INT,"
"session_expiry_interval INT,"
"will_delay_interval INT"
");",
NULL, NULL, NULL);
if(rc) goto fail;
@@ -133,11 +138,11 @@ static int create_tables(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS subscriptions "
"("
"client_id TEXT NOT NULL,"
"topic TEXT NOT NULL,"
"subscription_options INTEGER,"
"subscription_identifier INTEGER,"
"PRIMARY KEY (client_id, topic) "
"client_id TEXT NOT NULL,"
"topic TEXT NOT NULL,"
"subscription_options INTEGER,"
"subscription_identifier INTEGER,"
"PRIMARY KEY (client_id, topic) "
");",
NULL, NULL, NULL);
if(rc) goto fail;
@@ -145,21 +150,21 @@ static int create_tables(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS client_msgs "
"("
"client_id TEXT NOT NULL,"
"cmsg_id INT64,"
"store_id INT64,"
"dup INTEGER,"
"direction INTEGER,"
"mid INTEGER,"
"qos INTEGER,"
"retain INTEGER,"
"state INTEGER,"
"subscription_identifier INTEGER"
//"state INTEGER,"
//"FOREIGN KEY (client_id) REFERENCES clients(client_id) "
//"ON DELETE CASCADE,"
//"FOREIGN KEY (store_id) REFERENCES msg_store(store_id) "
//"ON DELETE CASCADE"
"client_id TEXT NOT NULL,"
"cmsg_id INT64,"
"store_id INT64,"
"dup INTEGER,"
"direction INTEGER,"
"mid INTEGER,"
"qos INTEGER,"
"retain INTEGER,"
"state INTEGER,"
"subscription_identifier INTEGER"
//"state INTEGER,"
//"FOREIGN KEY (client_id) REFERENCES clients(client_id) "
//"ON DELETE CASCADE,"
//"FOREIGN KEY (store_id) REFERENCES msg_store(store_id) "
//"ON DELETE CASCADE"
");",
NULL, NULL, NULL);
if(rc) goto fail;
@@ -190,10 +195,10 @@ static int create_tables(struct mosquitto_sqlite *ms)
rc = sqlite3_exec(ms->db,
"CREATE TABLE IF NOT EXISTS version_info "
"("
"component TEXT NOT NULL,"
"major INTEGER NOT NULL,"
"minor INTEGER NOT NULL,"
"patch INTEGER NOT NULL"
"component TEXT NOT NULL,"
"major INTEGER NOT NULL,"
"minor INTEGER NOT NULL,"
"patch INTEGER NOT NULL"
");",
NULL, NULL, NULL);
if(rc) goto fail;
@@ -207,9 +212,9 @@ static int create_tables(struct mosquitto_sqlite *ms)
if(db_schema_version[0] == 0){
rc = sqlite3_exec((*ms).db,
"INSERT INTO version_info(component,major,minor,patch) "
"VALUES ('database_schema','1','0','0');",
NULL, NULL, NULL);
"INSERT INTO version_info(component,major,minor,patch) "
"VALUES ('database_schema','1','0','0');",
NULL, NULL, NULL);
if(rc) goto fail;
memcpy(db_schema_version, (int[3]){1, 0, 0}, sizeof(db_schema_version));
}
@@ -217,7 +222,9 @@ static int create_tables(struct mosquitto_sqlite *ms)
/* 1.0.x needs to be upgraded to 1.1 */
if(db_schema_version[1] == 0){
rc = create_tables_1_1(ms);
if (rc) { goto fail; }
if(rc){
goto fail;
}
memcpy(db_schema_version, (int[3]){1, 1, 0}, sizeof(db_schema_version));
}
/* 1.1.x is the current DB-Schema version */
@@ -226,7 +233,7 @@ static int create_tables(struct mosquitto_sqlite *ms)
}
}
mosquitto_log_printf(MOSQ_LOG_ERR, "Sqlite persistence: Unknown database_schema version %d.%d.%d",
db_schema_version[0], db_schema_version[1], db_schema_version[2]);
db_schema_version[0], db_schema_version[1], db_schema_version[2]);
rc = MOSQ_ERR_INVAL;
goto close_db;
@@ -246,8 +253,8 @@ static int prepare_statements(struct mosquitto_sqlite *ms)
/* Subscriptions */
rc = sqlite3_prepare_v3(ms->db,
"INSERT OR REPLACE INTO subscriptions "
"(client_id, topic, subscription_options, subscription_identifier) "
"VALUES (?,?,?,?)",
"(client_id, topic, subscription_options, subscription_identifier) "
"VALUES (?,?,?,?)",
-1, SQLITE_PREPARE_PERSISTENT,
&ms->subscription_add_stmt, NULL);
if(rc) goto fail;
@@ -268,10 +275,10 @@ static int prepare_statements(struct mosquitto_sqlite *ms)
/* Clients */
rc = sqlite3_prepare_v3(ms->db,
"INSERT OR REPLACE INTO clients "
"(client_id, username, connection_time, will_delay_time, session_expiry_time, "
"listener_port, max_packet_size, max_qos, retain_available, "
"session_expiry_interval, will_delay_interval) "
"VALUES(?,?,?,?,?,?,?,?,?,?,?)",
"(client_id, username, connection_time, will_delay_time, session_expiry_time, "
"listener_port, max_packet_size, max_qos, retain_available, "
"session_expiry_interval, will_delay_interval) "
"VALUES(?,?,?,?,?,?,?,?,?,?,?)",
-1, SQLITE_PREPARE_PERSISTENT,
&ms->client_add_stmt, NULL);
if(rc) goto fail;
@@ -292,8 +299,8 @@ static int prepare_statements(struct mosquitto_sqlite *ms)
/* Client messages */
rc = sqlite3_prepare_v3(ms->db,
"INSERT INTO client_msgs "
"(client_id,cmsg_id,store_id,dup,direction,mid,qos,retain,state,subscription_identifier) "
"VALUES(?,?,?,?,?,?,?,?,?,?)",
"(client_id,cmsg_id,store_id,dup,direction,mid,qos,retain,state,subscription_identifier) "
"VALUES(?,?,?,?,?,?,?,?,?,?)",
-1, SQLITE_PREPARE_PERSISTENT,
&ms->client_msg_add_stmt, NULL);
if(rc) goto fail;
@@ -340,12 +347,12 @@ static int prepare_statements(struct mosquitto_sqlite *ms)
if(rc) goto fail;
rc = sqlite3_prepare_v3(ms->db,
"DELETE FROM base_msgs AS bm "
"WHERE bm.store_id IN "
"( SELECT cm.store_id FROM client_msgs AS cm"
" LEFT OUTER JOIN client_msgs AS oc ON oc.store_id = cm.store_id AND oc.client_id != cm.client_id"
" LEFT OUTER JOIN retains AS rm ON rm.store_id = cm.store_id"
" WHERE cm.client_id = ? AND oc.store_id IS NULL AND rm.store_id IS NULL)",
"DELETE FROM base_msgs AS bm "
"WHERE bm.store_id IN "
"( SELECT cm.store_id FROM client_msgs AS cm"
" LEFT OUTER JOIN client_msgs AS oc ON oc.store_id = cm.store_id AND oc.client_id != cm.client_id"
" LEFT OUTER JOIN retains AS rm ON rm.store_id = cm.store_id"
" WHERE cm.client_id = ? AND oc.store_id IS NULL AND rm.store_id IS NULL)",
-1, SQLITE_PREPARE_PERSISTENT,
&ms->base_msg_remove_for_clientid_stmt, NULL);
if(rc) goto fail;
+5 -5
View File
@@ -468,11 +468,11 @@ static int will_restore(struct mosquitto_sqlite *ms)
int payloadlen, qos, retain;
rc = sqlite3_prepare_v2(ms->db,
"SELECT w.client_id,w.topic,w.payload,w.payloadlen,w.qos,w.retain,w.properties,"
" c.session_expiry_time,c.will_delay_interval"
" FROM wills w"
" LEFT OUTER JOIN clients c ON c.client_id = w.client_id",
-1, &stmt, NULL);
"SELECT w.client_id,w.topic,w.payload,w.payloadlen,w.qos,w.retain,w.properties,"
" c.session_expiry_time,c.will_delay_interval"
" FROM wills w"
" LEFT OUTER JOIN clients c ON c.client_id = w.client_id",
-1, &stmt, NULL);
if(rc != SQLITE_OK){
mosquitto_log_printf(MOSQ_LOG_ERR, "sqlite: Error restoring will messages: %s", sqlite3_errstr(rc));
+1 -1
View File
@@ -59,7 +59,7 @@ int persist_sqlite__retain_msg_remove_cb(int event, void *event_data, void *user
UNUSED(event);
if(sqlite3_bind_text(ms->retain_msg_remove_stmt, 1,
ed->topic, (int)strlen(ed->topic), SQLITE_STATIC) == SQLITE_OK){
ed->topic, (int)strlen(ed->topic), SQLITE_STATIC) == SQLITE_OK){
ms->event_count++;
rc = sqlite3_step(ms->retain_msg_remove_stmt);
+6 -6
View File
@@ -33,16 +33,16 @@ int persist_sqlite__subscription_add_cb(int event, void *event_data, void *userd
UNUSED(event);
if(sqlite3_bind_text(ms->subscription_add_stmt, 1,
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
if(sqlite3_bind_text(ms->subscription_add_stmt, 2,
ed->data.topic_filter, (int)strlen(ed->data.topic_filter), SQLITE_STATIC) == SQLITE_OK){
ed->data.topic_filter, (int)strlen(ed->data.topic_filter), SQLITE_STATIC) == SQLITE_OK){
if(sqlite3_bind_int(ms->subscription_add_stmt, 3,
ed->data.options) == SQLITE_OK){
ed->data.options) == SQLITE_OK){
if(sqlite3_bind_int(ms->subscription_add_stmt, 4,
(int)ed->data.identifier) == SQLITE_OK){
(int)ed->data.identifier) == SQLITE_OK){
ms->event_count++;
rc = sqlite3_step(ms->subscription_add_stmt);
@@ -70,10 +70,10 @@ int persist_sqlite__subscription_remove_cb(int event, void *event_data, void *us
UNUSED(event);
if(sqlite3_bind_text(ms->subscription_remove_stmt, 1,
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
ed->data.clientid, (int)strlen(ed->data.clientid), SQLITE_STATIC) == SQLITE_OK){
if(sqlite3_bind_text(ms->subscription_remove_stmt, 2,
ed->data.topic_filter, (int)strlen(ed->data.topic_filter), SQLITE_STATIC) == SQLITE_OK){
ed->data.topic_filter, (int)strlen(ed->data.topic_filter), SQLITE_STATIC) == SQLITE_OK){
ms->event_count++;
rc = sqlite3_step(ms->subscription_remove_stmt);
+7 -7
View File
@@ -41,13 +41,13 @@ int persist_sqlite__will_add_cb(int event, void *event_data, void *userdata)
}
}
if(sqlite3_bind_text_from_c_str( ms->will_add_stmt, 1, ed->data.clientid) != SQLITE_OK
|| sqlite3_bind_blob_optional(ms->will_add_stmt, 2, ed->data.payload, (int)ed->data.payloadlen) != SQLITE_OK
|| sqlite3_bind_text_from_c_str(ms->will_add_stmt, 3, ed->data.topic) != SQLITE_OK
|| sqlite3_bind_int64(ms->will_add_stmt, 4, (int64_t)ed->data.payloadlen) != SQLITE_OK
|| sqlite3_bind_int(ms->will_add_stmt, 5, ed->data.qos) != SQLITE_OK
|| sqlite3_bind_int(ms->will_add_stmt, 6, ed->data.retain) != SQLITE_OK
|| sqlite3_bind_text_from_optional_c_str( ms->will_add_stmt, 7, propties_json_str) != SQLITE_OK) {
if(sqlite3_bind_text_from_c_str(ms->will_add_stmt, 1, ed->data.clientid) != SQLITE_OK
|| sqlite3_bind_blob_optional(ms->will_add_stmt, 2, ed->data.payload, (int)ed->data.payloadlen) != SQLITE_OK
|| sqlite3_bind_text_from_c_str(ms->will_add_stmt, 3, ed->data.topic) != SQLITE_OK
|| sqlite3_bind_int64(ms->will_add_stmt, 4, (int64_t)ed->data.payloadlen) != SQLITE_OK
|| sqlite3_bind_int(ms->will_add_stmt, 5, ed->data.qos) != SQLITE_OK
|| sqlite3_bind_int(ms->will_add_stmt, 6, ed->data.retain) != SQLITE_OK
|| sqlite3_bind_text_from_optional_c_str(ms->will_add_stmt, 7, propties_json_str) != SQLITE_OK){
rc = MOSQ_ERR_UNKNOWN;
}
rc = sqlite3_single_step_stmt(rc, ms, ms->will_add_stmt);
+11 -13
View File
@@ -198,19 +198,17 @@ static int bridge__set_tcp_keepalive(struct mosquitto *context)
if(idle == 0 || interval == 0 || counter == 0) return MOSQ_ERR_SUCCESS;
#ifdef WIN32
ret =
setsockopt(context->sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&enabled, sizeof(enabled)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPIDLE, (char *)&idle, sizeof(idle)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPINTVL, (char *)&interval, sizeof(interval)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPCNT, (char *)&counter, sizeof(counter));
ret = setsockopt(context->sock, SOL_SOCKET, SO_KEEPALIVE, (char *)&enabled, sizeof(enabled)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPIDLE, (char *)&idle, sizeof(idle)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPINTVL, (char *)&interval, sizeof(interval)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPCNT, (char *)&counter, sizeof(counter));
#else
ret =
setsockopt(context->sock, SOL_SOCKET, SO_KEEPALIVE, (const void *)&enabled, sizeof(enabled)) ||
ret = setsockopt(context->sock, SOL_SOCKET, SO_KEEPALIVE, (const void *)&enabled, sizeof(enabled)) ||
#ifndef __APPLE__
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPIDLE, (const void *)&idle, sizeof(idle)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPIDLE, (const void *)&idle, sizeof(idle)) ||
#endif
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPINTVL, (const void *)&interval, sizeof(interval)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPCNT, (const void *)&counter, sizeof(counter));
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPINTVL, (const void *)&interval, sizeof(interval)) ||
setsockopt(context->sock, IPPROTO_TCP, TCP_KEEPCNT, (const void *)&counter, sizeof(counter));
#endif
if(ret) return MOSQ_ERR_UNKNOWN;
@@ -690,9 +688,9 @@ int bridge__on_connect(struct mosquitto *context)
}
if(context->bridge->protocol_version == mosq_p_mqtt5){
sub_opts = sub_opts
| MQTT_SUB_OPT_NO_LOCAL
| MQTT_SUB_OPT_RETAIN_AS_PUBLISHED
| MQTT_SUB_OPT_SEND_RETAIN_ALWAYS;
| MQTT_SUB_OPT_NO_LOCAL
| MQTT_SUB_OPT_RETAIN_AS_PUBLISHED
| MQTT_SUB_OPT_SEND_RETAIN_ALWAYS;
}
if(send__subscribe(context, NULL, 1, &cur_topic->remote_topic, sub_opts, NULL)){
return 1;
+8 -8
View File
@@ -43,8 +43,8 @@ int context__init_sock(struct mosquitto *context, mosq_sock_t sock, bool get_add
char address[1024];
if(!net__socket_get_address(context->sock,
address, sizeof(address),
&context->remote_port)){
address, sizeof(address),
&context->remote_port)){
context->address = mosquitto_strdup(address);
}
@@ -216,12 +216,12 @@ void context__send_will(struct mosquitto *ctxt)
}
if(mosquitto_acl_check(ctxt,
ctxt->will->msg.topic,
(uint32_t)ctxt->will->msg.payloadlen,
ctxt->will->msg.payload,
(uint8_t)ctxt->will->msg.qos,
ctxt->will->msg.retain,
MOSQ_ACL_WRITE) == MOSQ_ERR_SUCCESS){
ctxt->will->msg.topic,
(uint32_t)ctxt->will->msg.payloadlen,
ctxt->will->msg.payload,
(uint8_t)ctxt->will->msg.qos,
ctxt->will->msg.retain,
MOSQ_ACL_WRITE) == MOSQ_ERR_SUCCESS){
/* Unexpected disconnect, queue the client will. */
db__messages_easy_queue(ctxt,
+4 -4
View File
@@ -1274,8 +1274,8 @@ static void db__client_messages_check_acl(struct mosquitto *context, struct mosq
access = MOSQ_ACL_WRITE;
}
if(mosquitto_acl_check(context, base_msg->data.topic,
base_msg->data.payloadlen, base_msg->data.payload,
base_msg->data.qos, base_msg->data.retain, access) != MOSQ_ERR_SUCCESS){
base_msg->data.payloadlen, base_msg->data.payload,
base_msg->data.qos, base_msg->data.retain, access) != MOSQ_ERR_SUCCESS){
DL_DELETE((*head), client_msg);
decrement_stats_fn(msg_data, client_msg);
@@ -1436,8 +1436,8 @@ int db__message_write_inflight_out_latest(struct mosquitto *context)
client_msg = context->msgs_out.inflight->prev;
while(client_msg != context->msgs_out.inflight &&
(client_msg->data.state == mosq_ms_publish_qos0
|| client_msg->data.state == mosq_ms_publish_qos1
|| client_msg->data.state == mosq_ms_publish_qos2)){
|| client_msg->data.state == mosq_ms_publish_qos1
|| client_msg->data.state == mosq_ms_publish_qos2)){
client_msg = client_msg->prev;
}
+1 -1
View File
@@ -61,7 +61,7 @@ int handle__auth(struct mosquitto *context)
if((reason_code == MQTT_RC_REAUTHENTICATE && context->state != mosq_cs_active)
|| (reason_code == MQTT_RC_CONTINUE_AUTHENTICATION
&& context->state != mosq_cs_authenticating && context->state != mosq_cs_reauthenticating)){
&& context->state != mosq_cs_authenticating && context->state != mosq_cs_reauthenticating)){
send__disconnect(context, MQTT_RC_PROTOCOL_ERROR, NULL);
return MOSQ_ERR_PROTOCOL;
+5 -5
View File
@@ -44,14 +44,14 @@ static int handle__connack_properties(struct mosquitto *context)
/* maximum-qos */
mosquitto_property_read_byte(properties, MQTT_PROP_MAXIMUM_QOS,
&max_qos, false);
&max_qos, false);
if(max_qos != 255){
context->max_qos = max_qos;
}
/* maximum-packet-size */
if(mosquitto_property_read_int32(properties, MQTT_PROP_MAXIMUM_PACKET_SIZE,
&maximum_packet_size, false)){
&maximum_packet_size, false)){
if(context->maximum_packet_size == 0 || context->maximum_packet_size > maximum_packet_size){
context->maximum_packet_size = maximum_packet_size;
@@ -68,7 +68,7 @@ static int handle__connack_properties(struct mosquitto *context)
/* retain-available */
if(mosquitto_property_read_byte(properties, MQTT_PROP_RETAIN_AVAILABLE,
&retain_available, false)){
&retain_available, false)){
/* Only use broker provided value if the local config is set to available==true */
if(context->retain_available){
@@ -78,14 +78,14 @@ static int handle__connack_properties(struct mosquitto *context)
/* server-keepalive */
if(mosquitto_property_read_int16(properties, MQTT_PROP_SERVER_KEEP_ALIVE,
&server_keepalive, false)){
&server_keepalive, false)){
context->keepalive = server_keepalive;
}
/* topic-alias-maximum */
if(mosquitto_property_read_int16(properties, MQTT_PROP_TOPIC_ALIAS_MAXIMUM,
&max_topic_alias, false)){
&max_topic_alias, false)){
if(max_topic_alias < context->bridge->max_topic_alias){
context->alias_max_l2r = max_topic_alias;
+13 -12
View File
@@ -216,14 +216,14 @@ int connect__on_authorised(struct mosquitto *context, void *auth_data_out, uint1
}
}
if(context->will) {
if(context->will){
log__printf(NULL, MOSQ_LOG_DEBUG, "Will message specified (%ld bytes) (r%d, q%d).",
(long)context->will->msg.payloadlen,
context->will->msg.retain,
context->will->msg.qos);
log__printf(NULL, MOSQ_LOG_DEBUG, "\t%s", context->will->msg.topic);
} else {
}else{
log__printf(NULL, MOSQ_LOG_DEBUG, "No will message specified.");
}
}
@@ -476,7 +476,7 @@ static int read_protocol_name(struct mosquitto *context, char protocol_name[7])
static int read_and_verify_protocol_version(struct mosquitto *context, const char *protocol_name,
uint8_t *protocol_version)
uint8_t *protocol_version)
{
uint8_t tmp_protocol_version = 0;
if(packet__read_byte(&context->in_packet, &tmp_protocol_version)){
@@ -637,7 +637,7 @@ static int verify_will_options(struct mosquitto *context, uint8_t will, uint8_t
static int handle_zero_length_clientid(struct mosquitto *context, char **clientid, bool *allow_zero_length_clientid,
uint8_t clean_start)
uint8_t clean_start)
{
if(context->protocol == mosq_p_mqtt31){
send__connack(context, 0, CONNACK_REFUSED_IDENTIFIER_REJECTED, NULL);
@@ -659,7 +659,7 @@ static int handle_zero_length_clientid(struct mosquitto *context, char **clienti
}
*clientid = clientid_gen(&(uint16_t){0}, context->listener->security_options->auto_id_prefix,
context->listener->security_options->auto_id_prefix_len);
context->listener->security_options->auto_id_prefix_len);
if(*clientid == NULL){
return MOSQ_ERR_NOMEM;
}
@@ -680,8 +680,9 @@ static int check_clientid_prefixes(struct mosquitto *context, const char *client
return MOSQ_ERR_SUCCESS;
}
static int read_and_verify_clientid_from_packet(struct mosquitto *context, char** clientid,
bool *allow_zero_length_clientid, uint8_t clean_start)
static int read_and_verify_clientid_from_packet(struct mosquitto *context, char **clientid,
bool *allow_zero_length_clientid, uint8_t clean_start)
{
int rc;
uint16_t slen;
@@ -755,9 +756,9 @@ static int set_password_from_packet(struct mosquitto *context, char **password)
static int read_and_verify_client_credentials_from_packet(struct mosquitto *context,
char **username, uint8_t username_flag,
char **password, uint8_t password_flag,
const char* clientid)
char **username, uint8_t username_flag,
char **password, uint8_t password_flag,
const char *clientid)
{
int rc;
@@ -827,7 +828,7 @@ inline static int free_x509_and_send_connack_error(struct mosquitto *context, X5
inline static int free_x509_and_BIO_and_send_connack_error(struct mosquitto *context, X509 *client_cert,
BIO *subject_name, int rc)
BIO *subject_name, int rc)
{
BIO_free(subject_name);
return free_x509_and_send_connack_error(context, client_cert, rc);
@@ -1031,7 +1032,7 @@ int handle__connect(struct mosquitto *context)
if(context->in_packet.command == 0x16 && context->listener->ssl_ctx == NULL){ /* 0x16 is TLS handshake client hello */
log__printf(NULL, MOSQ_LOG_NOTICE, "Client from %s:%d appears to be using TLS to connect to a non-TLS listener.",
context->address, context->remote_port);
context->address, context->remote_port);
rc = MOSQ_ERR_PROTOCOL;
goto handle_connect_error;
}
+3 -3
View File
@@ -253,9 +253,9 @@ int handle__publish(struct mosquitto *context)
if(cmsg_stored && base_msg->data.source_mid != 0 &&
(cmsg_stored->base_msg->data.qos != base_msg->data.qos
|| cmsg_stored->base_msg->data.payloadlen != base_msg->data.payloadlen
|| strcmp(cmsg_stored->base_msg->data.topic, base_msg->data.topic)
|| memcmp(cmsg_stored->base_msg->data.payload, base_msg->data.payload, base_msg->data.payloadlen) )){
|| cmsg_stored->base_msg->data.payloadlen != base_msg->data.payloadlen
|| strcmp(cmsg_stored->base_msg->data.topic, base_msg->data.topic)
|| memcmp(cmsg_stored->base_msg->data.payload, base_msg->data.payload, base_msg->data.payloadlen))){
log__printf(NULL, MOSQ_LOG_WARNING, "Reused message ID %u from %s detected. Clearing from storage.", base_msg->data.source_mid, context->id);
db__message_remove_incoming(context, base_msg->data.source_mid);
+1 -1
View File
@@ -77,7 +77,7 @@ int handle__subscribe(struct mosquitto *context)
}
if(mosquitto_property_read_varint(properties, MQTT_PROP_SUBSCRIPTION_IDENTIFIER,
&subscription_identifier, false)){
&subscription_identifier, false)){
/* If the identifier was force set to 0, this is an error */
if(subscription_identifier == 0){
+5 -5
View File
@@ -702,8 +702,8 @@ static int net__bind_interface(struct mosquitto__listener *listener, struct addr
if(rp->ai_addr->sa_family == AF_INET){
if(listener->host &&
memcmp(&((struct sockaddr_in *)rp->ai_addr)->sin_addr,
&((struct sockaddr_in *)ifa->ifa_addr)->sin_addr,
sizeof(struct in_addr))){
&((struct sockaddr_in *)ifa->ifa_addr)->sin_addr,
sizeof(struct in_addr))){
log__printf(NULL, MOSQ_LOG_ERR, "Error: Interface address for %s does not match specified listener address (%s).",
listener->bind_interface, listener->host);
@@ -719,8 +719,8 @@ static int net__bind_interface(struct mosquitto__listener *listener, struct addr
}else if(rp->ai_addr->sa_family == AF_INET6){
if(listener->host &&
memcmp(&((struct sockaddr_in6 *)rp->ai_addr)->sin6_addr,
&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr,
sizeof(struct in6_addr))){
&((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr,
sizeof(struct in6_addr))){
log__printf(NULL, MOSQ_LOG_ERR, "Error: Interface address for %s does not match specified listener address (%s).",
listener->bind_interface, listener->host);
@@ -742,7 +742,7 @@ static int net__bind_interface(struct mosquitto__listener *listener, struct addr
freeifaddrs(ifaddr);
if(have_interface){
log__printf(NULL, MOSQ_LOG_WARNING, "Warning: Interface %s does not support %s configuration.",
listener->bind_interface, rp->ai_addr->sa_family == AF_INET ? "IPv4" : "IPv6");
listener->bind_interface, rp->ai_addr->sa_family == AF_INET ? "IPv4" : "IPv6");
return MOSQ_ERR_NOT_SUPPORTED;
}else{
log__printf(NULL, MOSQ_LOG_ERR, "Error: Interface %s does not exist.", listener->bind_interface);
+3 -2
View File
@@ -92,8 +92,9 @@ int persist__chunk_client_msg_write_v6(FILE *db_fptr, struct P_client_msg *chunk
uint16_t id_len = chunk->F.id_len;
uint32_t proplen = 0;
int rc;
mosquitto_property subscription_id_prop =
{.next = NULL, .identifier = MQTT_PROP_SUBSCRIPTION_IDENTIFIER, .client_generated = true, .property_type = MQTT_PROP_TYPE_VARINT};
mosquitto_property subscription_id_prop = {
.next = NULL, .identifier = MQTT_PROP_SUBSCRIPTION_IDENTIFIER, .client_generated = true, .property_type = MQTT_PROP_TYPE_VARINT
};
if(chunk->subscription_identifier){
subscription_id_prop.value.varint = chunk->subscription_identifier;
+2 -2
View File
@@ -89,7 +89,7 @@ int mosquitto_basic_auth(struct mosquitto *context)
if(plugin_used == false){
if((context->listener && context->listener->security_options->allow_anonymous == true)
|| (!db.config->per_listener_settings && db.config->security_options.allow_anonymous == true
&& context->listener && context->listener->security_options->allow_anonymous != false)){
&& context->listener && context->listener->security_options->allow_anonymous != false)){
return MOSQ_ERR_SUCCESS;
}else{
@@ -101,7 +101,7 @@ int mosquitto_basic_auth(struct mosquitto *context)
if(context->username == NULL &&
((context->listener && context->listener->security_options->allow_anonymous == true)
|| (!db.config->per_listener_settings && db.config->security_options.allow_anonymous == true
&& context->listener && context->listener->security_options->allow_anonymous != false))){
&& context->listener && context->listener->security_options->allow_anonymous != false))){
return MOSQ_ERR_SUCCESS;
}else{
+1 -1
View File
@@ -226,7 +226,7 @@ BROKER_EXPORT int mosquitto_callback_register(
own_callback->cb_func = cb_func;
DL_APPEND(identifier->own_callbacks, own_callback);
if(identifier->config.security_option_count == 0) {
if(identifier->config.security_option_count == 0){
log__printf(NULL, MOSQ_LOG_WARNING, "Plugin could not register callback '%s'",
get_event_name(event));
return MOSQ_ERR_INVAL;
+2 -2
View File
@@ -90,7 +90,7 @@ int plugin__handle_message_out(struct mosquitto *context, struct mosquitto_base_
if(db.config->per_listener_settings && context->listener){
rc = plugin__handle_message_single(context->listener->security_options->plugin_callbacks.message_out,
MOSQ_EVT_MESSAGE_OUT, &to_free, context, stored);
MOSQ_EVT_MESSAGE_OUT, &to_free, context, stored);
}
return rc;
@@ -109,7 +109,7 @@ int plugin__handle_message_in(struct mosquitto *context, struct mosquitto_base_m
if(db.config->per_listener_settings && context->listener){
rc = plugin__handle_message_single(context->listener->security_options->plugin_callbacks.message_in,
MOSQ_EVT_MESSAGE_IN, &to_free, context, stored);
MOSQ_EVT_MESSAGE_IN, &to_free, context, stored);
}
return rc;
+2 -2
View File
@@ -131,8 +131,8 @@ void plugin_persist__handle_client_delete(struct mosquitto *context)
struct mosquitto__security_options *opts;
if(context->id == NULL
|| context->state == mosq_cs_duplicate
|| db.shutdown){
|| context->state == mosq_cs_duplicate
|| db.shutdown){
return;
}
+1 -1
View File
@@ -37,7 +37,7 @@ static void plugin__handle_tick_single(struct mosquitto__security_options *opts)
mosquitto_time_ns(&event_data.now_s, &event_data.now_ns);
if(mosquitto_time_cmp(event_data.now_s, event_data.now_ns,
cb_base->data.next_tick.tv_sec, cb_base->data.next_tick.tv_nsec) > 0){
cb_base->data.next_tick.tv_sec, cb_base->data.next_tick.tv_nsec) > 0){
event_data.next_s = 0;
event_data.next_ms = 0;
+1 -1
View File
@@ -50,7 +50,7 @@ static void print_error(void)
char *buf = NULL;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, GetLastError(), LANG_NEUTRAL, (LPTSTR)&buf, 0, NULL);
NULL, GetLastError(), LANG_NEUTRAL, (LPTSTR)&buf, 0, NULL);
fprintf(stderr, "Error: %s\n", buf);
LocalFree(buf);
+1 -1
View File
@@ -268,7 +268,7 @@ void sys_tree__update(bool force)
for(int i=0; i<mosq_metric_max; i++){
if((metrics[i].is_max && metrics[i].next > metrics[i].current) ||
(!metrics[i].is_max && metrics[i].next != metrics[i].current)){
(!metrics[i].is_max && metrics[i].next != metrics[i].current)){
metrics[i].current = metrics[i].next;
len = (uint32_t)snprintf(buf, BUFLEN, "%lu", metrics[i].current);
+11 -11
View File
@@ -53,16 +53,16 @@ static int callback_mqtt(
size_t len);
static int callback_http(
struct lws *wsi,
enum lws_callback_reasons reason,
void *user,
void *in,
size_t len);
struct lws *wsi,
enum lws_callback_reasons reason,
void *user,
void *in,
size_t len);
enum mosq_ws_protocols {
PROTOCOL_HTTP = 0,
PROTOCOL_MQTT,
DEMO_PROTOCOL_COUNT
DEMO_PROTOCOL_COUNT,
};
struct libws_http_data {
@@ -493,8 +493,8 @@ static int callback_http(
/* FIXME - use header functions from lws 2.x */
buflen = (size_t)snprintf((char *)buf, 4096, "HTTP/1.0 302 OK\r\n"
"Location: %s/\r\n\r\n",
(char *)in);
"Location: %s/\r\n\r\n",
(char *)in);
return lws_write(wsi, buf, buflen, LWS_WRITE_HTTP);
}
@@ -510,9 +510,9 @@ static int callback_http(
SAFE_FREE(filename_canonical);
/* FIXME - use header functions from lws 2.x */
buflen = (size_t)snprintf((char *)buf, 4096, "HTTP/1.0 200 OK\r\n"
"Server: mosquitto\r\n"
"Content-Length: %u\r\n\r\n",
(unsigned int)filestat.st_size);
"Server: mosquitto\r\n"
"Content-Length: %u\r\n\r\n",
(unsigned int)filestat.st_size);
if(lws_write(wsi, buf, buflen, LWS_WRITE_HTTP) < 0){
fclose(u->fptr);
u->fptr = NULL;
+1 -1
View File
@@ -62,7 +62,7 @@ static int tick_callback(int event, void *event_data, void *user_data)
if(auth_delay == 0){
if(clientid && username && password
&& !strcmp(username, "delayed-username") && !strcmp(password, "good")){
&& !strcmp(username, "delayed-username") && !strcmp(password, "good")){
mosquitto_complete_basic_auth(clientid, MOSQ_ERR_SUCCESS);
}else{
+33 -16
View File
@@ -352,11 +352,14 @@ static void varint_prop_read_helper(
CU_ASSERT_PTR_NULL(properties);
}
static void packet_helper_reason_string_user_property(int command)
{
uint8_t payload[24] = {23,
uint8_t payload[24] = {
23,
MQTT_PROP_REASON_STRING, 0, 6, 'r', 'e', 'a', 's', 'o', 'n',
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'};
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1303,7 +1306,8 @@ static void TEST_bad_subscription_identifier(void)
static void TEST_packet_connect(void)
{
uint8_t payload[] = {0,
uint8_t payload[] = {
0,
MQTT_PROP_SESSION_EXPIRY_INTERVAL, 0x12, 0x45, 0x00, 0x00,
MQTT_PROP_RECEIVE_MAXIMUM, 0x00, 0x05,
MQTT_PROP_MAXIMUM_PACKET_SIZE, 0x12, 0x45, 0x00, 0x00,
@@ -1312,7 +1316,8 @@ static void TEST_packet_connect(void)
MQTT_PROP_REQUEST_RESPONSE_INFORMATION, 1,
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e',
MQTT_PROP_AUTHENTICATION_METHOD, 0x00, 0x04, 'n', 'o', 'n', 'e',
MQTT_PROP_AUTHENTICATION_DATA, 0x00, 0x02, 1, 2};
MQTT_PROP_AUTHENTICATION_DATA, 0x00, 0x02, 1, 2
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1410,7 +1415,8 @@ static void TEST_packet_connect(void)
static void TEST_packet_connack(void)
{
uint8_t payload[] = {0,
uint8_t payload[] = {
0,
MQTT_PROP_SESSION_EXPIRY_INTERVAL, 0x12, 0x45, 0x00, 0x00,
MQTT_PROP_RECEIVE_MAXIMUM, 0x00, 0x05,
MQTT_PROP_MAXIMUM_QOS, 1,
@@ -1427,7 +1433,8 @@ static void TEST_packet_connack(void)
MQTT_PROP_RESPONSE_INFORMATION, 0x00, 0x03, 'r', 's', 'p',
MQTT_PROP_SERVER_REFERENCE, 0x00, 0x04, 's', 'e', 'r', 'v',
MQTT_PROP_AUTHENTICATION_METHOD, 0x00, 0x04, 'n', 'o', 'n', 'e',
MQTT_PROP_AUTHENTICATION_DATA, 0x00, 0x02, 1, 2};
MQTT_PROP_AUTHENTICATION_DATA, 0x00, 0x02, 1, 2
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1594,7 +1601,8 @@ static void TEST_packet_connack(void)
static void TEST_packet_publish(void)
{
uint8_t payload[] = {0,
uint8_t payload[] = {
0,
MQTT_PROP_PAYLOAD_FORMAT_INDICATOR, 1,
MQTT_PROP_MESSAGE_EXPIRY_INTERVAL, 0x12, 0x45, 0x00, 0x00,
MQTT_PROP_TOPIC_ALIAS, 0x00, 0x02,
@@ -1602,7 +1610,8 @@ static void TEST_packet_publish(void)
MQTT_PROP_CORRELATION_DATA, 0x00, 0x02, 1, 2,
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e',
MQTT_PROP_SUBSCRIPTION_IDENTIFIER, 0x04,
MQTT_PROP_CONTENT_TYPE, 0, 5, 'e', 'm', 'p', 't', 'y'};
MQTT_PROP_CONTENT_TYPE, 0, 5, 'e', 'm', 'p', 't', 'y'
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1718,9 +1727,11 @@ static void TEST_packet_pubcomp(void)
static void TEST_packet_subscribe(void)
{
uint8_t payload[] = {0,
uint8_t payload[] = {
0,
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e',
MQTT_PROP_SUBSCRIPTION_IDENTIFIER, 0x04};
MQTT_PROP_SUBSCRIPTION_IDENTIFIER, 0x04
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1766,8 +1777,10 @@ static void TEST_packet_suback(void)
static void TEST_packet_unsubscribe(void)
{
uint8_t payload[] = {0,
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'};
uint8_t payload[] = {
0,
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1805,10 +1818,12 @@ static void TEST_packet_unsuback(void)
static void TEST_packet_disconnect(void)
{
uint8_t payload[] = {0,
uint8_t payload[] = {
0,
MQTT_PROP_SESSION_EXPIRY_INTERVAL, 0x12, 0x45, 0x00, 0x00,
MQTT_PROP_REASON_STRING, 0, 6, 'r', 'e', 'a', 's', 'o', 'n',
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'};
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
@@ -1857,11 +1872,13 @@ static void TEST_packet_disconnect(void)
static void TEST_packet_auth(void)
{
uint8_t payload[] = {0,
uint8_t payload[] = {
0,
MQTT_PROP_AUTHENTICATION_METHOD, 0x00, 0x04, 'n', 'o', 'n', 'e',
MQTT_PROP_AUTHENTICATION_DATA, 0x00, 0x02, 1, 2,
MQTT_PROP_REASON_STRING, 0, 6, 'r', 'e', 'a', 's', 'o', 'n',
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'};
MQTT_PROP_USER_PROPERTY, 0, 4, 'n', 'a', 'm', 'e', 0, 5, 'v', 'a', 'l', 'u', 'e'
};
struct mosquitto__packet_in packet;
mosquitto_property *properties, *p;
+8 -6
View File
@@ -83,12 +83,14 @@ static void TEST_string_to_property_info(void)
static void TEST_mosquitto_strerror(void)
{
const char *str;
int used[] = {-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
int used[] = {
-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, /* 13, */ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 31, 32,
33,
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
158, 159, 160, 161, 162};
158, 159, 160, 161, 162
};
/* Iterate over all possible errors, checking we have a place holder for all
* unused errors, and that all used errors do not have place holder text. */
@@ -162,10 +164,12 @@ static void TEST_mosquitto_connack_string(void)
static void TEST_mosquitto_reason_string(void)
{
const char *str;
uint8_t used[] = {0, 1, 2, 4, 16, 17, 24, 25, 128, 129, 130, 131, 132, 133,
uint8_t used[] = {
0, 1, 2, 4, 16, 17, 24, 25, 128, 129, 130, 131, 132, 133,
134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
162};
162
};
/* Iterate over all possible codes, checking we have a place holder for all
* unused codes, and that all used codes do not have place holder text. */
@@ -291,5 +295,3 @@ int init_strings_tests(void)
return 0;
}