X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession.c;h=d995eeb04a54afec22d92e3349c78f27f88c402b;hb=a2ff7b8cfc829ffbb6d5de7534efb51f7cba9cf3;hp=7f28a3992ed5d038141857bb97474014b84ac69e;hpb=3cbc04bea02fc60471dfe0c671ede3ca42c118c3;p=vpp.git diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 7f28a3992ed..d995eeb04a5 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -147,7 +147,6 @@ session_alloc_for_connection (transport_connection_t * tc) s = session_alloc (thread_index); s->session_type = session_type_from_proto_and_ip (tc->proto, tc->is_ip4); s->session_state = SESSION_STATE_CONNECTING; - s->thread_index = thread_index; /* Attach transport to session and vice versa */ s->connection_index = tc->c_index; @@ -166,6 +165,7 @@ session_alloc_and_init (segment_manager_t * sm, transport_connection_t * tc, if (alloc_fifos && (rv = session_alloc_fifos (sm, s))) { session_free (s); + *ret_s = 0; return rv; } @@ -490,7 +490,7 @@ session_enqueue_notify (stream_session_t * s, u8 block) /* *INDENT-OFF* */ SESSION_EVT_DBG(SESSION_EVT_ENQ, s, ({ - ed->data[0] = evt.event_id; + ed->data[0] = evt.event_type; ed->data[1] = svm_fifo_max_dequeue (s->server_rx_fifo); })); /* *INDENT-ON* */ @@ -581,7 +581,7 @@ session_stream_connect_notify (transport_connection_t * tc, u8 is_fail) if (!is_fail) { sm = application_get_connect_segment_manager (app); - alloc_fifos = application_is_proxy (app); + alloc_fifos = !application_is_builtin_proxy (app); if (session_alloc_and_init (sm, tc, alloc_fifos, &new_s)) { is_fail = 1; @@ -1008,7 +1008,7 @@ session_type_from_proto_and_ip (transport_proto_t proto, u8 is_ip4) transport_connection_t * session_get_transport (stream_session_t * s) { - if (s->session_state >= SESSION_STATE_READY) + if (s->session_state != SESSION_STATE_LISTENING) return tp_vfts[s->session_type].get_connection (s->connection_index, s->thread_index); return 0; @@ -1084,6 +1084,11 @@ session_manager_main_enable (vlib_main_t * vm) _vec_len (smm->pending_event_vector[i]) = 0; vec_validate (smm->pending_disconnects[i], 0); _vec_len (smm->pending_disconnects[i]) = 0; + if (num_threads > 1) + { + clib_spinlock_init (&smm->peekers_readers_locks[i]); + clib_spinlock_init (&smm->peekers_write_locks[i]); + } } #if SESSION_DBG