session manager not trigger event
This commit is contained in:
@@ -117,11 +117,20 @@ static void signal_handler(int signo)
|
||||
}
|
||||
}
|
||||
|
||||
static void plugin_dispatch(struct session *sess, uint32_t event, void *arg)
|
||||
static void __session_dispatch(struct session *sess)
|
||||
{
|
||||
struct thread_ctx *thd_ctx = (struct thread_ctx *)arg;
|
||||
printf("=> tid[%d] plugin_dispatch handle session: %p, event: \"%s\"\n", thd_ctx->index, sess, session_event_tostring((enum session_event)event));
|
||||
if (sess == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
printf("=> session dispatch: %p\n", sess);
|
||||
session_dump(sess);
|
||||
printf("<= session dispatch\n");
|
||||
|
||||
session_set0_cur_pkt(sess, NULL);
|
||||
session_set_cur_dir(sess, SESSION_DIR_NONE);
|
||||
}
|
||||
|
||||
static void thread_ctx_init(struct stellar_ctx *ctx)
|
||||
@@ -135,7 +144,6 @@ static void thread_ctx_init(struct stellar_ctx *ctx)
|
||||
// session manager
|
||||
thd_ctx->sess_mgr = session_manager_create(ctx->sess_mgr_max_session_num);
|
||||
assert(thd_ctx->sess_mgr != NULL);
|
||||
session_manager_set_session_eventcb(thd_ctx->sess_mgr, plugin_dispatch, thd_ctx);
|
||||
session_manager_set_timeout_toclosing(thd_ctx->sess_mgr, ctx->sess_mgr_timeout_ms_toclsoing);
|
||||
session_manager_set_timeout_toclosed(thd_ctx->sess_mgr, ctx->sess_mgr_timeout_ms_toclosed);
|
||||
// duplicated packet filter
|
||||
@@ -206,7 +214,7 @@ static void *thread_cycle(void *arg)
|
||||
|
||||
// TODO session synchronization
|
||||
|
||||
session_manager_dispatch(sess_mgr, sess);
|
||||
__session_dispatch(sess);
|
||||
dupkt_filter_add(dupkt_filter, &pkt);
|
||||
|
||||
fast_forward:
|
||||
@@ -219,7 +227,15 @@ static void *thread_cycle(void *arg)
|
||||
const struct packet *sess_1st_pkt = session_get0_1st_pkt(sess);
|
||||
eviction_filter_add(thd_ctx->eviction_filter, sess_1st_pkt);
|
||||
}
|
||||
session_manager_dispatch(sess_mgr, sess);
|
||||
__session_dispatch(sess);
|
||||
|
||||
sess = session_manager_evicte(sess_mgr);
|
||||
if (sess && session_get_type(sess) == SESSION_TYPE_UDP)
|
||||
{
|
||||
const struct packet *sess_1st_pkt = session_get0_1st_pkt(sess);
|
||||
eviction_filter_add(thd_ctx->eviction_filter, sess_1st_pkt);
|
||||
}
|
||||
__session_dispatch(sess);
|
||||
|
||||
// TODO get next timeout
|
||||
sleep(1);
|
||||
|
||||
Reference in New Issue
Block a user