Commit Graph

137 Commits

Author SHA1 Message Date
Mahavir Jain
f93304d36e
esp_http_client: free cached data in case connection gets closed for redirection
In case of `esp_http_client_read` based workflow, we cache data that is received
during fetch header stage. In case, there is URL redirection and we have to close
the connection on URL, port change then we must discard earlier cached data.

Closes AUD-4158
2022-10-26 10:11:09 +05:30
Ivan Grokhotkov
401c10ecfb build system: re-add -Wno-format as private flag for some components 2022-08-03 16:42:47 +04:00
David Cermak
5c383d7b73 esp_netif/lwip: Fix deps cycles to "lwip -> esp_netif -> phy-drivers"
Fix dependency tree so that lwip doesn't depend on any specific network
interface component.
Network interface drivers shall depend on esp_netif.
esp_netif shall depend on lwip (but not on any specific interface
driver) -- it optionally depends on vfs and esp_eth (need ethernet
header for L2/bridge mode)
2022-07-20 14:59:07 +02:00
Laukik Hase
7115881a97
esp_http_client/esp_https_ota: Removed errno checks
- Returned -ESP_ERR_HTTP_EAGAIN for timeout errors from
  esp_http_client whenever tcp transport layer returns
  connection timeout
- Removed redundant conditional statements as required

Co-authored-by: Shubham Kulkarni <shubham.kulkarni@espressif.com>
2022-05-31 15:04:21 +05:30
Ivan Grokhotkov
47659be5b8
build system: remove lwip from common requirements
lwip was added to common requirements list to provide "sys/socket.h"
header to all components without additional requirements specified.

However, lwip pulls in a lot of dependencies on other components.
This commit removes lwip from common requirements to reduce the number
of components in G1-only apps.

To compensate for this removal, the following changes are made:
- newlib (which is a common requirement) has a public dependency on
  lwip if lwip is present in the build. This ensures that sys/socket.h
  is available as long as lwip component is included into the build.
- lwip is now a public requirement of esp-tls since esp_tls.h includes
  sys/socket.h header.
- lwip is now a public requirement o esp_http_client because
  sys/socket.h is included from esp_http_client.h
- lwip is now a private requirement of esp_wifi for "smartconfig_ack"
- lwip is now a private requirement of mqtt for socket functions
- lwip is now a public requirement of tcp_transport because
  esp_transport_tcp.h includes sys/socket.h header.
- mbedtls checks if lwip component is present in the build. If yes,
  net_sockets.c is added to the build, along with the dependency on
  lwip. Previously lwip was a public requirement of mbedtls
  unconditionally.

system/g1_components test app is updated to reflect the changes

Default public dependencies of a component before and after this
change, except common requirements:

- esp_timer (public dependency of freertos)
- bootloader_support (public dependency of esp_hw_support)
- vfs (public dependency of lwip)
- esp_wifi (public dependency of lwip)
- esp_event (public dependency of esp_wifi)
- esp_netif (public dependency of esp_event)
- esp_eth (public dependency of esp_netif)
- esp_phy (public dependency of esp_wifi)

After:

- esp_timer (public dependency of freertos)
- bootloader_support (public dependency of esp_hw_support)

Altogether, the following components have been always added as
public requirements to all other components, and are not added now
([breaking-change]):

- lwip
- vfs
- esp_wifi
- esp_event
- esp_netif
- esp_eth
- esp_phy

Application components now need to explicitly declare dependencies on
these components.
2022-05-02 20:47:17 +02:00
Harshit Malpani
437d90c408 esp_http_client: Fix redirect by resetting auth_header before parsing 2022-04-25 05:16:49 +00:00
Shubham Kulkarni
b4456bff97 esp_http_client: Add comment for clearing location field in esp_http_client_prepare 2022-03-24 06:23:17 +00:00
Nicklas Frahm
660ca96e23 esp_http_client: fix redirect by resetting location before parsing
Closes #8563.

