tcp: fix cc recovery re-entry and persist timer pop
[vpp.git] / src / vnet / session / session.c
index 897cb1a..9790ec2 100644 (file)
@@ -491,9 +491,9 @@ session_enqueue_notify (stream_session_t * s, u8 lock)
   application_t *app;
 
   app = application_get_if_valid (s->app_index);
-  if (PREDICT_FALSE (app == 0))
+  if (PREDICT_FALSE (!app))
     {
-      clib_warning ("invalid s->app_index = %d", s->app_index);
+      TCP_DBG ("invalid s->app_index = %d", s->app_index);
       return 0;
     }
 
@@ -753,9 +753,10 @@ stream_session_disconnect_notify (transport_connection_t * tc)
   stream_session_t *s;
 
   s = session_get (tc->s_index, tc->thread_index);
-  server = application_get (s->app_index);
-  server->cb_fns.session_disconnect_callback (s);
   s->session_state = SESSION_STATE_CLOSING;
+  server = application_get_if_valid (s->app_index);
+  if (server)
+    server->cb_fns.session_disconnect_callback (s);
 }
 
 /**
@@ -1244,6 +1245,11 @@ session_vpp_event_queues_allocate (session_manager_main_t * smm)
       cfg->q_nitems = evt_q_length;
       cfg->ring_cfgs = rc;
       smm->vpp_event_queues[i] = svm_msg_q_alloc (cfg);
+      if (smm->evt_qs_use_memfd_seg)
+       {
+         if (svm_msg_q_alloc_consumer_eventfd (smm->vpp_event_queues[i]))
+           clib_warning ("eventfd returned");
+       }
     }
 
   if (smm->evt_qs_use_memfd_seg)