Opened 10 months ago

Closed 10 months ago

Last modified 3 days ago

#2515 closed defect (invalid)

Can't build QUIC binaries for windows

Reported by: sonqor@… Owned by:
Priority: major Milestone: nginx-1.26
Component: http/3 Version: 1.23.x
Keywords: QUIC HTTP/3 Cc: sonqor@…
uname -a: CL v19.36
nginx -V: nginx version: nginx/1.25.1
built by cl 19.36
built with OpenSSL 1.1.1u+quic 30 May 2023
TLS SNI support enabled
configure arguments: --with-cc=cl --builddir=objs --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre --with-zlib=objs/lib/zlib --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_slice_module --with-mail --with-stream --with-openssl=objs/lib/quictls --with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0501' --with-http_ssl_module --with-mail_ssl_module --with-stream_ssl_module

Description

I have tried to build Nginx from sources for Windows using either quictls (openssl-OpenSSL_1_1_1u-quic1) or openssl (openssl-OpenSSL_1_1_1u) with '--with-http_v3_module' parameter. But the following fatal error will be occurred each time:

C:\Users\moham\Downloads\nginx\src\event\quic\ngx_event_quic_connection.h(109): error C2079: 'udp' uses undefined struct 'ngx_udp_connection_s'
src/event/quic/ngx_event_quic.c(436): error C2037: left of 'buffer' specifies undefined struct/union 'ngx_udp_connection_s'
NMAKE : fatal error U1077: 'cl -c -O2  -W3 -WX -nologo -MT -Zi -Fdobjs/nginx.pdb -DFD_SETSIZE=1024 -DNO_SYS_TYPES_H -Yungx_config.h -Fpobjs/ngx_config.pch -I src/core  -I src/event  -I src/event/modules  -I src/event/quic  -I src/os/win32  -I objs/lib/pcre  -I objs/lib/openssl/openssl/include  -I objs/lib/zlib  -I objs  -I src/http  -I src/http/modules  -I src/http/v2  -I src/http/v3  -I src/mail  -I src/stream  -Foobjs/src/event/quic/ngx_event_quic.obj  src/event/quic/ngx_event_quic.c' : return code '0x2'
Stop.

But if I want to build nginx without '--with-http_v3_module' parameter, the building process will be successful:

$> nginx -V

nginx version: nginx/1.25.1
built by cl 19.36
built with OpenSSL 1.1.1u+quic  30 May 2023
TLS SNI support enabled
configure arguments: --with-cc=cl --builddir=objs --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre --with-zlib=objs/lib/zlib --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_slice_module --with-mail --with-stream --with-openssl=objs/lib/quictls --with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0501' --with-http_ssl_module --with-mail_ssl_module --with-stream_ssl_module

I want to know what's wrong with the HTTP/3 QUIC module in windows? Especially in below paths:

src/event/quic/ngx_event_quic_connection.h(109)
src/event/quic/ngx_event_quic.c(436)

In other words, when QUIC will be supported on the Windows operating system? Because the official documentations in Nginx.org has noted that QUIC is only available in Linux builds:
Support for QUIC and HTTP/3 protocols is available since 1.25.0. Also, since 1.25.0, the QUIC and HTTP/3 support is available in Linux binary packages.

Change History (2)

comment:1 by Maxim Dounin, 10 months ago

Resolution: invalid
Status: newclosed

QUIC on Windows is not currently supported due to lack of UDP handling infrastructure implemented for this platform. Feel free to submit patches if you feel yourself brave enough to implement it.

comment:2 by m.herasimovich, 3 days ago

Milestone: nginx-1.25nginx-1.26

Milestone renamed

Note: See TracTickets for help on using tickets.