dccp ccid-3: No more CCID control blocks in LISTEN state
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Sun, 22 Aug 2010 19:41:37 +0000 (19:41 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 24 Aug 2010 03:13:30 +0000 (20:13 -0700)
commit51c22bb510fefbb1a87c02dbd835383e6e7e3d36
tree16c792c63bdf6de0fd92c27f2819161edd15927e
parent67b67e365f07d6dc70f3bb266af3268bac0a4836
dccp ccid-3: No more CCID control blocks in LISTEN state

The CCIDs are activated as last of the features, at the end of the handshake,
were the LISTEN state of the master socket is inherited into the server
state of the child socket. Thus, the only states visible to CCIDs now are
OPEN/PARTOPEN, and the closing states.

This allows to remove tests which were previously necessary to protect
against referencing a socket in the listening state (in CCID-3), but which
now have become redundant.

As a further byproduct of enabling the CCIDs only after the connection has been
fully established, several typecast-initialisations of ccid3_hc_{rx,tx}_sock
can now be eliminated:
 * the CCID is loaded, so it is not necessary to test if it is NULL,
 * if it is possible to load a CCID and leave the private area NULL, then this
    is a bug, which should crash loudly - and earlier,
 * the test for state==OPEN || state==PARTOPEN now reduces only to the closing
   phase (e.g. when the node has received an unexpected Reset).

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dccp/ccids/ccid3.c