Axel Lin
9d07e89f13
tcp_transport: Fix NULL pointer dereference in esp_transport_esp_tls_create
...
Add missing NULL checking to prevent NULL pointer dereference if calloc failed.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
2021-09-08 11:04:08 +08:00
liuhan
37e08d38a4
tls: Modify tls optimize both mbedtls and wolfssl
2021-06-28 10:22:24 +08:00
David Čermák
b1981204f3
Merge branch 'bugfix/tcp_transport_cleanup_tls_ctx' into 'master'
...
tcp_transport: Fix to cleanup esp-tls context on close
See merge request espressif/esp-idf!14076
2021-06-24 04:24:15 +00:00
liuhan
8b02c9026a
transport: Add CONFI_WS_TRANSPORT for optimize the code size
2021-06-22 10:51:04 +08:00
David Cermak
1a7e75036b
tcp_transport: Fix to cleanup esp-tls context on close
2021-06-20 21:21:22 +02:00
David Cermak
f68d7d7023
esp_tls: Renamed public API to indicate the Plain TCP connection
...
Also added parameter checks if used from as a public API
and updated the `is_plein_tcp` description that it's possible to connect
directly using plain tcp transport with the new API.
2021-05-25 10:55:50 +02:00
David Cermak
38fd2ed10b
tcp_transport: Rename common tcp/ssl internals to base-transport
...
Also uses INVALID_SOCKET macro instead of magic number (-1)
2021-05-25 10:55:45 +02:00
David Cermak
6cf077169e
tcp_transport: Rework test to split test code and use fixtures
2021-05-25 07:04:02 +02:00
David Cermak
f249ddd9ae
esp_transport: Use tcp_connect from esp_tls for plain TCP
...
so we don't have to allocate esp_tls structure (~2KB) to save heap when using plain TCP connection
Closes https://github.com/espressif/esp-idf/issues/6940
2021-05-25 07:04:02 +02:00
Axel Lin
aa333d4ab9
tcp_transport: Fix NULL pointer dereference if esp_transport_init returns NULL
...
Add missing NULL test for esp_transport_init() call.
Otherwise, it will hit NULL pointer dereference when assign t->_get_socket.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
2021-05-03 15:46:59 +08:00
Aditya Patwardhan
d74f7d2d04
tcp_transport: Add option to enable crt_bundle for SSL connection
2021-04-07 05:31:21 +00:00
David Cermak
86bcd9fc21
tcp_transport: Fix error handling of esp_tls_init()
2021-03-24 12:24:23 +00:00
David Cermak
70361fc35d
tcp_transport/test: Fix wrong use of transport in set-interface
2021-03-11 19:21:00 +00:00
yuanjm
a412eb867c
tcp_transport: Add bind device function to unit test
2021-03-10 02:19:29 +00:00
yuanjm
c62cbd1254
transport: Support bind socket to specified interface in transport and esp-tls
2021-03-10 02:19:29 +00:00
David Cermak
1921ae8973
tcp_transport: Reduce lwip dependecy for tcp_transport/http_client
2021-02-16 09:01:35 +01:00
David Cermak
1fa0db8d44
tcp_transport: Allow for using transport independently from list
...
For compatibility reasons, support also transports separately if the transport is used
before attaching to parent list. In this case we create an internal context which is
independent on the foundation transport and used preferably
2021-02-16 09:01:35 +01:00
David Cermak
0e97517a1c
tcp_transport: Add unit test to exercise tcp/ssl transport init
2021-02-16 09:00:43 +01:00
David Cermak
6b318fe583
esp_tls: Updated connection method to use non-blocking connect
...
For better control over connection timeouts
To be in line with former tcp_transport, as esp-tls is not used for
plain tcp transports
2021-02-16 09:00:43 +01:00
David Cermak
2c28ffffee
tcp_transport/esp_tls: Use common TCP transport to reduce code duplication
...
For high level review of the changes.
2021-02-16 09:00:43 +01:00
David Cermak
391d7bf271
tcp_transport: Add TCP transport connection errors
...
Transport's error_handle is used to capture different types of errors
including esp_err_t from esp-tls and socket/system errors.
This change adds the following error codes for TCP transport:
* connection closed by a FIN flag (clean closure from server)
* DNS resolution problem
* connection timeout
These errors are already defined in esp-tls component and since this
component will be used in the future for both TCP and SSL transport, we
currently report these issues in transport::error_handle::esp_tls_last_error
of standard esp error type (esp_err_t)
Closes https://github.com/espressif/esp-mqtt/issues/182
2021-02-16 09:00:43 +01:00
aditi_lonkar
7bf205162c
tcp_transport: Fix some memory leak issues by coverity static analyzer.
2021-01-25 03:37:47 +00:00
David Čermák
a461f8f115
Merge branch 'bugfix/ws_transport_ping' into 'master'
...
ws_transport: Add option to propagate control packets to the app
Closes IDFGH-4478
See merge request espressif/esp-idf!11957
2021-01-22 19:21:43 +08:00
David Cermak
acc7bd2ca4
ws_transport: Add option to propagate control packets to the app
...
Client could choose if they want to receive control packets and handle
them.
* If disabled (default) the transport itself tries to handle PING
and CLOSE frames automatically during read operation. If handled
correctly, read outputs 0 indicating no (actual app) data received.
* if enabled, all control frames are passed to the application to be
processed there.
Closes https://github.com/espressif/esp-idf/issues/6307
2021-01-22 07:22:41 +00:00
yuanjm
044c3e3e74
Modify esp-tls and tcp_transport to support keep alive for tcp and ssl connection
...
Closes IDFGH-4543
2021-01-22 06:56:28 +00:00
David Cermak
ce519ee783
tcp_transport: Extend transport error storage for socket error
...
Everytime we report error and log errno, we also capture the actual
errno to an internal storage so that user application can retrieve
its value.
2020-11-12 12:46:22 +00:00
Angus Gratton
66fb5a29bb
Whitespace: Automated whitespace fixes (large commit)
...
Apply the pre-commit hook whitespace fixes to all files in the repo.
(Line endings, blank lines at end of file, trailing whitespace)
2020-11-11 07:36:35 +00:00
Aditya Patwardhan
fa42beac97
esp32/esp-tls: remove dependancy of esp_https_client and tcp_transport on mbedtls
2020-10-23 05:16:06 +00:00
Aditya Patwardhan
91b88acaec
tcp_transport: Added required API to support Digital Signature for SSL
2020-09-22 18:31:31 +05:30
Ivan Grokhotkov
b6467257b9
Merge branch 'feature/cmock_component' into 'master'
...
cmock as component replacing unity
See merge request espressif/esp-idf!9859
2020-09-10 16:06:20 +08:00
Jakob Hasse
20c068ef3b
cmock: added cmock as component
...
* changing dependencies from unity->cmock
* added component.mk and Makefile.projbuild
* ignore test dir in gen_esp_err_to_name.py
* added some brief introduction of CMock in IDF
2020-09-02 16:38:37 +08:00
xutao
bd2daccb22
transport: fix transport ssl blocking
...
In SSL mode, if `esp_transport_poll_read` function is used, the cache data in mebdtls will be blocked
2020-09-02 07:01:01 +00:00
David Cermak
5e9f8b52e7
tcp_transport: Added internal API for underlying socket, used for custom select on connection end for WS
...
Internal tcp_transport functions could now use custom socket operations.
This is used for WebSocket transport, when we typically wait for clean
connection closure, i.e. selecting for read/error with expected errno or
recv size=0 while socket readable (=connection terminated by FIN flag)
2020-08-18 06:42:22 +00:00
Chen Yi Qun
caaf62bdad
driver, http_client, web_socket, tcp_transport: remove __FILE__ from log messages
...
__FILE__ macro in the error messages adds full paths to the production binarys, remove __FILE__ from the ESP_LOGE.
Closes https://github.com/espressif/esp-idf/issues/5637
Merges https://github.com/espressif/esp-idf/pull/5638
2020-08-03 15:21:36 +08:00
Marius Vikhammer
a392e4e57b
websocket: add configurable ws_transport buffer size
...
Closes IDFGH-3566
Closes https://github.com/espressif/esp-idf/issues/5513
2020-07-20 10:02:31 +00:00
Aditya Patwardhan
423e600d46
secure_element: atecc608_ecdsa example
...
* Replaced crypotoauthlib with esp-cryptoauthlib
* Added menuconfig option for esp-tls about using HSM
* Added error codes for HSM in esp-tls,
* Added support to select different type of ATECC608A chips
* Added README, updated docs
* tcp_transport: Added option to enable secure_element for ssl
Closes https://github.com/espressif/esp-idf/issues/4432
2020-05-21 13:08:30 +05:30
David Cermak
a8e370eced
tcp_transport: unit test for tcp connection timeout
2020-05-05 15:53:09 +02:00
David Cermak
6182e6f303
tcp_transport: close to return error only for socket error or invalid args
...
Closes https://github.com/espressif/esp-idf/issues/4872
2020-05-05 15:53:09 +02:00
boarchuz
0c7204e934
tcp_transport: Implement connect timeout
...
Merges https://github.com/espressif/esp-idf/pull/3791
Closes https://github.com/espressif/esp-idf/issues/5004
2020-05-05 15:53:09 +02:00
Jiang Jiang Jian
80e5eb896c
Merge branch 'optimization/DNS_get_function' into 'master'
...
lw-ip:optimization DNS get function
Closes WIFI-1566
See merge request espressif/esp-idf!8244
2020-04-20 16:52:22 +08:00
Mahavir Jain
49ce8d3fe5
transport_ssl: reset state on connection closure
...
For url redirection cases (HTTP status 301/302), internal
transport ssl connection state must be reinitialized for
successful (new) connection on updated url.
Closes https://github.com/espressif/esp-idf/issues/4598
2020-04-15 15:22:32 +05:30
xueyunfei
8b036a8405
optimization DNS get function
2020-04-15 03:06:28 +00:00
David Cermak
14992e62c5
ws_client: fix fragmented send setting proper opcodes
...
Previous implementation violated the RFC by having both the actual opcode and WS_FIN flag set for all fragments of a message.
Fixed by setting the opcode only for the first fragment and WS_FIN for the last one
Closes IDFGH-2938
Closes https://github.com/espressif/esp-idf/issues/4974
2020-04-14 16:11:32 +02:00
Renz Bagaporo
3d0967a58a
test: declare requirements and include dirs private
2020-03-23 10:58:50 +08:00
Renz Bagaporo
4d9c573fb6
test, examples: use new component registration function
2020-03-23 10:58:48 +08:00
David Cermak
aa3b1da384
esp_tls: added connection timeout to esp_tls_conn_new_sync()
2020-01-16 07:32:19 +00:00
Angus Gratton
4ece6eedae
Merge branch 'bugfix/ws_rcv_exceed_buf' into 'master'
...
tcp_transport/ws_client: websockets now correctly handle messages longer than buffer
Closes IDF-1084 and IDF-1083
See merge request espressif/esp-idf!6740
2020-01-09 13:18:31 +08:00
David Cermak
b69ac4448e
tcp_transport: added API for client-key password
2020-01-06 21:16:24 +00:00
Marius Vikhammer
ffeda3003c
tcp_transport/ws_client: websockets now correctly handle messages longer than buffer
...
transport_ws can now be read multiple times in a row to read frames larger than the buffer.
Added reporting of total payload length and offset to the user in websocket_client.
Added local example test for long messages.
Closes IDF-1083
2020-01-06 17:18:13 +08:00
David N. Junod
9200250f51
Add User-Agent and additional headers to esp_websocket_client
...
Merges https://github.com/espressif/esp-idf/pull/4345
2019-11-21 21:14:29 +01:00
Angus Gratton
412b202741
Merge branch 'bugfix/ws_client_fix_wait_forever_timeout' into 'master'
...
ws_client: fix handling timeouts by websocket client.
Closes IDFGH-2161
See merge request espressif/esp-idf!6683
2019-11-20 07:44:25 +08:00
David Cermak
e1f982921a
ws_client: fix handling timeouts by websocket client.
...
tcp-transport component did not support wait forever. this update uses value of -1 to request this state.
websocket client uses timeouts in RTOS ticks. fixed recalculation to ms (including special value of -1) to use correctly tcp-transport component
Closes https://github.com/espressif/esp-idf/issues/4316
2019-11-18 10:59:41 +00:00
Marius Vikhammer
ed85046138
tcp_transport: added functionality for using ALPN with SSL
...
Closes IDF-1160
2019-11-13 11:33:13 +08:00
Angus Gratton
b7fd8166d5
Merge branch 'bugfix/ws_opcodes_fix' into 'master'
...
ws_client: fix for not sending ping responses, updated to pass events also for...
See merge request espressif/esp-idf!6111
2019-10-17 12:36:08 +08:00
David Cermak
abf9345b85
ws_client: fix for not sending ping responses, updated to pass events also for PING and PONG messages, added interfaces to send both binary and text data
...
closes https://github.com/espressif/esp-idf/issues/3982
2019-10-14 11:05:27 +02:00
David Cermak
555cc11a25
tcp_transport: fix possible buffer overflow in ws transport connect
...
closes IDF-692
2019-10-14 06:50:22 +00:00
David Cermak
ea955e1efc
ws_client: fix ping-pong mechanism to use mask, support reception of zero-payload PONG and sending non-zero-payload PING
...
Closes https://github.com/espressif/esp-idf/issues/3890
Closes https://github.com/espressif/esp-idf/issues/4138
2019-10-03 07:32:17 +02:00
Liu Han
3ca07b3e70
fix(transport): Fix a bug of the connection whether be active or not by timeout option when the select function return a correct value.
2019-09-12 13:55:47 +08:00
Ivan Grokhotkov
61a1a468bb
tcp_transport: replace transport_strcasestr with strcasestr
...
esp32-2019r1 toolchain version includes 'strcasestr', so the version
provided in tcp_transport component is no longer needed.
2019-08-15 17:51:54 +02:00
Angus Gratton
e8bdfe07ae
Merge branch 'feature/tls_psk_authentication' into 'master'
...
esp_tls: add psk verification mode
Closes IDFGH-992
See merge request espressif/esp-idf!5095
2019-08-12 12:45:34 +08:00
Renz Christian Bagaporo
4dd2b9edb1
components: fix incorrect include dir args
2019-08-09 08:40:17 +08:00
David Cermak
f3d6a34e7d
esp_tls: enable psk verification mode, added mqtt example using psk authentication
2019-08-07 14:27:40 +10:00
Angus Gratton
7ef5fa8a0a
Merge branch 'feature/transport_support_der_certs' into 'master'
...
tcp transport ssl DER-support
See merge request espressif/esp-idf!5627
2019-08-05 09:52:08 +08:00
David Cermak
25dd5e39af
esp-tls: Naming variables refering to certificates and keys in a neutral way to suggest that both PEM and DER format could be used, added comments descibing important details about using these formats
2019-08-02 09:25:16 +02:00
Henning Fleddermann
546b625433
add _der variants for esp_transport_ssl_set_(client_cert|client_key|cert_data)
...
Signed-off-by: David Cermak <cermak@espressif.com>
Merges https://github.com/espressif/esp-idf/pull/3783
2019-08-02 09:25:16 +02:00
Anton Maklakov
afbaf74007
tools: Mass fixing of empty prototypes (for -Wstrict-prototypes)
2019-08-01 16:28:56 +07:00
David Cermak
8fc02e860a
tcp_tansport: websocket layer modifies in-buffer data (for masked transports). This fix reverts the data back to original rather then making a copy.
...
Closes https://github.com/espressif/esp-idf/issues/3774
2019-07-16 09:47:18 +02:00
Angus Gratton
d67b9403e8
Merge branch 'feature/tcp_transport_pass_errors_stage1' into 'master'
...
esp-tls: capturing specific errors to be available in tcp_transport and then in application code
See merge request espressif/esp-idf!4782
2019-07-08 08:51:29 +08:00
David Cermak
587739391c
esp-tls: extending error handle to contain error descriptors with last mbedtls failure and latest certificate verification result flags, reworked tcp_transport to use this error handle
2019-07-04 20:55:10 +02:00
David Cermak
2972f96982
esp-tls: capturing specific errors to be available in tcp_transport and then in application code
2019-07-04 20:55:10 +02:00
Max Holtzberg
edbcb5b295
esp_transport_destroy: Fix memory leak
...
if tcp_transport component was used separately (e.g. using tranpsort_ssl.h directly without building list of transport) then it leaks memory on unitialization
Merges https://github.com/espressif/esp-idf/pull/3541
Closes https://github.com/espressif/esp-idf/issues/3531
Signed-off-by: David Cermak <cermak@espressif.com>
2019-07-04 11:07:41 +02:00
David Cermak
412dc95168
tcp_transport: added basic unit tests for init/destroy transports in lists or when used separately
2019-07-04 11:07:41 +02:00
Jitin George
c536c8fa5f
tcp_transport: Add API to allow skipping of certificate CN validation
2019-06-25 23:41:33 +00:00
Renz Christian Bagaporo
9eccd7c082
components: use new component registration api
2019-06-21 19:53:29 +08:00
Tuan
2a2d932cfe
esp_websocket_client: Add websocket client component
...
Closes https://github.com/espressif/esp-idf/issues/2829
2019-06-20 15:37:40 +08:00
David Cermak
243e0b229f
tcp_transport: fix minor memory leak found by static analyzer
...
Closes https://github.com/espressif/esp-idf/issues/3602
2019-06-10 14:28:42 +02:00
David Cermak
db121a56e1
tcp_transport: modified ws_read to read payload directly to the read buffer and separately from header bytes
...
Previous version read all data to the buffer including header which reduced maximum payload read. This version uses a local array to receive header and reads payload bytes to the buffer
2019-05-27 16:31:24 +02:00
David Cermak
d41d70b8ef
tcp_transport: reading http header in a chunked mode until header terminator received (or timeout) to correctly receive all header if fragmented
...
Closes https://github.com/espressif/esp-idf/issues/3461
2019-05-20 16:40:03 +02:00
Bas Verhoeven
16ee5663ad
transport_ws: Stop connecting when the parent's connect call has failed
...
Merges https://github.com/espressif/esp-idf/pull/3164
2019-04-04 16:14:42 +02:00
David Cermak
5141e0ec24
tcp_transport: ws fix on reception of longer data than receive buffer
2019-03-22 11:37:26 +01:00
morris
c159984264
separate rom from esp32 component to esp_rom
...
1. separate rom include files and linkscript to esp_rom
2. modefiy "include rom/xxx.h" to "include esp32/rom/xxx.h"
3. Forward compatible
4. update mqtt
2019-03-21 18:51:45 +08:00
Jitin George
d943c8de94
tcp_transport: Fix case sensitive header comparison
...
Closes https://github.com/espressif/esp-idf/issues/3106
2019-03-14 14:31:28 +05:30
Mahavir Jain
27e00cf7aa
esp_http_client: add support for using certs from global ca store
...
Closes https://github.com/espressif/esp-idf/issues/3062
2019-02-27 14:19:06 +05:30
rustyx
053219283d
Handle esp_tls_conn_read disconnection in ssl_read. Fixes #2805
...
Closes https://github.com/espressif/esp-idf/pull/2967
2019-01-23 16:47:23 +05:30
Ivan Grokhotkov
ad5d81df04
Merge branch 'feature/mqtt_before_connect_event' into 'master'
...
MQTT support for fragmented and packed messages
See merge request idf/esp-idf!3743
2019-01-11 15:38:23 +08:00
Jitin George
e2ae69f6fb
Minor Bugfixes in esp_http_client, tcp_transport and simple_ota_example
2019-01-07 16:33:41 +08:00
David Cermak
bed26be427
tcp_transport: modification of ws to read headers first in order to read the exact payload
...
closes https://github.com/espressif/esp-mqtt/issues/69
2019-01-03 09:22:40 +01:00
Ivan Grokhotkov
ee0dea3d0d
Merge branch 'bugfix/esp_http_client_async_crash' into 'master'
...
esp_http_client: Fix crash in async mode
See merge request idf/esp-idf!3551
2018-11-05 12:30:04 +08:00
Jitin George
3551b84c3a
esp_http_client: Fix crash in async mode
...
Closes https://github.com/espressif/esp-idf/issues/2624
2018-10-30 09:58:57 +00:00
David Cermak
0cdb33c9dd
mqtt: ssl mutual authentication example added per PR from github, corrected cmake build, updated per idf style
...
Merges https://github.com/espressif/esp-idf/pull/2490
2018-10-30 08:04:09 +01:00
Riccardo Binetti
9ce8e1e5a1
transport_ssl: add support for mutual SSL authentication
...
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-30 08:04:09 +01:00
David Cermak
0d4f5cc495
tcp_transport: transport set handle refactoring, web socket client name updated
2018-10-02 15:19:46 +02:00
David Cermak
e02225cc07
tcp_transport: renamed possibly generic function names to be esp_ prefixed and not to colide with user namespace
2018-10-02 14:16:48 +02:00
Anton Maklakov
2c5a25a42e
tcp_transport: Use getrandom() instead of rand() in the entire esp-mqtt
...
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-02 14:16:26 +02:00
Anton Maklakov
e3c6839802
tcp_transport: Fix warning, put in order the nearest code, replace sprintf with snprintf
...
Signed-off-by: David Cermak <cermak@espressif.com>
2018-10-02 14:15:27 +02:00
David Cermak
40c6cbb3ab
tcp_transport: renamed transport related header files to esp_ prefixed to avoid collisions
...
tcp_transport component used public header files such as 'transport.h', etc. which are too generic and might collide with user or user libraries headers
This change closes #2417
2018-10-02 14:15:00 +02:00
Jitin George
5309ca04d1
esp_http_client: Add support for non-blocking feature in esp_http_client_perform() API
...
Four internal APIs `esp_http_client_connect()`, `http_client_prepare_first_line()`, `esp_http_client_request_send()` and
`esp_http_client_send_post_data()` API have been added for perfoming connection establishment (sync as well as async),
preparing first line, sending request and sending post data respectively.
In `transport_ssl`, `ssl_connect_async()` API has been added for establishing asynchronous connection.
2018-09-24 05:42:28 +00:00
Renz Bagaporo
8f85fa1bfb
tcp_transport: list files manually in component cmake file
2018-09-19 16:48:31 +08:00
David Cermak
23345d2021
MQTT: Integrate esp-mqtt library into idf
...
added docs and tests for mqtt library, small fixes (removed warnings, option for custom outbox, websocket bug fixed for longer transports). refactored to use common tcp_transport component, support for CMake build system.
Closes #2108
2018-09-12 08:00:59 +02:00