[DCCP]: One more exemption from full sequence number checks
authorGerrit Renker <gerrit@erg.abdn.ac.uk>
Wed, 24 Oct 2007 12:18:06 +0000 (10:18 -0200)
committerArnaldo Carvalho de Melo <acme@ghostprotocols.net>
Wed, 24 Oct 2007 12:18:06 +0000 (10:18 -0200)
commit1238d0873b29f7a2de75d576b4cc706c1c75ffbf
tree350b9d10cca89994bd44a0b96ca665419f2d2c7a
parentfde20105f332614b23a3131d706cd90bdd7db72d
[DCCP]: One more exemption from full sequence number checks

This fixes the following problem: client connects to peer which has no DCCP
enabled or loaded; ICMP error messages ("Protocol Unavailable") can be seen
on the wire, but the application hangs. Reason: ICMP packets don't get through
to dccp_v4_err.

When reporting errors, a sequence number check is made for the DCCP packet
that had caused an ICMP error to arrive.
Such checks can not be made if the socket is in state LISTEN, RESPOND (which
in the implementation is the same as LISTEN), or REQUEST, since update_gsr()
has not been called in these states, hence the sequence window is 0..0.

This patch fixes the problem by adding the REQUEST state as another exemption
to the window check. The error reporting now works as expected on connecting.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
net/dccp/ipv4.c