tcp: handle ack advancement with no holes and reneging
[vpp.git] / src / vnet / tcp / tcp_input.c
index b9df882..cb5020d 100755 (executable)
@@ -990,7 +990,7 @@ tcp_rcv_sacks (tcp_connection_t * tc, u32 ack)
   sb->last_bytes_delivered = 0;
   sb->rxt_sacked = 0;
 
-  if (!tcp_opts_sack (&tc->rcv_opts)
+  if (!tcp_opts_sack (&tc->rcv_opts) && !sb->sacked_bytes
       && sb->head == TCP_INVALID_SACK_HOLE_INDEX)
     return;
 
@@ -1186,7 +1186,7 @@ tcp_rcv_sacks (tcp_connection_t * tc, u32 ack)
          || sb->is_reneging || sb->holes[sb->head].start == ack);
   ASSERT (sb->last_lost_bytes <= sb->lost_bytes);
   ASSERT ((ack - tc->snd_una) + sb->last_sacked_bytes
-         - sb->last_bytes_delivered >= sb->rxt_sacked || sb->is_reneging);
+         - sb->last_bytes_delivered >= sb->rxt_sacked);
   ASSERT ((ack - tc->snd_una) >= tc->sack_sb.last_bytes_delivered
          || (tc->flags & TCP_CONN_FINSNT));