Skip to content

Commit bfc5e1b

Browse files
Merge branch 'feature/store_respnse_status_code_before_header_complete' into 'master'
feat(esp_http_client): Add HTTP_EVENT_ON_STATUS_CODE to notify early status code acquisition Closes IDF-13452 See merge request espressif/esp-idf!40244
2 parents 76d24d2 + 5cc8740 commit bfc5e1b

File tree

9 files changed

+22
-0
lines changed

9 files changed

+22
-0
lines changed

components/esp_eth/test_apps/main/esp_eth_test_apps.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -638,6 +638,8 @@ esp_err_t http_event_handle(esp_http_client_event_t *evt)
638638
case HTTP_EVENT_REDIRECT:
639639
ESP_LOGI(TAG, "HTTP_EVENT_REDIRECT");
640640
break;
641+
default:
642+
break;
641643
}
642644
return ESP_OK;
643645
}

components/esp_http_client/esp_http_client.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,15 @@ static int http_on_url(http_parser *parser, const char *at, size_t length)
236236

237237
static int http_on_status(http_parser *parser, const char *at, size_t length)
238238
{
239+
esp_http_client_handle_t client = parser->data;
240+
ESP_LOGD(TAG, "http_on_status");
241+
242+
/* Store the status code in the response structure */
243+
client->response->status_code = parser->status_code;
244+
245+
http_dispatch_event(client, HTTP_EVENT_ON_STATUS_CODE, &client->response->status_code, sizeof(int));
246+
http_dispatch_event_to_event_loop(HTTP_EVENT_ON_STATUS_CODE, &client, sizeof(esp_http_client_handle_t));
247+
239248
return 0;
240249
}
241250

components/esp_http_client/include/esp_http_client.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ typedef enum {
4040
and will be deprecated in future versions esp-idf */
4141
HTTP_EVENT_ON_HEADER, /*!< Occurs when receiving each header sent from the server */
4242
HTTP_EVENT_ON_HEADERS_COMPLETE, /*!< Occurs when all headers are received on the client side */
43+
HTTP_EVENT_ON_STATUS_CODE, /*!< Occurs when receiving the HTTP status code from the server */
4344
HTTP_EVENT_ON_DATA, /*!< Occurs when receiving data from the server, possibly multiple portions of the packet */
4445
HTTP_EVENT_ON_FINISH, /*!< Occurs when finish a HTTP session */
4546
HTTP_EVENT_DISCONNECTED, /*!< The connection has been disconnected */

docs/en/api-reference/protocols/esp_http_client.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ Expected data types for different HTTP Client events in the event loop are as fo
131131
- HTTP_EVENT_HEADERS_SENT : ``esp_http_client_handle_t``
132132
- HTTP_EVENT_ON_HEADER : ``esp_http_client_handle_t``
133133
- HTTP_EVENT_ON_HEADERS_COMPLETE: ``esp_http_client_handle_t``
134+
- HTTP_EVENT_ON_STATUS_CODE : ``esp_http_client_handle_t``
134135
- HTTP_EVENT_ON_DATA : ``esp_http_client_on_data_t``
135136
- HTTP_EVENT_ON_FINISH : ``esp_http_client_handle_t``
136137
- HTTP_EVENT_DISCONNECTED : ``esp_http_client_handle_t``

docs/zh_CN/api-reference/protocols/esp_http_client.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ ESP HTTP 客户端诊断信息
131131
- HTTP_EVENT_HEADERS_SENT : ``esp_http_client_handle_t``
132132
- HTTP_EVENT_ON_HEADER : ``esp_http_client_handle_t``
133133
- HTTP_EVENT_ON_HEADERS_COMPLETE: ``esp_http_client_handle_t``
134+
- HTTP_EVENT_ON_STATUS_CODE : ``esp_http_client_handle_t``
134135
- HTTP_EVENT_ON_DATA : ``esp_http_client_on_data_t``
135136
- HTTP_EVENT_ON_FINISH : ``esp_http_client_handle_t``
136137
- HTTP_EVENT_DISCONNECTED : ``esp_http_client_handle_t``

examples/protocols/dns_over_https/components/dns_over_https/dns_over_https.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
117117
case HTTP_EVENT_REDIRECT:
118118
ESP_LOGE(TAG, "HTTP_EVENT_REDIRECT: Not supported(%d)", esp_http_client_get_status_code(evt->client));
119119
break;
120+
default:
121+
break;
120122
}
121123
return ESP_OK;
122124
}

examples/protocols/esp_http_client/main/esp_http_client_example.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
139139
esp_http_client_set_header(evt->client, "Accept", "text/html");
140140
esp_http_client_set_redirection(evt->client);
141141
break;
142+
default:
143+
break;
142144
}
143145
return ESP_OK;
144146
}

examples/system/ota/partitions_ota/main/app_main.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
8787
case HTTP_EVENT_REDIRECT:
8888
ESP_LOGD(TAG, "HTTP_EVENT_REDIRECT");
8989
break;
90+
default:
91+
break;
9092
}
9193
return ESP_OK;
9294
}

examples/system/ota/simple_ota_example/main/simple_ota_example.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ esp_err_t _http_event_handler(esp_http_client_event_t *evt)
7575
case HTTP_EVENT_REDIRECT:
7676
ESP_LOGD(TAG, "HTTP_EVENT_REDIRECT");
7777
break;
78+
default:
79+
break;
7880
}
7981
return ESP_OK;
8082
}

0 commit comments

Comments
 (0)