*/
#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>
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;
}
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))
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)
{
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));
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;
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;
}
* 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;
}
/* Enable transports */
transport_enable_disable (vm, 1);
+ session_debug_init ();
+
return 0;
}