Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4d46861be6196d0f1614724590968d8da26af82a
Commit:     4d46861be6196d0f1614724590968d8da26af82a
Parent:     1e51f9513e6b021abcaefd7c76f9b5d682f83232
Author:     Gerrit Renker <[EMAIL PROTECTED]>
AuthorDate: Tue Mar 6 14:24:18 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Tue Mar 6 14:24:18 2007 -0800

    [DCCP]: Correctly split CCID half connections
    
    This fixes a bug caused by a previous patch, which causes DCCP servers in
    LISTEN state to not receive packets.
    
    This patch changes the logic so that
     * servers in either LISTEN or OPEN state get the RX half connection packets
     * clients in OPEN state get the TX half connection packets
    
    Signed-off-by: Gerrit Renker <[EMAIL PROTECTED]>
    Signed-off-by: Arnaldo Carvalho de Melo <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/dccp/input.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/net/dccp/input.c b/net/dccp/input.c
index 4dee462..287099f 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -256,10 +256,10 @@ int dccp_rcv_established(struct sock *sk, struct sk_buff 
*skb,
         *        (only one is active at a time); when moving to bidirectional
         *        service, this needs to be revised.
         */
-       if (dccp_sk(sk)->dccps_role == DCCP_ROLE_SERVER)
-               ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb);
-       else
+       if (dccp_sk(sk)->dccps_role == DCCP_ROLE_CLIENT)
                ccid_hc_tx_packet_recv(dp->dccps_hc_tx_ccid, sk, skb);
+       else    /* listening or connected server */
+               ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb);
 
        return __dccp_rcv_established(sk, skb, dh, len);
 discard:
@@ -495,10 +495,10 @@ int dccp_rcv_state_process(struct sock *sk, struct 
sk_buff *skb,
                        goto discard;
 
                /* XXX see the comments in dccp_rcv_established about this */
-               if (dccp_sk(sk)->dccps_role == DCCP_ROLE_SERVER)
-                       ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb);
-               else
+               if (dccp_sk(sk)->dccps_role == DCCP_ROLE_CLIENT)
                        ccid_hc_tx_packet_recv(dp->dccps_hc_tx_ccid, sk, skb);
+               else
+                       ccid_hc_rx_packet_recv(dp->dccps_hc_rx_ccid, sk, skb);
        }
 
        /*
-
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  http://vger.kernel.org/majordomo-info.html

Reply via email to