Sean DuBois
58775cce6e
fix(ws_transport): Fix crash when reading
...
When parsing WS framing protocol integer promotion would cause
invalid values to be read. Acting upon these values would eventually
cause a crash
Fixes esp-protocols#645
2024-09-09 12:32:37 -04:00
Suren Gabrielyan
09c8b1f618
fix(ws_transport): decouple WebSocket transport from foundation initialization
2024-07-08 14:59:15 +04:00
Alexey Lapshin
ed6e497c6f
feat(build): add COMPILER_STATIC_ANALYZER option
2024-06-18 14:25:37 +08:00
Suren Gabrielyan
8384b2c76f
fix(ws_transport): utility functions minor improvments
2024-05-20 16:26:40 +04:00
Richard Allen
10a2c2ccc9
fix(ws_transport): fixed server-key
corruption
...
When first fragment is sent over HTTP during websocket
connection, defer buffering of fragment until after the
websocket server-key is validated.
This order is required because the first fragment buffering
overwrites the memory holding the server-key headers.
Fixes 2267d4b
Fixes https://github.com/espressif/esp-protocols/issues/396
PR https://github.com/espressif/esp-idf/pull/13724
2024-05-20 16:25:53 +04:00
Suren Gabrielyan
2267d4b6b5
fix(ws_transport): fix first fragment losting during websocket connection
2024-04-03 17:57:37 +04:00
KonstantinKondrashov
e72061695e
all: Removes unnecessary newline character in logs
...
Closes https://github.com/espressif/esp-idf/issues/11465
2023-06-09 03:31:21 +08:00
Euripedes Rocha
d6db90a3cd
[tcp_transport] - Adds Socks4 proxy transport
...
- Basic implementation of Socks4 protocol.
- Introduce basic host testing.
2023-03-27 14:46:40 +02:00
Steinbart Andreas (HAU-EDS)
9def9b6a03
[ws_transport] - Added esp_transport_ws_get_upgrade_request_status
API
2023-02-16 12:19:40 +00:00
yuanjianmin
fecf4768f0
tcp_transport: Add authorization header for websocket client
2023-02-02 17:35:44 +08:00
Harshit Malpani
0635dc36c1
tcp_transport: Update tcp_transport to support linux build
2023-01-04 11:17:29 +05:30
Euripedes Rocha
56a54afae9
[tcp_transport] Bugfix: Remove unecessary mask_key check
...
- In the processing of WS payload the check for a valid mask_key was
made by checking for a valid address. The address is always valid and
the test is meaningless.
- Mask key is initialized in the process of header reading and set to 0
in case of mask not set.
2022-09-27 11:00:37 +02:00
AndriiFilippov
0013ad5bb9
Replaced logging tags with lower case in tcp_transport component to unite all tags under common structure.
2022-08-16 08:38:57 +00:00
Euripedes Rocha
5778a7c726
[tcp_transport] Fix initialition of transport
...
- Foundation was initialized only for SSL.
- Removed base from list.
- Changed SSL and TCP initialition.
- Clean of state data structures.
2022-07-14 12:29:58 +00:00
Li Jingyi
21d65931fc
tcp_transport: add websocket dynamic buffer feature
...
Free websocket transport buffer when connection succeed to save peak heap cost about WS_BUFFER_SIZE.
2022-06-08 19:13:25 +00:00
MacDue
1ca3a4fbe3
transport_ws: Parse and expose frame fin flag
...
Note: esp_websocket_client still needs patching to expose this
2022-04-12 11:31:51 +01:00
Euripedes Rocha
ae8eeaade9
tcp_transport: Fix Websocket transport initialization
...
In case of a failure in alocation of WS transport handle, parent leaks.
2021-12-06 14:28:30 -03:00
liuhan
8b02c9026a
transport: Add CONFI_WS_TRANSPORT for optimize the code size
2021-06-22 10:51:04 +08:00
David Cermak
6cf077169e
tcp_transport: Rework test to split test code and use fixtures
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
aditi_lonkar
7bf205162c
tcp_transport: Fix some memory leak issues by coverity static analyzer.
2021-01-25 03:37:47 +00: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
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
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
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
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
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
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
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
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
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
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
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
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