FreeRTOS-Kernel/FreeRTOS-Plus/Source/Application-Protocols/network_transport
Marc-Antoine Lalonde 52c9756f21
Call taskYIELD after calling FreeRTOS_send in Plaintext_FreeRTOS_send (#491)
FreeRTOS_send adds the packet to be sent to the IP task's queue for
later processing. The packet is sent later by the IP task. When
FreeRTOS is used in collaborative mode (i.e. configUSE_PREEMPTION is 0),
the Plaintext_FreeRTOS_send function returns without actually sending
the packet as the IP task never gets a chance to run.

The fact that Plaintext_FreeRTOS_send returns without actually sending
the packet causes an issue in the MQTT_Connect which expects the CONNECT
packet to be actually sent and waits for CONNACK.

This commit adds a taskYIELD call after calling FreeRTOS_send to ensure
that the IP task gets a chance to run and send the packet before the
Plaintext_FreeRTOS_send function returns.
2021-01-25 14:30:42 -08:00
..
freertos_plus_tcp Call taskYIELD after calling FreeRTOS_send in Plaintext_FreeRTOS_send (#491) 2021-01-25 14:30:42 -08:00
readme.txt Restructure platform directory (#382) 2020-11-05 16:47:43 -08:00

Building a network transport implementation:

1. Go into the sub directory for the TCP/IP stack you are using (e.g. freertos_plus_tcp).
2. Build the wrapper file located in the directory (i.e. sockets_wrapper.c).
3. Select an additional folder based on the TLS stack you are using (e.g. using_mbedtls), or the using_plaintext folder if not using TLS.
4. Build and include all files from the selected folder.