void session_free(struct session *sess);
int session_accept_fd(struct connection *cli_conn);
int conn_complete_session(struct connection *conn);
+struct task *session_expire_embryonic(struct task *t, void *context, unsigned short state);
/* Remove the refcount from the session to the tracked counters, and clear the
* pointer to ensure this is only performed once. The caller is responsible for
sizeof(struct sess_srv_list));
int conn_complete_session(struct connection *conn);
-static struct task *session_expire_embryonic(struct task *t, void *context, unsigned short state);
/* Create a a new session and assign it to frontend <fe>, listener <li>,
* origin <origin>, set the current date and clear the stick counters pointers.
}
/* Manages the embryonic session timeout. It is only called when the timeout
- * strikes and performs the required cleanup.
+ * strikes and performs the required cleanup. It's only exported to make it
+ * resolve in "show tasks".
*/
-static struct task *session_expire_embryonic(struct task *t, void *context, unsigned short state)
+struct task *session_expire_embryonic(struct task *t, void *context, unsigned short state)
{
struct session *sess = context;
{ .func = listener_accept, .name = "listener_accept" },
{ .func = poller_pipe_io_handler, .name = "poller_pipe_io_handler" },
{ .func = mworker_accept_wrapper, .name = "mworker_accept_wrapper" },
+ { .func = session_expire_embryonic, .name = "session_expire_embryonic" },
#ifdef USE_THREAD
{ .func = accept_queue_process, .name = "accept_queue_process" },
#endif