• Gerrit Renker's avatar
    [DCCP]: Dedicated auxiliary states to support passive-close · f11135a3
    Gerrit Renker authored
    This adds two auxiliary states to deal with passive closes:
      * PASSIVE_CLOSE    (reached from OPEN via reception of Close)    and
      * PASSIVE_CLOSEREQ (reached from OPEN via reception of CloseReq)
    as internal intermediate states.
    
    These states are used to allow a receiver to process unread data before
    acknowledging the received connection-termination-request (the Close/CloseReq).
    
    Without such support, it will happen that passively-closed sockets enter CLOSED
    state while there is still unprocessed data in the queue; leading to unexpected
    and erratic API behaviour.
    
    PASSIVE_CLOSE has been mapped into TCPF_CLOSE_WAIT, so that the code will
    seamlessly work with inet_accept() (which tests for this state).
    
    The state names are thanks to Arnaldo, who suggested this naming scheme
    following an earlier revision of this patch.
    Signed-off-by: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f11135a3
proto.c 27.7 KB