dccp ccid-3: Fix a loss detection bug
[safe/jmp/linux-2.6] / net / dccp / ccids / ccid3.c
index 523db26..f6756e0 100644 (file)
@@ -825,18 +825,16 @@ static void ccid3_hc_rx_packet_recv(struct sock *sk, struct sk_buff *skb)
        }
 
        /*
-        * Handle pending losses and otherwise check for new loss
+        * Perform loss detection and handle pending losses
         */
-       if (tfrc_rx_hist_loss_pending(&hcrx->ccid3hcrx_hist) &&
-           tfrc_rx_handle_loss(&hcrx->ccid3hcrx_hist,
-                               &hcrx->ccid3hcrx_li_hist,
-                               skb, ndp, ccid3_first_li, sk) ) {
+       if (tfrc_rx_handle_loss(&hcrx->ccid3hcrx_hist, &hcrx->ccid3hcrx_li_hist,
+                               skb, ndp, ccid3_first_li, sk)) {
                do_feedback = CCID3_FBACK_PARAM_CHANGE;
                goto done_receiving;
        }
 
-       if (tfrc_rx_hist_new_loss_indicated(&hcrx->ccid3hcrx_hist, skb, ndp))
-               goto update_records;
+       if (tfrc_rx_hist_loss_pending(&hcrx->ccid3hcrx_hist))
+               return; /* done receiving */
 
        /*
         * Handle data packets: RTT sampling and monitoring p