• Gerrit Renker's avatar
    [DCCP]: One more exemption from full sequence number checks · 1238d087
    Gerrit Renker authored
    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: default avatarGerrit Renker <gerrit@erg.abdn.ac.uk>
    Acked-by: default avatarIan McDonald <ian.mcdonald@jandi.co.nz>
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@ghostprotocols.net>
    1238d087
ipv4.c 27.2 KB