From caec29ecdbe9484606b3f7274e822ce5a788bc04 Mon Sep 17 00:00:00 2001 From: Sergey Kandaurov Date: Fri, 20 Feb 2026 19:01:20 +0400 Subject: [PATCH] QUIC: moved ngx_quic_address_hash(). --- src/event/quic/ngx_event_quic.c | 46 ++++++++++++++++++++ src/event/quic/ngx_event_quic_connection.h | 2 + src/event/quic/ngx_event_quic_tokens.c | 49 ---------------------- 3 files changed, 48 insertions(+), 49 deletions(-) diff --git a/src/event/quic/ngx_event_quic.c b/src/event/quic/ngx_event_quic.c index ef0c8758d..4b27a8e22 100644 --- a/src/event/quic/ngx_event_quic.c +++ b/src/event/quic/ngx_event_quic.c @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -1465,3 +1466,48 @@ ngx_quic_shutdown_quic(ngx_connection_t *c) ngx_quic_finalize_connection(c, qc->shutdown_code, qc->shutdown_reason); } } + + +void +ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen, + ngx_uint_t no_port, u_char buf[20]) +{ + size_t len; + u_char *data; + ngx_sha1_t sha1; + struct sockaddr_in *sin; +#if (NGX_HAVE_INET6) + struct sockaddr_in6 *sin6; +#endif + + len = (size_t) socklen; + data = (u_char *) sockaddr; + + if (no_port) { + switch (sockaddr->sa_family) { + +#if (NGX_HAVE_INET6) + case AF_INET6: + sin6 = (struct sockaddr_in6 *) sockaddr; + + len = sizeof(struct in6_addr); + data = sin6->sin6_addr.s6_addr; + + break; +#endif + + case AF_INET: + sin = (struct sockaddr_in *) sockaddr; + + len = sizeof(in_addr_t); + data = (u_char *) &sin->sin_addr; + + break; + } + } + + ngx_sha1_init(&sha1); + ngx_sha1_update(&sha1, data, len); + + ngx_sha1_final(buf, &sha1); +} diff --git a/src/event/quic/ngx_event_quic_connection.h b/src/event/quic/ngx_event_quic_connection.h index 04cda859e..8561654e5 100644 --- a/src/event/quic/ngx_event_quic_connection.h +++ b/src/event/quic/ngx_event_quic_connection.h @@ -303,6 +303,8 @@ void ngx_quic_discard_ctx(ngx_connection_t *c, enum ssl_encryption_level_t level); void ngx_quic_close_connection(ngx_connection_t *c, ngx_int_t rc); void ngx_quic_shutdown_quic(ngx_connection_t *c); +void ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen, + ngx_uint_t no_port, u_char buf[20]); #if (NGX_DEBUG) void ngx_quic_connstate_dbg(ngx_connection_t *c); diff --git a/src/event/quic/ngx_event_quic_tokens.c b/src/event/quic/ngx_event_quic_tokens.c index c1da0d472..89d318157 100644 --- a/src/event/quic/ngx_event_quic_tokens.c +++ b/src/event/quic/ngx_event_quic_tokens.c @@ -7,14 +7,9 @@ #include #include #include -#include #include -static void ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen, - ngx_uint_t no_port, u_char buf[20]); - - ngx_int_t ngx_quic_new_sr_token(ngx_connection_t *c, ngx_str_t *cid, u_char *secret, u_char *token) @@ -129,50 +124,6 @@ ngx_quic_new_token(ngx_log_t *log, struct sockaddr *sockaddr, } -static void -ngx_quic_address_hash(struct sockaddr *sockaddr, socklen_t socklen, - ngx_uint_t no_port, u_char buf[20]) -{ - size_t len; - u_char *data; - ngx_sha1_t sha1; - struct sockaddr_in *sin; -#if (NGX_HAVE_INET6) - struct sockaddr_in6 *sin6; -#endif - - len = (size_t) socklen; - data = (u_char *) sockaddr; - - if (no_port) { - switch (sockaddr->sa_family) { - -#if (NGX_HAVE_INET6) - case AF_INET6: - sin6 = (struct sockaddr_in6 *) sockaddr; - - len = sizeof(struct in6_addr); - data = sin6->sin6_addr.s6_addr; - - break; -#endif - - case AF_INET: - sin = (struct sockaddr_in *) sockaddr; - - len = sizeof(in_addr_t); - data = (u_char *) &sin->sin_addr; - - break; - } - } - - ngx_sha1_init(&sha1); - ngx_sha1_update(&sha1, data, len); - ngx_sha1_final(buf, &sha1); -} - - ngx_int_t ngx_quic_validate_token(ngx_connection_t *c, u_char *key, ngx_quic_header_t *pkt) -- 2.47.3