Now the uri handler gets called immediately after the handshake. In the handler we can identify that this was the handshake by checking req->method as it is still a GET from the first part of the handshake the client has sent. On a normal websocket-frame-receive (when normally a websocket uriHandler gets called) this field is set to 0
Closes https://github.com/espressif/esp-idf/issues/6597
Because this is the 'simple' server example, it is probably where users will start out to understand the HTTP Server API; and also where they might come if they are having problems.
So I think it is useful to explain to users what to do if they see "httpd_parse: parse_block: request URI/header too long", which can easily happen if they submit a POST from an HTML form (for example). That certainly would have helped me!
Merges https://github.com/espressif/esp-idf/pull/6547
Signed-off-by: Shubham Kulkarni <shubham.kulkarni@espressif.com>
- Removes extra callback function, the code from the callback is integrated into the event handler code.
- Clarify usage of handler args, pass NULL as callback data instead of client, to avoid user confusion,
and add documentation on usage of handler_args.
This makes the test faster and more robust in very a busy WiFi environment
(our CI) and still exercises the scenario of fragmenting the message on
both mqtt and ssl levels (binary size to send > mqtt buffer size)
add multi register area descriptors into concrete port (initial)
add create/destroy of area descriptors into concrete port
add the list of descriptors in common slave interface structure and init/destroy in concrete slave port
move r/w callback functions into common slave
final update of common slave interface wrappers add override API option in concrete port
update slave examples to check new feature
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
esp_http_server: Add flag in sock_db to identify httpd_sess_close is called from httpd_session_close_lru
Closes IDF-2443
See merge request espressif/esp-idf!11543
the esp32-s2 chip.
* Added option to read and use previously burned efuse keys
* Added option for the user to save the DS parameters for
* development purpose.
* Updated required documentation.
the binary size check in example test was removed long time ago. Now we
have updated ttfw_idf to raise exception when performance standard is
not found. These fake performance check will be regarded as error.
Remove them now.
Issue:
Missing newline between header and attachment
Issue seen with email clients viz., AppleMail and YahooMail. Attachment is not renderable.
Some clients like Google mail, Samsung mail tolerate the issue.
Fix:
Added newline between header and attachment.
Closes https://github.com/espressif/esp-idf/issues/6098
Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
* make the project CMakelists to flash the external partition "pre_prov"
* Remove the dependancy of configure_ds.py on esptool.py
* Updated README
* Fix the help menu
https_server: Added WSS server example and some http(s)+ws updates
Closes IDFGH-3822, IDFGH-3668, IDFGH-3766, and IDFGH-3444
See merge request espressif/esp-idf!10262
To be in line with other interfaces, when deleting the driver and it's glue layer to esp-netif, we DO NOT delete the related esp-netif (since is was allocated and created outside of the glue code and it works the same way in esp-eth and esp-wifi driver/glue layers).
Closes https://github.com/espressif/esp-idf/issues/5486
Add TCP port files to provide Modbus TCP interface for communication
Add freemodbus add tcp support for common master/slave iface and tcp example based on socket API
The communication between master and slave checked for each example serial_master, serial_slave (use ModbusPoll TCP)
update tcp example according netif changes, fix ci issues
update TCP slave implementation
update example_test.py to to set IP through stdin
update API documentation
event bit instead of semahore to lock communication resource
update default options and master/slave port files
Closes https://github.com/espressif/esp-idf/issues/858
Closes IDF-452
By default it uses simple client connecting to https address. It is
possible to configure both server and client. As for example test the
configuration of both server and client connecting to each other on
Reuses most of the code from BG96. At this moment, this is not a
perfect support for other modules as the generic handlers for most
common modem functionality is not easily reusable. Refactoring to a
fully independent modem component will solve this.
Closes https://github.com/espressif/esp-idf/issues/5250
Add logic to set `FIN` flag automatically for transmitted WS frames, but
if `fragmented` option set indicating an expert/manual mode, then the
`FIN` flag is set according to the `final` option.
esp-modem netif glue layer implements esp-netif attach callback to setup corresponding driver functions and start the modem. The error code of esp_modem_start_ppp() was ignored and ESP_OK returned in all cases. Fixed by passing esp_modem_start_ppp()'s error code to post_attach callback.
Closes https://github.com/espressif/esp-idf/issues/5430
CoAP component relies on some mbedTLS crypto configuration
options, e.g. DTLS and PSK. These configuration options if
selected, have footprint impact on generic TLS examples like
https_request or https_ota as well.
Footprint of https_request example with/without change is per below:
$ ./tools/idf_size.py new_https_request.map --diff old_https_request.map
<CURRENT> MAP file: new_https_request.map
<REFERENCE> MAP file: old_https_request.map
Difference is counted as <CURRENT> - <REFERENCE>, i.e. a positive number means that <CURRENT> is larger.
Total sizes of <CURRENT>: <REFERENCE> Difference
DRAM .data size: 14796 bytes 14796
DRAM .bss size: 23560 bytes 23680 -120
Used static DRAM: 38356 bytes ( 142380 available, 21.2% used) 38476 -120 ( +120 available, +0 total)
Used static IRAM: 89045 bytes ( 42027 available, 67.9% used) 89045 ( +0 available, +0 total)
Flash code: 554231 bytes 563823 -9592
Flash rodata: 179000 bytes 181224 -2224
Total image size:~ 860632 bytes (.bin may be padded larger) 872568 -11936
This commit moves relevant config options to CoAP specific examples
and also adds some run time warnings if they are kept disabled.
Closes https://github.com/espressif/esp-idf/issues/5262
The interface name can be used in socket API, i.e. setsockopt(). The API esp_netif_get_netif_impl_name() shoudl be used to populate standard
interface structure struct ifreq.
If mdns answer hasn't been received within timeout, Value error would be raised, but the mdns-server-thread would still run, blocking CI jobs. Fixed by moving the raise statement within try-finally block
dut.expect() returns groups of a matching regex, but could be truncated upon reading/buffering. fixed by forcing expect to acquire exactly 8 octets of IPv6 address, i.e. not supporting short-handed entries such as fe80::0000..
Also remove event_queue_size from esp_modem_dte_t because
event_queue_size is only used in esp_modem_dte_init.
Fixes: 817c0e3019 ("esp_modem: UART runtime configuration of esp-modem")
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Basic set of configuration related to UART moved from KConfig
to runtime configuration structure to simplify reusing the component for
testing and examples.
Fixes Guru Meditation Error: Core 0 panic'ed (LoadProhibited) when config with
CONFIG_PM_ENABLE=y && CONFIG_PM_DFS_INIT_AUTO=y.
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Merges https://github.com/espressif/esp-idf/pull/4904
pppos_client example used the UART default clock configuration which might
cause issues if power management enabled. Settings updated to UART_SCLK_REF_TICK
Also need to explicitly disable RX interrupts in UART pattern detection
mode.
Closes https://github.com/espressif/esp-idf/issues/4801
Since the recent refactoring of spi bus_lock comonent introduced heavy logging under debug/verbose level of verbosity, the http-server test executed in the CI became less stable due to complicated regex. Fixed by removing the first optional group
check master read write functions with array of registers)
fix master serial processing code and modbus controller to work with register array
modbus_master: add reading and writing of test value array (58 registers) to check failure is gone
remove parameter temporary buffer from modbus controller to allow more than 24 byte writes
driver: fix issue with TOUT feature
driver: fix uart_rx_timeout issue
driver: fix issue with rxfifo_tout_int_raw not triggered when received fifo_len = 120 byte and all bytes read out of fifo as result of rxfifo_full_int_raw
driver: add function uart_internal_set_always_rx_timeout() to always handle tout interrupt
examples: call uart_internal_set_always_rx_timeout() to handle tout interrupt correctly
examples: update examples to use tout feature
driver: reflect changes of uart_set_always_rx_timeout() function, change uart.c
driver: change conditions to trigger workaround for tout feature in uart.c
driver: change uart_set_always_rx_timeout()
freemodbus: fix tabs, remove commented code
driver: remove uart_ll_is_rx_idle()
Fix below build error:
../main/udp_client.c: In function 'udp_client_task':
../main/udp_client.c:58:41: error: 'addr_str' undeclared (first use in this function); did you mean 'caddr_t'?
Fixes: 995ef85e85 ("socket examples: add tests for server and client applications")
Signed-off-by: Axel Lin <axel.lin@gmail.com>
tout_thr - move calculation and masking into hal layer update driver and uart_ll (add uart_ll_set_rx_tout)
move tout calculation into uart_ll
move calculation of time out in bit time for esp32s2 into low level uart_ll.h file
move uart_hal_get_symb_len() into hal
update set_rx_timeout() to warn user about incorrect value
update HAL, LL 1
fix uart_xx_set_rx_tout() to convert symbol time into bit time
update param description
update tout calculation in LL
update uart_hal_get_max_rx_timeout_thrd() and uart_ll_get_max_rx_timeout_thrd()
Implementation of `esp_tls_conn_new_sync` now uses timeout_ms value to
give up retries.
Specified this value to be 10 sec. (10 * 1000 ms).
Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
Use buffer to accumulate data of response from event handler and print the response on console
Demonstrate use of user_data field in esp_http_client_config_t to get response body
calling esp_netif_up() and esp_netif_down() was not supported if the
underlying netif wos of ppp type. Updated the code to enable setting
these interfaces up/down and registered actions in moden_netif glue for
connection/disconnection events to set the netif up/down.
Adds the ESP certificate bundle feature that enables users to bundle a
root certificate bundle together with their application.
Default bundle includes all Mozilla root certificates
Closes IDF-296
When library users call esp_stop_ppp(), it is expected that the PPP link
is closed and the DCE is moved into command mode.
If the STOP event is not posted into the event loop, then the PPP stack
would not be turned off, resulting in the impossibility to switch into
command mode, as the modem is still sending PPP binary data.
Signed-off-by: Francesco Giancane <francesco.giancane@accenture.com>
Merges https://github.com/espressif/esp-idf/pull/4642
This is based on `ssl_mail_client` from mbedtls.
The client also adds functionality to send attachments.
Signed-off-by: Vikram Dattu <vikram.dattu@espressif.com>
This was accidently commited bug when convert to use esp-netif, fix it.
Fixes: 25913af2cc ("pppos_client: udated example code to use esp-netif in PPP configuration")
Signed-off-by: Axel Lin <axel.lin@gmail.com>
Merges https://github.com/espressif/esp-idf/pull/4618
docs: Add System time chapter and for sntp a description about using...
Closes IDFGH-2237, IDF-1199, and IDF-38
See merge request espressif/esp-idf!6818
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
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
Added default sdkconfig for qemu build for the mqtt publish example,
Added environment configuration for running the same test on target
or in qemu
Updated missing example tests per latest ttfw refactoring
esp_netif_init() returns standard esp_err_t error code (unlike tcpip_adapter init), so shall be checked for the return value
Also to make the initialization code more consistent.
add support of modbus master ascii
rename base dir name of master and slave example to be mb_slave, mb_master to avoid conflict with sdio/slave example test
add Kconfig option to enable ASCII and RTU mode separately
update ASCII options + remove cast for errors
added baudrate for examples into Kconfig
updated magic numbers for timer timeout
put ascii private definitions into one file
place timer interrupt handler into flash by default;
add default settings for timer and UART interrupts to place them into IRAM into example defaults;
CONFIG_FMB_TIMER_PORT_ENABLED default = n, when enabled, the UART_ISR_IN_IRAM set to y
Previously set to wait until IP address got from tcpip_adapter, but since common example connect code blocks until both IP4 and IPv6 address received it could happen that test code might have started connection to the ASIO counter-part while ESP32 still waiting for IPv6 address
adds timer interrupt handle and free it in vMBXXXPortTimerClose() in master and slave timer port
assign modbus controller interface pointer to NULL in destroy function after free
esp32s2beta: Merge support to master
Closes IDF-513, IDF-756, IDF-758, IDF-999, IDF-753, IDF-749, IDF-754, IDF-840, and IDF-755
See merge request espressif/esp-idf!6100
Testing with predefined buffer sizes for MQTT as well as mbedTLS to
exercise fragmenting outgoing data on both layers. Example test compares
received partition with the actual binary file.
The MQTT broker URL used as default in the examples has ceased operation. All examples and documention have been updated to point to the new domain mqtt.eclipse.org.
This also required an update of the python example test scripts to use TLS 1.2
Fixed error caused by unnecessary reopening of listening socket.
Extracted packet retransmit logic to separate function.
Added robust implementation for sending data
Closes https://github.com/espressif/esp-idf/pull/3597
1) WEB_PATH should path relative to document root of web server.
2) HTTP request should contain "Host" header of format "host:port".
3) Port number in the example should be configurable.
components/coap/port/coap_mbedtls.c:
Add in additional compile time check wrappers for different MbedTLS
configurations.
components/coap/CMakeLists.txt:
components/coap/component.mk:
components/coap/port/coap_notls.c:
components/coap/port/include/coap_config_posix.h:
Add in the ability to compile and run if MbedTLS does not have any TLS
mode enabled.
examples/protocols/coap_client/main/coap_client_example_main.c:
Inform user that MbedTLS Client Mode is required for DTLS if not enabled,
and coaps:// has been requested.
[Lower libcoap library will still error and report this condition]
examples/protocols/coap_server/main/coap_server_example_main.c:
Inform user that MbedTLS Server Mode is required for DTLS if not enabled.
[Lower libcoap library will still error and report this condition]
Closes https://github.com/espressif/esp-idf/issues/3961
Closes https://github.com/espressif/esp-idf/issues/3971
Closes https://github.com/espressif/esp-idf/pull/3977
This MR is intended to fix incorrect parsing of HTTP requests when empty header values are present.
The issue is was due to asymmetric behavior of `http_parser` library, which in case of:
non-empty header values : invokes callbacks with the pointer to the start of a value
empty header values : invokes callbacks with pointer to the start of next header or section
Since HTTP server relies on this pointer (along with length of the value) to locate the end of a value, and replace the line terminators (CRLFs) with null characters, the second case needed to be handled correctly.
Closes IDFGH-1539
Closes https://github.com/espressif/esp-idf/issues/3803
This update supports DTLS, TLS is a future TODO
components/coap/CMakeLists.txt:
components/coap/component.mk:
Add in the new files that have to be built
Replace libcoap/src/coap_notls.c with libcoap/src/coap_mbedtls.c
components/coap/libcoap:
Update the version to include the current version for supporting MbedTLS
components/coap/port/coap_debug.c:
components/coap/port/coap_mbedtls.c:
components/coap/port/include/coap/coap_dtls.h:
New port files for DTLS
components/coap/port/include/coap_config_posix.h:
Include building with MbedTLS
examples/protocols/coap_client/README.md:
examples/protocols/coap_client/main/CMakeLists.txt:
examples/protocols/coap_client/main/Kconfig.projbuild:
examples/protocols/coap_client/main/coap_client_example_main.c:
examples/protocols/coap_client/main/component.mk:
Update CoAP client to support DTLS
examples/protocols/coap_client/main/coap_ca.pem
examples/protocols/coap_client/main/coap_client.crt
examples/protocols/coap_client/main/coap_client.key
New PKI Certs for CoAP client (copied from wpa2_enterprise example)
examples/protocols/coap_server/README.md:
examples/protocols/coap_server/main/CMakeLists.txt:
examples/protocols/coap_server/main/Kconfig.projbuild:
examples/protocols/coap_server/main/coap_server_example_main.c:
examples/protocols/coap_server/main/component.mk:
Update CoAP server to support DTLS
Change "no data" to "Hello World!" to prevent confusion
examples/protocols/coap_server/main/coap_ca.pem
examples/protocols/coap_server/main/coap_server.crt
examples/protocols/coap_server/main/coap_server.key
New PKI Certs for CoAP server (copied from wpa2_enterprise example)
Closes https://github.com/espressif/esp-idf/pull/3345
Closes https://github.com/espressif/esp-idf/issues/1379
The build system automatically determines offsets of partitions from
the partition table, so no manual changes are needed. Instead, add a
note that partition offsets may need to be updated when increasing
the bootloader size.
List of changes:
* New component esp_local_ctrl added
* Example added under examples/protocols/esp_local_ctrl
* Documentation added under protocols/esp_local_ctrl
* Demo client side app esp_local_ctrl.py added under examples/protocols/esp_local_ctrl/scripts
* protocomm_ble : protocomm_ble_config_t given struct name for allowing forward declaration
* esp_prov/transport_softap renamed to transport_http
* transport_http module supports verification of server certificate
* transport_http module performs name resolution before connection