#2515 closed defect (invalid)
Can't build QUIC binaries for windows
Reported by: | 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.
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.