Signed-off-by: Nicklas Frahm <nicklas.frahm@gmail.com>
2022-03-24 06:23:17 +00:00
Shubham Kulkarni
ec6f222625 esp_http_client: Add new status code 303 and 308 2022-03-21 04:27:43 +00:00
Shubham Kulkarni
18fa343161 esp_http_client: Cache received data in http_on_body callback.
This change fixes issue with data loss when multiple body chunks are
received after calling esp_http_client_fetch_headers.
2022-03-01 15:41:36 +00:00
morris
ef00bd59dc esp_rom: extract int matrix route and cpu ticks getter 2022-02-09 13:52:20 +08:00
Laukik Hase
ca84d2d6c9 esp_http_client: Added event for HTTP redirect
- Allows users to manually intercept and process the HTTP redirection
 when disable_auto_redirect (from the esp_http_client handle) is set to true

Closes https://github.com/espressif/esp-idf/issues/8029
2022-01-12 11:40:32 +05:30
Mahavir Jain
8e94cf2bb1 Add http_parser (new component) dependency 2022-01-11 10:26:25 +05:30
Chen Wu
c10683f493 http: Fix parsing invalid url cause to crash
Reason:
For example, if an url is lack of leading 'http:' by mistake, it causes to http_parser_parse_url() cannot parse http host item,
and then pass the null host pointer to _get_host_header(), crash happens.

Fix:
http added null pointer check now.

Closes https://jira.espressif.com:8443/browse/ESPAT-953
2021-12-02 14:15:43 +08:00
xutao
10377ce2ff esp_http_client: add a get HTTP client session errno api for esp_http_client 2021-11-24 17:23:09 +08:00
Roland Dobai
766aa57084 Build & config: Remove leftover files from the unsupported "make" build system 2021-11-11 15:32:36 +01:00
Cao Sen Miao
599227a1b6 ESP8684: Add esp8684 target to other repo for passing build 2021-11-06 17:33:45 +08:00
Shubham Kulkarni
5bf49e1cd6 esp_http_client: Support handling larger content lengths
Closes https://github.com/espressif/esp-idf/issues/6580
2021-10-29 18:14:22 +08:00
Shubham Kulkarni
436249de4f esp_http_client: Disable HTTP digest auth by default 2021-10-29 18:14:22 +08:00
yuanjm
9f875b8db5 esp_http_client: Fix HEAD request will affect the all next HTTP requests unless we close the HTTP request
Closes https://github.com/espressif/esp-idf/issues/7777
2021-10-28 19:53:12 +08:00
Harshit Malpani
2085e4eb92 esp_http_client: apply generic error check macros 2021-10-20 14:40:32 +05:30
Derossi Carneiro Neto
341d3e107c esp_http_client_cleanup, if client->transport_list was null, it generated an exception when calling esp_transport_list_destroy
https://github.com/espressif/esp-idf/pull/7695

Signed-off-by: Harshit Malpani <harshit.malpani@espressif.com>
2021-10-18 10:50:45 +05:30
Vikram Dattu
1c57dbcb3c esp_http_client: Fixed handling of EAGAIN return
For https connection `ESP_TLS_ERR_SSL_WANT_READ` of esp_transport_read was getting treated as error.
Treated this as a timeout to fix connection abort issue!

Also handled http connection EAGAIN with `errno == EAGAIN` check.

Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
2021-09-07 14:33:49 +05:30
Jon Maloney
c8b7f7a5d3 esp_http_client: Support client key password for HTTPS connections.
Closes https://github.com/espressif/esp-idf/pull/7420
Closes https://github.com/espressif/esp-idf/issues/7418

Signed-off-by: Aditya Patwardhan <aditya.patwardhan@espressif.com>
2021-08-25 18:27:31 +05:30
yuanjm
fc8668a739 esp_http_client: Fix disable CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS will build error
Closes https://github.com/espressif/esp-idf/issues/7361
2021-08-17 19:53:47 +08:00
yuanjm
981287900e esp_http_client: Support HTTP_EVENT_ERROR event
Closes https://github.com/espressif/esp-idf/issues/7280
2021-08-02 14:33:50 +08:00
Alex Henrie
5242e048d4 Fix memory leak on error path in http_header_set_format 2021-07-23 17:48:45 +05:30
Alex Henrie
b07ad7a08d Fix memory leak on error path in md5_printf 2021-07-23 17:48:45 +05:30
yuanjm
02367b44ef esp_http_client: Fix when receive FIN, close the connection in internal.
Closes https://github.com/espressif/esp-idf/issues/7036
2021-07-23 12:16:17 +08:00
Shubham Kulkarni
3064487c20 esp_https_ota: Add check for HTTP error codes and corresponding error logs
Closes: https://github.com/espressif/esp-idf/issues/7058
2021-06-02 11:19:30 +00:00
Jan Brudny
967e057906 esp-tls, esp_http_client and esp_http_server: update copyright notice 2021-05-31 20:06:09 +08:00
0xFEEDC0DE64
0f3ad80a99 const corrections for esp_http_client_set_password()
Signed-off-by: Shubham Kulkarni <shubham.kulkarni@espressif.com>

