nuttx/net
YAMAMOTO Takashi 08e9dff0e9 tcp_close: disable send callback before sending FIN
This fixes connection closing issues with CONFIG_NET_TCP_WRITE_BUFFERS.

Because TCP_CLOSE is used for both of input and output for tcp_callback,
the close callback and the send callback confuses each other as
the following. As it effectively disposes the connection immediately,
we end up with responding to the consequent ACK and FIN/ACK from the peer
with RSTs.

tcp_timer
    -> tcp_close_eventhandler
        returns TCP_CLOSE (meaning an active close)
    -> psock_send_eventhandler
        called with TCP_CLOSE from tcp_close_eventhandler, misinterpet as
        a passive close.
        -> tcp_lost_connection
            -> tcp_shutdown_monitor
                -> tcp_callback
                    -> tcp_close_eventhandler
                        misinterpret TCP_CLOSE from itself as
                        a passive close
2021-06-30 06:39:13 -05:00
..
arp net: arp: Fix a potential bug in arp_notify() 2021-03-31 12:23:35 -05:00
bluetooth libc/assert: Reference the expression in all case 2021-04-03 21:00:41 +01:00
can sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
devif devif_poll_tcp_connections: Fix a comment typo 2021-05-31 01:37:51 -05:00
icmp Include assert.h in necessary place 2021-06-08 13:06:08 -07:00
icmpv6 Include assert.h in necessary place 2021-06-08 13:06:08 -07:00
ieee802154 libc/assert: Reference the expression in all case 2021-04-03 21:00:41 +01:00
igmp Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
inet inet:sockif Fix warning 2021-05-03 16:55:48 -04:00
ipforward Include assert.h in necessary place 2021-06-08 13:06:08 -07:00
local net/local: Remove all HAVE_LOCAL_POLL reference 2021-06-17 07:09:10 -03:00
mld Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
neighbor Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
netdev net: Add if_nameindex and if_freenameindex API 2021-06-26 22:37:12 +01:00
netlink net/socket: move si_send/recv into sendmsg/recvmsg 2021-03-05 04:46:13 -08:00
pkt sourcefiles: Fix relative path in file header 2021-03-09 23:18:28 +08:00
procfs Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
route Fix typos (and nxstyle errors) 2021-03-21 21:51:14 +01:00
rpmsg Don't include assert.h from public header file 2021-06-03 08:36:03 -07:00
sixlowpan tcp: window update improvements 2021-06-13 21:20:24 -05:00
socket net/accept: alloc the accept fd after accept success 2021-06-11 05:00:21 -05:00
tcp tcp_close: disable send callback before sending FIN 2021-06-30 06:39:13 -05:00
udp Include assert.h in necessary place 2021-06-08 13:06:08 -07:00
usrsock net: fix nxstyle errors 2021-04-02 11:12:25 -05:00
utils NuttX: Gregory Nutt: update licenses to Apache 2021-04-03 04:20:31 -07:00
Kconfig net/socket_rpmsg: add net socket rpmsg support 2021-03-07 01:45:51 -08:00
Makefile net/socket_rpmsg: add net socket rpmsg support 2021-03-07 01:45:51 -08:00
net_initialize.c Remove the empty xxx_initialize functions 2021-03-03 08:21:04 +00:00
README.txt net/loopback: Move g_lo_* global variable to libc/net/ 2020-03-30 09:47:28 -06:00

README
======

Directory Structure
===================

  nuttx/
   |
   `- net/
       |
       +- arp        - Address resolution protocol (IPv4)
       +- bluetooth  - PF_BLUETOOTH socket interface
       +- devif      - Stack/device interface layer
       +- icmp       - Internet Control Message Protocol (IPv4)
       +- icmpv6     - Internet Control Message Protocol (IPv6)
       +- ieee802154 - PF_IEEE802154 socket interface
       +- inet       - PF_INET/PF_INET6 socket interface
       +- ipforward  - IP forwarding logic
       +- local      - Unix domain (local) sockets
       +- mld        - Multicast Listener Discovery (MLD)
       +- neighbor   - Neighbor Discovery Protocol (IPv6)
       +- netdev     - Socket network device interface
       +- netlink    - Netlink IPC socket interface
       +- pkt        - "Raw" packet socket support
       +- sixlowpan  - 6LoWPAN implementation
       +- socket     - BSD socket interface
       +- route      - Routing table support
       +- tcp        - Transmission Control Protocol
       +- udp        - User Datagram Protocol
       +- usrsock    - User socket API for user-space networking stack
       `- utils      - Miscellaneous utility functions

    +-------------------------------------------------------------------++------------------------+
    |                     Application layer                             || usrsock daemon         |
    +-------------------------------------------------------------------++------------------------+
    +-------------------------------------------------------------------++----------------+ +-----+
    |                   Socket layer (socket/)                          || /dev/usrsock   | |     |
    +-------------------------------------------------------------------++----------------+ |     |
    +------------++--------------------------------------------------++-------------------+ |     |
    |  Network   || Protocol stacks (arp, ipv6, icmp, pkt, tcp, udp) || usrsock/          | |     |
    |   Device   |+--------------------------------------------------++-------------------+ |     |
    | Interface  |+------------------------------------++---------------------------------+ |     |
    | (netdev/)  ||  Network Device Interface (devif/) || Utilities                       | |     |
    +------------++------------------------------------++---------------------------------+ |     |
    +----------------------------------------------------------------+                      |     |
    |                    Network Device Drivers                      |                      | HAL |
    +----------------------------------------------------------------+                      +-----+
    +----------------------------------------------------------------+ +--------------------------+
    |                    Networking Hardware                         | |  Hardware TCP/IP Stack   |
    +----------------------------------------------------------------+ +--------------------------+