Fixes to tcp active opens and reception
[vpp.git] / src / vnet / tcp / tcp_input.c
index 318d8ec..ddee41e 100644 (file)
@@ -1135,6 +1135,10 @@ tcp_segment_rcv (tcp_main_t * tm, tcp_connection_t * tc, vlib_buffer_t * b,
          error = TCP_ERROR_SEGMENT_OLD;
          *next0 = TCP_NEXT_DROP;
 
+         /* Completely in the past (possible retransmit) */
+         if (seq_lt (vnet_buffer (b)->tcp.seq_end, tc->rcv_nxt))
+           goto done;
+
          /* Chop off the bytes in the past */
          n_bytes_to_drop = tc->rcv_nxt - vnet_buffer (b)->tcp.seq_number;
          n_data_bytes -= n_bytes_to_drop;
@@ -1553,6 +1557,7 @@ tcp46_syn_sent_inline (vlib_main_t * vm, vlib_node_runtime_t * node,
          clib_memcpy (new_tc0, tc0, sizeof (*new_tc0));
 
          new_tc0->c_thread_index = my_thread_index;
+         new_tc0->c_c_index = new_tc0 - tm->connections[my_thread_index];
 
          /* Cleanup half-open connection XXX lock */
          pool_put (tm->half_open_connections, tc0);