diff --git a/infra/packet_manager/packet_manager.c b/infra/packet_manager/packet_manager.c index 0238ec0..46153cb 100644 --- a/infra/packet_manager/packet_manager.c +++ b/infra/packet_manager/packet_manager.c @@ -5,8 +5,6 @@ #include "packet_manager.h" #include "fieldstat/fieldstat_easy.h" - - #define PACKET_MANAGER_LOG_ERROR(format, ...) STELLAR_LOG_ERROR(__thread_local_logger, "packet manager", format, ##__VA_ARGS__) #define PACKET_MANAGER_LOG_FATAL(format, ...) STELLAR_LOG_FATAL(__thread_local_logger, "packet manager", format, ##__VA_ARGS__) #define PACKET_MANAGER_LOG_INFO(format, ...) STELLAR_LOG_INFO(__thread_local_logger, "packet manager", format, ##__VA_ARGS__) @@ -460,7 +458,7 @@ static void on_polling(struct module_manager *mod_mgr, void *args) struct packet_manager *module_to_packet_manager(struct module *mod) { assert(mod); - assert(strcmp(module_get_name(mod), PACKET_MANAGER_MODULE_NAME) == 0); + assert(strcmp(module_get_name(mod), PACKET_MANAGER_MODULE_NAME) == 0); return (struct packet_manager *)module_get_ctx(mod); } diff --git a/infra/session_manager/session_manager.c b/infra/session_manager/session_manager.c index d2f99cf..21fb779 100644 --- a/infra/session_manager/session_manager.c +++ b/infra/session_manager/session_manager.c @@ -525,14 +525,14 @@ void session_manager_clean(struct session_manager *sess_mgr, uint16_t thread_id) struct session_manager *module_to_session_manager(struct module *mod) { assert(mod); - assert(strcmp(module_get_name(mod), SESSION_MANAGER_MODULE_NAME) == 0); + assert(strcmp(module_get_name(mod), SESSION_MANAGER_MODULE_NAME) == 0); return module_get_ctx(mod); } struct module *session_manager_on_init(struct module_manager *mod_mgr) { assert(mod_mgr); - struct module *pkt_mgr_mod= module_manager_get_module(mod_mgr, PACKET_MANAGER_MODULE_NAME); + struct module *pkt_mgr_mod = module_manager_get_module(mod_mgr, PACKET_MANAGER_MODULE_NAME); struct packet_manager *pkt_mgr = module_to_packet_manager(pkt_mgr_mod); assert(pkt_mgr); struct mq_schema *mq_sche = module_manager_get_mq_schema(mod_mgr); diff --git a/infra/session_manager/session_manager_rte.c b/infra/session_manager/session_manager_rte.c index 51e3cc7..e424faf 100644 --- a/infra/session_manager/session_manager_rte.c +++ b/infra/session_manager/session_manager_rte.c @@ -192,6 +192,16 @@ static void tcp_update(struct session_manager_rte *sess_mgr_rte, struct session { // len > 0 is SYN with data (TCP Fast Open) tcp_reassembly_set_recv_next(half->tcp_reass, len ? half->seq : half->seq + 1); + + if (unlikely(flags & TH_ACK)) + { + // current packet is SYN-ACK (S2C), if C2S has not received SYN-ACK, set C2S recv_next + struct tcp_half *peer = &sess->tcp_halfs[FLOW_TYPE_C2S]; + if (type == FLOW_TYPE_S2C && peer->history == 0 && tcp_reassembly_get_recv_next(peer->tcp_reass) == 0) + { + tcp_reassembly_set_recv_next(peer->tcp_reass, half->ack); + } + } } seg = tcp_reassembly_expire(half->tcp_reass, sess_mgr_rte->now_ms); diff --git a/infra/stellar_core.c b/infra/stellar_core.c index cbab9f5..bdb730e 100644 --- a/infra/stellar_core.c +++ b/infra/stellar_core.c @@ -53,7 +53,7 @@ static void *worker_thread(void *arg) struct packet_io *pkt_io = st->pkt_io; struct module_manager *mod_mgr = st->mod_mgr; struct mq_runtime *mq_rt = mq_runtime_new(st->mq_schema); - struct module *pkt_mgr_mod= module_manager_get_module(mod_mgr, PACKET_MANAGER_MODULE_NAME); + struct module *pkt_mgr_mod = module_manager_get_module(mod_mgr, PACKET_MANAGER_MODULE_NAME); struct packet_manager *pkt_mgr = module_to_packet_manager(pkt_mgr_mod); snprintf(thread_name, sizeof(thread_name), "stellar:%d", thread_id); diff --git a/test/session_debugger/session_debugger.c b/test/session_debugger/session_debugger.c index cad4316..e3a151e 100644 --- a/test/session_debugger/session_debugger.c +++ b/test/session_debugger/session_debugger.c @@ -434,7 +434,7 @@ error_out: struct module *session_debugger_on_init(struct module_manager *mod_mgr) { assert(mod_mgr); - struct module *sess_mgr_mod=module_manager_get_module(mod_mgr, SESSION_MANAGER_MODULE_NAME); + struct module *sess_mgr_mod = module_manager_get_module(mod_mgr, SESSION_MANAGER_MODULE_NAME); struct session_manager *sess_mgr = module_to_session_manager(sess_mgr_mod); assert(sess_mgr); struct logger *logger = module_manager_get_logger(mod_mgr);