Merge branch 'fix/qos0publishdispatch' into 'master'

Fix check for message creation when processing publish

See merge request espressif/esp-mqtt!195
This commit is contained in:
Rocha Euripedes
2023-10-10 16:25:20 +08:00

View File

@ -1348,29 +1348,29 @@ static esp_err_t mqtt_process_receive(esp_mqtt_client_handle_t client)
ESP_LOGE(TAG, "Failed to deliver publish message id=%d", msg_id);
return ESP_FAIL;
}
if (msg_qos == 1) {
if (client->mqtt_state.connection.information.protocol_ver == MQTT_PROTOCOL_V_5) {
#ifdef MQTT_PROTOCOL_5
mqtt5_msg_puback(&client->mqtt_state.connection, msg_id);
#endif
} else {
mqtt_msg_puback(&client->mqtt_state.connection, msg_id);
}
} else if (msg_qos == 2) {
if (client->mqtt_state.connection.information.protocol_ver == MQTT_PROTOCOL_V_5) {
#ifdef MQTT_PROTOCOL_5
mqtt5_msg_pubrec(&client->mqtt_state.connection, msg_id);
#endif
} else {
mqtt_msg_pubrec(&client->mqtt_state.connection, msg_id);
}
}
if (client->mqtt_state.connection.outbound_message.length == 0) {
ESP_LOGE(TAG, "Publish response message PUBACK or PUBREC cannot be created");
return ESP_FAIL;
}
if (msg_qos == 1 || msg_qos == 2) {
if (msg_qos == 1) {
if (client->mqtt_state.connection.information.protocol_ver == MQTT_PROTOCOL_V_5) {
#ifdef MQTT_PROTOCOL_5
mqtt5_msg_puback(&client->mqtt_state.connection, msg_id);
#endif
} else {
mqtt_msg_puback(&client->mqtt_state.connection, msg_id);
}
} else if (msg_qos == 2) {
if (client->mqtt_state.connection.information.protocol_ver == MQTT_PROTOCOL_V_5) {
#ifdef MQTT_PROTOCOL_5
mqtt5_msg_pubrec(&client->mqtt_state.connection, msg_id);
#endif
} else {
mqtt_msg_pubrec(&client->mqtt_state.connection, msg_id);
}
}
if (client->mqtt_state.connection.outbound_message.length == 0) {
ESP_LOGE(TAG, "Publish response message PUBACK or PUBREC cannot be created");
return ESP_FAIL;
}
ESP_LOGD(TAG, "Queue response QoS: %d", msg_qos);
if (esp_mqtt_write(client) != ESP_OK) {