]> git.baikalelectronics.ru Git - kernel.git/commit
[DCCP]: Dedicated auxiliary states to support passive-close
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Wed, 28 Nov 2007 13:34:53 +0000 (11:34 -0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 22:55:12 +0000 (14:55 -0800)
commit91ccf5513fac20a81cb6fa0a9cace293067c8879
tree6b10cea26f0551b769097296b7e41f25d6b44f08
parent43d0c1c289691cc0bc49ed36776de53f56d7ea8a
[DCCP]: Dedicated auxiliary states to support passive-close

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: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/dccp.h
net/dccp/proto.c