summaryrefslogtreecommitdiff
path: root/src/quic_entry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quic_entry.cpp')
-rw-r--r--src/quic_entry.cpp16
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);