&& app_wrk->first_segment_manager != app_wrk->connects_seg_manager)
{
sm = segment_manager_get (app_wrk->first_segment_manager);
+ sm->first_is_protected = 0;
+ sm->app_wrk_index = SEGMENT_MANAGER_INVALID_APP_INDEX;
/* .. and has no fifos, e.g. it might be used for redirected sessions,
* remove it */
if (!segment_manager_has_fifos (sm))
- {
- sm->app_wrk_index = SEGMENT_MANAGER_INVALID_APP_INDEX;
- segment_manager_del (sm);
- }
+ segment_manager_del (sm);
}
/*
sep_ext->is_ip4);
ls = listen_session_new (0, sst);
ls->app_index = app->app_index;
-
+ lh = listen_session_get_handle (ls);
if (session_listen (ls, sep_ext))
goto err;
+
+ ls = listen_session_get_from_handle (lh);
app_listener = app_listener_alloc (app);
ls->listener_db_index = app_listener->al_index;
app_listener->workers = clib_bitmap_set (app_listener->workers,
app_wrk->wrk_map_index, 1);
- *res = listen_session_get_handle (ls);
+ *res = lh;
return 0;
err:
evt->fifo = s->server_rx_fifo;
evt->event_type = FIFO_EVENT_APP_RX;
+ (void) svm_fifo_set_event (s->server_rx_fifo);
+
if (app_enqueue_evt (mq, &msg, lock))
return -1;
- (void) svm_fifo_set_event (s->server_rx_fifo);
return 0;
}
/**
* Send event to application
*
- * Logic from queue perspective is non-blocking. That is, if there's
- * not enough space to enqueue a message, we return. However, if the lock
- * flag is set, we do wait for queue mutex.
+ * Logic from queue perspective is non-blocking. If there's
+ * not enough space to enqueue a message, we return.
*/
int
app_worker_send_event (app_worker_t * app, stream_session_t * s, u8 evt_type)
return app_send_evt_handler_fns[evt_type] (app, s, 0 /* lock */ );
}
+/**
+ * Send event to application
+ *
+ * Logic from queue perspective is blocking. However, if queue is full,
+ * we return.
+ */
int
app_worker_lock_and_send_event (app_worker_t * app, stream_session_t * s,
u8 evt_type)
if (verbose)
{
- s = format (s, "%-40s%-25s%=10u%-15u%-15u%-10u", str, app_name,
- app_wrk->wrk_map_index, app->api_client_index, handle,
- sm_index);
+ char buf[32];
+ sprintf (buf, "%u(%u)", app_wrk->wrk_map_index, app_wrk->wrk_index);
+ s = format (s, "%-40s%-25s%=10s%-15u%-15u%-10u", str, app_name,
+ buf, app->api_client_index, handle, sm_index);
}
else
s = format (s, "%-40s%-25s%=10u", str, app_name, app_wrk->wrk_map_index);