Skip to content

Commit 8d98103

Browse files
Merge branch 'fix/account_for_failure_in_make_publish' into 'master'
fix: Error on publish message creation was ignored. See merge request espressif/esp-mqtt!185
2 parents effd1e6 + 585e3ba commit 8d98103

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

mqtt_client.c

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -999,7 +999,7 @@ static esp_err_t esp_mqtt_dispatch_event(esp_mqtt_client_handle_t client)
999999
client->event.protocol_ver = client->mqtt_state.connection.information.protocol_ver;
10001000
esp_err_t ret = ESP_FAIL;
10011001

1002-
#ifdef MQTT_SUPPORTED_FEATURE_EVENT_LOOP
1002+
#ifdef MQTT_SUPPORTED_FEATURE_EVENT_LOOP
10031003
esp_event_post_to(client->config->event_loop_handle, MQTT_EVENTS, client->event.event_id, &client->event, sizeof(client->event), portMAX_DELAY);
10041004
ret = esp_event_loop_run(client->config->event_loop_handle, 0);
10051005
#else
@@ -1149,16 +1149,16 @@ static outbox_item_handle_t mqtt_enqueue(esp_mqtt_client_handle_t client, uint8_
11491149
{
11501150
ESP_LOGD(TAG, "mqtt_enqueue id: %d, type=%d successful",
11511151
client->mqtt_state.pending_msg_id, client->mqtt_state.pending_msg_type);
1152-
outbox_message_t msg = { 0 };
1153-
msg.data = client->mqtt_state.connection.outbound_message.data;
1154-
msg.len = client->mqtt_state.connection.outbound_message.length;
1155-
msg.msg_id = client->mqtt_state.pending_msg_id;
1156-
msg.msg_type = client->mqtt_state.pending_msg_type;
1157-
msg.msg_qos = client->mqtt_state.pending_publish_qos;
1158-
msg.remaining_data = remaining_data;
1159-
msg.remaining_len = remaining_len;
1160-
//Copy to queue buffer
1161-
return outbox_enqueue(client->outbox, &msg, platform_tick_get_ms());
1152+
outbox_message_t msg = { 0 };
1153+
msg.data = client->mqtt_state.connection.outbound_message.data;
1154+
msg.len = client->mqtt_state.connection.outbound_message.length;
1155+
msg.msg_id = client->mqtt_state.pending_msg_id;
1156+
msg.msg_type = client->mqtt_state.pending_msg_type;
1157+
msg.msg_qos = client->mqtt_state.pending_publish_qos;
1158+
msg.remaining_data = remaining_data;
1159+
msg.remaining_len = remaining_len;
1160+
//Copy to queue buffer
1161+
return outbox_enqueue(client->outbox, &msg, platform_tick_get_ms());
11621162
}
11631163

11641164

@@ -1830,7 +1830,7 @@ int esp_mqtt_client_subscribe_multiple(esp_mqtt_client_handle_t client,
18301830
}
18311831

18321832
if (client->config->outbox_limit > 0 && outbox_get_size(client->outbox) > client->config->outbox_limit) {
1833-
return -2;
1833+
return -2;
18341834
}
18351835
MQTT_API_LOCK(client);
18361836
if (client->state != MQTT_STATE_CONNECTED) {
@@ -1976,6 +1976,9 @@ static inline int mqtt_client_enqueue_publish(esp_mqtt_client_handle_t client, c
19761976
int len, int qos, int retain, bool store)
19771977
{
19781978
int pending_msg_id = make_publish(client, topic, data, len, qos, retain);
1979+
if (pending_msg_id < 0) {
1980+
return -1;
1981+
}
19791982
/* We have to set as pending all the qos>0 messages */
19801983
//TODO: client->mqtt_state.outbound_message = publish_msg;
19811984
if (qos > 0 || store) {

0 commit comments

Comments
 (0)