diff options
Diffstat (limited to 'src/quic_entry.cpp')
| -rw-r--r-- | src/quic_entry.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/quic_entry.cpp b/src/quic_entry.cpp index 52d3ccd..afd40b3 100644 --- a/src/quic_entry.cpp +++ b/src/quic_entry.cpp @@ -155,22 +155,22 @@ void *quic_session_ctx_new_cb(struct session *sess, void *plugin_env) stellar_session_plugin_dettach_current_session(sess); return NULL; } - int thread_seq = session_get_current_thread_id(sess); - size_t payload_len = -1; + size_t payload_len = 0; const char * payload = session_get0_current_payload(sess, &payload_len); if(NULL == payload || payload_len <= 0) { stellar_session_plugin_dettach_current_session(sess); return NULL; } - struct quic_info tmp_qinfo = {}; - if(PARSE_RESULT_UNKNOWN == parse_quic_all_version(quic_plugin_env, &tmp_qinfo, payload, payload_len, thread_seq)) + int payload_offset = 0; + enum QUIC_VERSION_T quic_ver = is_quic_protocol(payload, payload_len, &payload_offset); + if(QUIC_VERSION_UNKNOWN == quic_ver) { stellar_session_plugin_dettach_current_session(sess); return NULL; } struct quic_context *qcontext = (struct quic_context *)CALLOC(1, sizeof(struct quic_context)); - memcpy(&qcontext->quic_info, &tmp_qinfo, sizeof(struct quic_info)); + qcontext->quic_info.quic_version = (unsigned int )quic_ver; struct quic_message *qmsg = quic_create_message(QUIC_NEW, qcontext); quic_session_mq_publish_message_safe(sess, quic_plugin_env->quic_topic_id, qmsg); return (void *)qcontext; @@ -181,6 +181,9 @@ void quic_session_ctx_free_cb(struct session *sess, void *session_ctx, void *plu if(session_ctx){ struct quic_context *qcontext = (struct quic_context *)session_ctx; free_quicinfo(&qcontext->quic_info); + if(qcontext->quic_buf.buffer){ + free(qcontext->quic_buf.buffer); + } FREE(session_ctx); } return; @@ -207,7 +210,8 @@ extern "C" void *QUIC_ONLOAD(struct stellar *st) MESA_load_profile_string_def(g_quic_proto_conffile, "QUIC", "LOG_PATH", quic_plugin_env->log_path, sizeof(quic_plugin_env->log_path), g_quic_log_path); MESA_load_profile_int_def(g_quic_proto_conffile, "QUIC", "DECRYPTED_SWITCH", &quic_plugin_env->decrypted_switch, 2); - MESA_load_profile_int_def(g_quic_proto_conffile, "QUIC", "MAX_PARSE_PKT_NUM", &quic_plugin_env->max_parse_pkt_num, 3); + // MESA_load_profile_int_def(g_quic_proto_conffile, "QUIC", "MAX_PARSE_PKT_NUM", &quic_plugin_env->max_parse_pkt_num, 3); + MESA_load_profile_int_def(g_quic_proto_conffile, "QUIC", "MAX_CHLO_SIZE", &quic_plugin_env->max_chlo_size, 4096); MESA_load_profile_string_def(g_quic_proto_conffile, "QUIC", "QUIC_PORT_LIST", buff, sizeof(buff), "443;8443;"); quic_plugin_env->quic_port_num=parse_quic_port(buff, quic_plugin_env->quic_port_list, SUPPORT_QUIC_PORT_NUM); |
