 +
 +    ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0,
 +        "new quic connection dcid:%*.s new_scid:%*.s",
-+        ngx_hex_dump(dcid_hex, dcid, sizeof(dcid)) - dcid_hex, dcid_hex,
-+        ngx_hex_dump(scid_hex, scid, sizeof(scid)) - scid_hex, scid_hex);
++        ngx_hex_dump(dcid_hex, dcid, dcid_len) - dcid_hex, dcid_hex,
++        ngx_hex_dump(scid_hex, scid, scid_len) - scid_hex, scid_hex);
 +    }
 +#endif
 +

     if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
diff --git a/src/http/v3/ngx_http_v3.c b/src/http/v3/ngx_http_v3.c
new file mode 100644
index 000000000..972ecd223
--- /dev/null
+++ b/src/http/v3/ngx_http_v3.c
@@ -0,0 +1,2092 @@

 #include <ngx_module.h>
diff --git a/src/event/ngx_event_quic.c b/src/event/ngx_event_quic.c
new file mode 100644
index 000000000..bcaf446fa
--- /dev/null
+++ b/src/event/ngx_event_quic.c
@@ -0,0 +1,571 @@
