tcp: fix syn-sent reset
[vpp.git] / src / vnet / tcp / tcp_input.c
index f907750..67cec5a 100755 (executable)
@@ -327,8 +327,8 @@ tcp_rcv_rst (tcp_worker_ctx_t * wrk, tcp_connection_t * tc)
       tcp_connection_set_state (tc, TCP_STATE_CLOSED);
       break;
     case TCP_STATE_SYN_SENT:
-      tcp_program_reset_ntf (wrk, tc);
-      tcp_connection_set_state (tc, TCP_STATE_CLOSED);
+      /* Do not program ntf because the connection is half-open */
+      tcp_handle_rst (tc);
       break;
     case TCP_STATE_ESTABLISHED:
       tcp_connection_timers_reset (tc);
@@ -3705,14 +3705,10 @@ tcp_input_dispatch_buffer (tcp_main_t * tm, tcp_connection_t * tc,
 
   if (PREDICT_FALSE (error != TCP_ERROR_NONE))
     {
-      /* Overload tcp flags to store state */
-      tcp_state_t state = tc->state;
-      vnet_buffer (b)->tcp.flags = tc->state;
-
       b->error = error_node->errors[error];
       if (error == TCP_ERROR_DISPATCH)
        clib_warning ("tcp conn %u disp error state %U flags %U",
-                     tc->c_c_index, format_tcp_state, state,
+                     tc->c_c_index, format_tcp_state, tc->state,
                      format_tcp_flags, (int) flags);
     }
 }