forked from espressif/esp-mqtt
fix some keepalives issues (#51)
* merge some changes * fix blocking issue
This commit is contained in:
@@ -192,8 +192,14 @@ static int ssl_write(transport_handle_t t, const char *buffer, int len, int time
|
|||||||
|
|
||||||
static int ssl_read(transport_handle_t t, char *buffer, int len, int timeout_ms)
|
static int ssl_read(transport_handle_t t, char *buffer, int len, int timeout_ms)
|
||||||
{
|
{
|
||||||
int ret;
|
int poll = -1, ret;
|
||||||
transport_ssl_t *ssl = transport_get_context_data(t);
|
transport_ssl_t *ssl = transport_get_context_data(t);
|
||||||
|
|
||||||
|
if (mbedtls_ssl_get_bytes_avail(&ssl->ctx) <= 0) {
|
||||||
|
if ((poll = transport_poll_read(t, timeout_ms)) <= 0) {
|
||||||
|
return poll;
|
||||||
|
}
|
||||||
|
}
|
||||||
ret = mbedtls_ssl_read(&ssl->ctx, (unsigned char *)buffer, len);
|
ret = mbedtls_ssl_read(&ssl->ctx, (unsigned char *)buffer, len);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@@ -438,6 +438,10 @@ static esp_err_t mqtt_write_data(esp_mqtt_client_handle_t client)
|
|||||||
ESP_LOGE(TAG, "Error write data or timeout, written len = %d", write_len);
|
ESP_LOGE(TAG, "Error write data or timeout, written len = %d", write_len);
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
|
/* we've just sent a mqtt control packet, update keepalive counter
|
||||||
|
* [MQTT-3.1.2-23]
|
||||||
|
*/
|
||||||
|
client->keepalive_tick = platform_tick_get_ms();
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -630,10 +634,6 @@ static esp_err_t mqtt_process_receive(esp_mqtt_client_handle_t client)
|
|||||||
esp_mqtt_dispatch_event(client);
|
esp_mqtt_dispatch_event(client);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MQTT_MSG_TYPE_PINGREQ:
|
|
||||||
client->mqtt_state.outbound_message = mqtt_msg_pingresp(&client->mqtt_state.mqtt_connection);
|
|
||||||
mqtt_write_data(client);
|
|
||||||
break;
|
|
||||||
case MQTT_MSG_TYPE_PINGRESP:
|
case MQTT_MSG_TYPE_PINGRESP:
|
||||||
ESP_LOGD(TAG, "MQTT_MSG_TYPE_PINGRESP");
|
ESP_LOGD(TAG, "MQTT_MSG_TYPE_PINGRESP");
|
||||||
// Ignore
|
// Ignore
|
||||||
@@ -702,7 +702,6 @@ static void esp_mqtt_task(void *pv)
|
|||||||
esp_mqtt_abort_connection(client);
|
esp_mqtt_abort_connection(client);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
client->keepalive_tick = platform_tick_get_ms();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Delete mesaage after 30 senconds
|
//Delete mesaage after 30 senconds
|
||||||
@@ -741,7 +740,6 @@ esp_err_t esp_mqtt_client_start(esp_mqtt_client_handle_t client)
|
|||||||
ESP_LOGE(TAG, "Error create mqtt task");
|
ESP_LOGE(TAG, "Error create mqtt task");
|
||||||
return ESP_FAIL;
|
return ESP_FAIL;
|
||||||
}
|
}
|
||||||
xEventGroupClearBits(client->status_bits, STOPPED_BIT);
|
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user