session: remove ho with fifos support
[vpp.git] / src / vnet / session / session.c
index 1fa7872..ed940d5 100644 (file)
@@ -18,7 +18,6 @@
  */
 
 #include <vnet/session/session.h>
-#include <vnet/session/session_debug.h>
 #include <vnet/session/application.h>
 #include <vnet/dpo/load_balance.h>
 #include <vnet/fib/ip4_fib.h>
@@ -735,10 +734,9 @@ session_main_flush_all_enqueue_events (u8 transport_proto)
   return errors;
 }
 
-static inline int
-session_stream_connect_notify_inline (transport_connection_t * tc,
-                                     session_error_t err,
-                                     session_state_t opened_state)
+int
+session_stream_connect_notify (transport_connection_t * tc,
+                              session_error_t err)
 {
   u32 opaque = 0, new_ti, new_si;
   app_worker_t *app_wrk;
@@ -782,7 +780,7 @@ session_stream_connect_notify_inline (transport_connection_t * tc,
     }
 
   s = session_get (new_si, new_ti);
-  s->session_state = opened_state;
+  s->session_state = SESSION_STATE_READY;
   session_lookup_add_connection (tc, session_handle (s));
 
   if (app_worker_connect_notify (app_wrk, s, SESSION_E_NONE, opaque))
@@ -795,20 +793,6 @@ session_stream_connect_notify_inline (transport_connection_t * tc,
   return 0;
 }
 
-int
-session_stream_connect_notify (transport_connection_t * tc,
-                              session_error_t err)
-{
-  return session_stream_connect_notify_inline (tc, err, SESSION_STATE_READY);
-}
-
-int
-session_ho_stream_connect_notify (transport_connection_t * tc,
-                                 session_error_t err)
-{
-  return session_stream_connect_notify_inline (tc, err, SESSION_STATE_OPENED);
-}
-
 static void
 session_switch_pool_reply (void *arg)
 {
@@ -1104,7 +1088,10 @@ session_stream_accept (transport_connection_t * tc, u32 listener_index,
   s->session_state = SESSION_STATE_CREATED;
 
   if ((rv = app_worker_init_accepted (s)))
-    return rv;
+    {
+      session_free (s);
+      return rv;
+    }
 
   session_lookup_add_connection (tc, session_handle (s));
 
@@ -1112,7 +1099,13 @@ session_stream_accept (transport_connection_t * tc, u32 listener_index,
   if (notify)
     {
       app_worker_t *app_wrk = app_worker_get (s->app_wrk_index);
-      return app_worker_accept_notify (app_wrk, s);
+      if ((rv = app_worker_accept_notify (app_wrk, s)))
+       {
+         session_lookup_del_session (s);
+         segment_manager_dealloc_fifos (s->rx_fifo, s->tx_fifo);
+         session_free (s);
+         return rv;
+       }
     }
 
   return 0;
@@ -1138,7 +1131,8 @@ session_dgram_accept (transport_connection_t * tc, u32 listener_index,
   app_wrk = app_worker_get (s->app_wrk_index);
   if ((rv = app_worker_accept_notify (app_wrk, s)))
     {
-      session_free_w_fifos (s);
+      segment_manager_dealloc_fifos (s->rx_fifo, s->tx_fifo);
+      session_free (s);
       return rv;
     }
 
@@ -1216,8 +1210,7 @@ session_open_vc (u32 app_wrk_index, session_endpoint_t * rmt, u32 opaque)
    * thing but better than allocating a separate half-open pool.
    */
   tc->s_index = opaque;
-  if (transport_half_open_has_fifos (rmt->transport_proto))
-    return session_ho_stream_connect_notify (tc, 0 /* is_fail */ );
+
   return 0;
 }
 
@@ -1695,6 +1688,8 @@ session_manager_main_enable (vlib_main_t * vm)
 
   /* Enable transports */
   transport_enable_disable (vm, 1);
+  session_debug_init ();
+
   return 0;
 }