mirror of
https://github.com/espressif/esp-mqtt.git
synced 2025-07-31 19:25:14 +02:00
Client: Fix use esp_mqtt_client_enqueue API to send data, data dup flag will be set 1
This commit is contained in:
@@ -54,6 +54,7 @@ int outbox_delete_expired(outbox_handle_t outbox, outbox_tick_t current_tick, ou
|
|||||||
int outbox_delete_single_expired(outbox_handle_t outbox, outbox_tick_t current_tick, outbox_tick_t timeout);
|
int outbox_delete_single_expired(outbox_handle_t outbox, outbox_tick_t current_tick, outbox_tick_t timeout);
|
||||||
|
|
||||||
esp_err_t outbox_set_pending(outbox_handle_t outbox, int msg_id, pending_state_t pending);
|
esp_err_t outbox_set_pending(outbox_handle_t outbox, int msg_id, pending_state_t pending);
|
||||||
|
pending_state_t outbox_item_get_pending(outbox_item_handle_t item);
|
||||||
esp_err_t outbox_set_tick(outbox_handle_t outbox, int msg_id, outbox_tick_t tick);
|
esp_err_t outbox_set_tick(outbox_handle_t outbox, int msg_id, outbox_tick_t tick);
|
||||||
int outbox_get_size(outbox_handle_t outbox);
|
int outbox_get_size(outbox_handle_t outbox);
|
||||||
void outbox_destroy(outbox_handle_t outbox);
|
void outbox_destroy(outbox_handle_t outbox);
|
||||||
|
@@ -142,6 +142,14 @@ esp_err_t outbox_set_pending(outbox_handle_t outbox, int msg_id, pending_state_t
|
|||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pending_state_t outbox_item_get_pending(outbox_item_handle_t item)
|
||||||
|
{
|
||||||
|
if (item) {
|
||||||
|
return item->pending;
|
||||||
|
}
|
||||||
|
return QUEUED;
|
||||||
|
}
|
||||||
|
|
||||||
esp_err_t outbox_set_tick(outbox_handle_t outbox, int msg_id, outbox_tick_t tick)
|
esp_err_t outbox_set_tick(outbox_handle_t outbox, int msg_id, outbox_tick_t tick)
|
||||||
{
|
{
|
||||||
outbox_item_handle_t item = outbox_get(outbox, msg_id);
|
outbox_item_handle_t item = outbox_get(outbox, msg_id);
|
||||||
|
@@ -1344,7 +1344,7 @@ static esp_err_t mqtt_resend_queued(esp_mqtt_client_handle_t client, outbox_item
|
|||||||
client->mqtt_state.outbound_message->data = outbox_item_get_data(item, &client->mqtt_state.outbound_message->length, &client->mqtt_state.pending_msg_id,
|
client->mqtt_state.outbound_message->data = outbox_item_get_data(item, &client->mqtt_state.outbound_message->length, &client->mqtt_state.pending_msg_id,
|
||||||
&client->mqtt_state.pending_msg_type, &client->mqtt_state.pending_publish_qos);
|
&client->mqtt_state.pending_msg_type, &client->mqtt_state.pending_publish_qos);
|
||||||
// set duplicate flag for QoS-1 and QoS-2 messages
|
// set duplicate flag for QoS-1 and QoS-2 messages
|
||||||
if (client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_PUBLISH && client->mqtt_state.pending_publish_qos > 0) {
|
if (client->mqtt_state.pending_msg_type == MQTT_MSG_TYPE_PUBLISH && client->mqtt_state.pending_publish_qos > 0 && (outbox_item_get_pending(item) == TRANSMITTED)) {
|
||||||
mqtt_set_dup(client->mqtt_state.outbound_message->data);
|
mqtt_set_dup(client->mqtt_state.outbound_message->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user