Closes: https://github.com/espressif/esp-idf/pull/6941
2021-05-10 13:03:09 +05:30
yuanjm
754ec7b278 esp_http_client: Add API to set http client timeout value
Closes https://github.com/espressif/esp-idf/issues/6984
2021-05-06 13:55:12 +08:00
Shubham Kulkarni
b148433fbd esp_http_client_read: Add check for esp_http_client_is_complete_data_received before returning ESP_FAIL
Closes: https://github.com/espressif/esp-idf/issues/6772
2021-04-21 17:28:54 +05:30
Jörg Henne
19024671ea esp_http_client: Make http_utils_get_string_between and http_utils_str_starts_with case insensitive
Closes: https://github.com/espressif/esp-idf/pull/6841
Closes: https://github.com/espressif/esp-idf/issues/6840

Signed-off-by: Shubham Kulkarni <shubham.kulkarni@espressif.com>
2021-04-09 06:03:02 +00:00
Aditya Patwardhan
f66bdf1233 esp_http_client: Enable support of crt_bundle in esp_http_client 2021-04-07 05:31:21 +00:00
Shubham Kulkarni
1bacc13628 esp_http_client: Do not overwrite HTTP method in case of chunk request
Closes https://github.com/espressif/esp-idf/issues/6234
2021-03-31 10:53:36 +00:00
Shubham Kulkarni
4f6e0c1d27 esp_http_client: Add config option for HTTP Digest auth 2021-03-23 11:58:35 +05:30
0xFEEDC0DE64
a9c6fbe8d3 Added cert and key length options
Closes https://github.com/espressif/esp-idf/pull/6556

Signed-off-by: Shubham Kulkarni <shubham.kulkarni@espressif.com>
2021-03-23 11:58:35 +05:30
yuanjm
c79a907e4f components: Remove repeated keep alive function by ssl layer function
In esp_http_client and esp_websocket_client components, esp_transport_tcp_set_keep_alive has been called and keep-alive config has been saved in ssl->cfg.keep_alive_cfg,
So no need to call esp_transport_ssl_set_keep_alive again.
2021-03-10 02:19:29 +00:00
yuanjm
bead3599ab components: Support bind socket to specified interface in esp_http_client and esp_websocket_client component 2021-03-10 02:19:29 +00:00
yuanjm
e309a0ea6f esp_http_client: Optimize code structure 2021-02-23 14:09:40 +08:00
Clickau
308c31e2f1 esp_http_client: fix truncated headers
Signed-off-by: yuanjm <yuanjianmin@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/6370
2021-02-23 09:59:23 +08:00
David Cermak
1921ae8973 tcp_transport: Reduce lwip dependecy for tcp_transport/http_client 2021-02-16 09:01:35 +01:00
aditi_lonkar
89bf9404a5 esp_http_client: Fix some memory leak issues by coverity static analyzer. 2021-01-25 03:37:47 +00:00
Shubham Kulkarni
b53e46a68e Add options for esp_http_client and esp_websocket_client to support keepalive 2021-01-22 06:56:28 +00:00
morris
753a929525 global: fix sign-compare warnings 2021-01-12 14:05:08 +08:00
David Čermák
e1d9abafa8 Merge branch 'bugfix/http_client_test_memcorupt' into 'master'
ci/test: Fix esp_http_client test not to use pointer after free

Closes IDFCI-350

See merge request espressif/esp-idf!11829
2021-01-05 15:15:32 +08:00
Shubham Kulkarni
6337ce9c3c esp_http_client.c: Clear raw_len for response buffer after dispatching HTTP_EVENT_ON_FINISH event
Closes: https://github.com/espressif/esp-idf/issues/6146
2021-01-04 15:39:39 +05:30
David Cermak
2c50ec2cf9 ci/test: Fix esp_http_client test not to use pointer after free 2020-12-30 05:33:51 +01:00