This commit is contained in:
@@ -148,6 +148,12 @@ static esp_err_t http_event_handler(esp_http_client_event_t *evt)
|
||||
|
||||
static esp_err_t http_request(const char *url, http_sink_t *sink)
|
||||
{
|
||||
if (wifi_manager_acquire_net_lock(pdMS_TO_TICKS(15000)) != ESP_OK) {
|
||||
ESP_LOGW(TAG, "Network lock busy (e.g. OTA update in progress), deferring fetch %s", url);
|
||||
return ESP_ERR_TIMEOUT;
|
||||
}
|
||||
|
||||
esp_err_t overall_ret = ESP_FAIL;
|
||||
for (int attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
|
||||
if (sink->file != NULL) {
|
||||
rewind(sink->file);
|
||||
@@ -168,7 +174,8 @@ static esp_err_t http_request(const char *url, http_sink_t *sink)
|
||||
};
|
||||
esp_http_client_handle_t client = esp_http_client_init(&cfg);
|
||||
if (client == NULL) {
|
||||
return ESP_ERR_NO_MEM;
|
||||
overall_ret = ESP_ERR_NO_MEM;
|
||||
break;
|
||||
}
|
||||
|
||||
esp_http_client_set_method(client, HTTP_METHOD_GET);
|
||||
@@ -181,17 +188,21 @@ static esp_err_t http_request(const char *url, http_sink_t *sink)
|
||||
|
||||
ESP_LOGD(TAG, "GET %s -> %s (status %d)", url, esp_err_to_name(ret), status);
|
||||
if (ret == ESP_OK && status >= 200 && status < 300) {
|
||||
return ESP_OK;
|
||||
overall_ret = ESP_OK;
|
||||
break;
|
||||
}
|
||||
if (ret == ESP_OK && (status < 200 || status >= 300)) {
|
||||
ESP_LOGW(TAG, "HTTP GET returned status %d for %s", status, url);
|
||||
}
|
||||
if (sink->err != ESP_OK) {
|
||||
return sink->err;
|
||||
overall_ret = sink->err;
|
||||
break;
|
||||
}
|
||||
vTaskDelay(pdMS_TO_TICKS(500));
|
||||
}
|
||||
return ESP_FAIL;
|
||||
|
||||
wifi_manager_release_net_lock();
|
||||
return overall_ret;
|
||||
}
|
||||
|
||||
static esp_err_t http_get_json(const char *url, char **out_buf)
|
||||
|
||||
Reference in New Issue
Block a user