Commit:     1238d0873b29f7a2de75d576b4cc706c1c75ffbf
Parent:     fde20105f332614b23a3131d706cd90bdd7db72d
Author:     Gerrit Renker <[EMAIL PROTECTED]>
AuthorDate: Wed Oct 24 10:18:06 2007 -0200
Committer:  Arnaldo Carvalho de Melo <[EMAIL PROTECTED]>
CommitDate: Wed Oct 24 10:18:06 2007 -0200

    [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 
    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 
    to the window check. The error reporting now works as expected on 
    Signed-off-by: Gerrit Renker <[EMAIL PROTECTED]>
    Acked-by: Ian McDonald <[EMAIL PROTECTED]>
    Signed-off-by: Arnaldo Carvalho de Melo <[EMAIL PROTECTED]>
 net/dccp/ipv4.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index 3f1578d..01a6a80 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -242,7 +242,7 @@ static void dccp_v4_err(struct sk_buff *skb, u32 info)
        dp = dccp_sk(sk);
        seq = dccp_hdr_seq(dh);
-       if (sk->sk_state != DCCP_LISTEN &&
+       if ((1 << sk->sk_state) & ~(DCCPF_REQUESTING | DCCPF_LISTEN) &&
            !between48(seq, dp->dccps_swl, dp->dccps_swh)) {
                goto out;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to