fix some keepalives issues (#51)

* merge some changes

* fix blocking issue
This commit is contained in:
Ivan Aponte
2018-06-01 12:06:53 -04:00
committed by Tuan
parent b2916ccaf9
commit 87ef46a9b4
2 changed files with 11 additions and 7 deletions

View File

@@ -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)
{
int ret;
int poll = -1, ret;
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);
if (ret == 0) {
return -1;

View File

@@ -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);
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;
}
@@ -630,10 +634,6 @@ static esp_err_t mqtt_process_receive(esp_mqtt_client_handle_t client)
esp_mqtt_dispatch_event(client);
}
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:
ESP_LOGD(TAG, "MQTT_MSG_TYPE_PINGRESP");
// Ignore
@@ -702,7 +702,6 @@ static void esp_mqtt_task(void *pv)
esp_mqtt_abort_connection(client);
break;
}
client->keepalive_tick = platform_tick_get_ms();
}
//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");
return ESP_FAIL;
}
xEventGroupClearBits(client->status_bits, STOPPED_BIT);
return ESP_OK;
}