mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-02 12:14:32 +02:00
bugfix(ota): update ota to download valid bin file
This commit is contained in:
@@ -245,9 +245,9 @@ static void ota_example_task(void *pvParameter)
|
|||||||
}
|
}
|
||||||
ESP_LOGI(TAG, "esp_ota_begin succeeded");
|
ESP_LOGI(TAG, "esp_ota_begin succeeded");
|
||||||
|
|
||||||
bool resp_body_start = false, flag = true;
|
bool resp_body_start = false, socket_flag = true, http_200_flag = false;
|
||||||
/*deal with all receive packet*/
|
/*deal with all receive packet*/
|
||||||
while (flag) {
|
while (socket_flag) {
|
||||||
memset(text, 0, TEXT_BUFFSIZE);
|
memset(text, 0, TEXT_BUFFSIZE);
|
||||||
memset(ota_write_data, 0, BUFFSIZE);
|
memset(ota_write_data, 0, BUFFSIZE);
|
||||||
int buff_len = recv(socket_id, text, TEXT_BUFFSIZE, 0);
|
int buff_len = recv(socket_id, text, TEXT_BUFFSIZE, 0);
|
||||||
@@ -255,6 +255,12 @@ static void ota_example_task(void *pvParameter)
|
|||||||
ESP_LOGE(TAG, "Error: receive data error! errno=%d", errno);
|
ESP_LOGE(TAG, "Error: receive data error! errno=%d", errno);
|
||||||
task_fatal_error();
|
task_fatal_error();
|
||||||
} else if (buff_len > 0 && !resp_body_start) { /*deal with response header*/
|
} else if (buff_len > 0 && !resp_body_start) { /*deal with response header*/
|
||||||
|
// only start ota when server response 200 state code
|
||||||
|
if (strstr(text, "200") == NULL && !http_200_flag) {
|
||||||
|
ESP_LOGE(TAG, "ota url is invalid or bin is not exist");
|
||||||
|
task_fatal_error();
|
||||||
|
}
|
||||||
|
http_200_flag = true;
|
||||||
memcpy(ota_write_data, text, buff_len);
|
memcpy(ota_write_data, text, buff_len);
|
||||||
resp_body_start = read_past_http_header(text, buff_len, update_handle);
|
resp_body_start = read_past_http_header(text, buff_len, update_handle);
|
||||||
} else if (buff_len > 0 && resp_body_start) { /*deal with response body*/
|
} else if (buff_len > 0 && resp_body_start) { /*deal with response body*/
|
||||||
@@ -267,7 +273,7 @@ static void ota_example_task(void *pvParameter)
|
|||||||
binary_file_length += buff_len;
|
binary_file_length += buff_len;
|
||||||
ESP_LOGI(TAG, "Have written image length %d", binary_file_length);
|
ESP_LOGI(TAG, "Have written image length %d", binary_file_length);
|
||||||
} else if (buff_len == 0) { /*packet over*/
|
} else if (buff_len == 0) { /*packet over*/
|
||||||
flag = false;
|
socket_flag = false;
|
||||||
ESP_LOGI(TAG, "Connection closed, all packets received");
|
ESP_LOGI(TAG, "Connection closed, all packets received");
|
||||||
close(socket_id);
|
close(socket_id);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user