zephyr/subsys/net/ip
Robert Lubos 2c75070360 net: sockets: tcp: Fix possible race between connect/recv
Installing recv callback with net_context_recv() after
net_context_connect() left an opening for a possible race - in case the
server send some data immediately after establishing TCP connection, and
Zephyr did not manage to install the callback on time, the data would be
lost, corrupting the stream.

This can be avoided, by installing the recv callback before the
connection is triggered. As net_context_recv() called w/o timeout only
registers the callback function, it should have no negative impact. The
only change on the TCP side is when the connection is closed - in case
TCP is in connect stage, do not call the recv callback (before this
change it'd be NULL at that point).

Signed-off-by: Robert Lubos <robert.lubos@nordicsemi.no>
2023-05-26 09:55:13 -04:00
..
6lo_private.h
6lo.c
6lo.h
canbus_socket.c
canbus_socket.h
CMakeLists.txt
connection.c
connection.h
dhcpv4.c net: DHCPv4: Add option callback 2023-05-22 15:25:40 +02:00
dhcpv4.h net: DHCPv4: Add option callback 2023-05-22 15:25:40 +02:00
icmpv4.c
icmpv4.h
icmpv6.c
icmpv6.h net: icmpv6: Implement IPv6 RA Recursive DNS Server option 2023-02-21 10:59:18 +01:00
igmp.c net: iface: Improve thread safety of net_if_ipv*_maddr_* functions 2023-05-10 11:06:15 +02:00
ipv4_autoconf_internal.h
ipv4_autoconf.c
ipv4_fragment.c net: ipv4: Fix fragmented packet NULL dereference possible 2023-04-26 14:34:23 +02:00
ipv4.c
ipv4.h net: context: Set priority based on DSCP 2023-05-16 13:21:25 +02:00
ipv6_fragment.c
ipv6_mld.c net: iface: Improve thread safety of net_if_ipv*_maddr_* functions 2023-05-10 11:06:15 +02:00
ipv6_nbr.c net: if: Add possibility to disable ND per interface 2023-04-29 12:24:49 +02:00
ipv6.c
ipv6.h net: context: Set priority based on DSCP 2023-05-16 13:21:25 +02:00
Kconfig net: allow UDP missing checksum by default 2023-05-23 22:09:47 +02:00
Kconfig.debug
Kconfig.ipv4 net: DHCPv4: Add option callback 2023-05-22 15:25:40 +02:00
Kconfig.ipv6 net: ipv6: Fix Kconfig dependencies when native IPv6 is disabled 2023-03-21 18:11:06 +00:00
Kconfig.mgmt net: Make net_mgmt queue timeout configurable 2023-04-28 10:35:27 -05:00
Kconfig.stack
Kconfig.stats
nbr.c
nbr.h
net_context.c net: context: Set priority based on DSCP 2023-05-16 13:21:25 +02:00
net_core.c init: remove the need for a dummy device pointer in SYS_INIT functions 2023-04-12 14:28:07 +00:00
net_if.c iterable_sections: move to specific header 2023-05-22 10:42:30 +02:00
net_mgmt.c net: Make net_mgmt queue timeout configurable 2023-04-28 10:35:27 -05:00
net_pkt.c net: pkt: Fix possible NULL dereference at net_pkt_cursor_operate() 2023-05-08 17:40:41 +09:00
net_private.h net: wifi_mgmt: Support to provide raw scan data 2023-05-12 10:50:21 +00:00
net_shell.c net: if: Improve LL address access thread safety 2023-05-10 11:06:15 +02:00
net_shell.h
net_stats.c
net_stats.h
net_tc_mapping.h
net_tc.c
net_timeout.c
packet_socket.c
packet_socket.h
promiscuous.c
route.c
route.h
tcp_internal.h net: socket: asynchronous connect 2023-04-17 11:35:20 +02:00
tcp_private.h net: socket: asynchronous connect 2023-04-17 11:35:20 +02:00
tcp.c net: sockets: tcp: Fix possible race between connect/recv 2023-05-26 09:55:13 -04:00
tcp.h
tp_priv.h
tp.c
tp.h
trickle.c
udp_internal.h
udp.c
utils.c