Welcome! Log In Create A New Profile

Advanced

Re: nginx-quic socket() 0.0.0.0:80 failed (94: Socket type not supported)

Roman Arutyunyan
November 01, 2022 09:04AM
Hi George,

On Tue, Nov 01, 2022 at 08:19:15AM -0400, George wrote:
> I tested nginx-quic https://quic.nginx.org/README for HTTP/3 over QUIC using
> quictls openssl 1.1.1q forked library and ran into an interesting error for
> non-HTTPS nginx vhost configurations. If non-HTTPS nginx vhost doesn't
> specifically list the listen directive for port 80, I get this error when
> running nginx -t config check
>
> nginx: [emerg] socket() 0.0.0.0:80 failed (94: Socket type not supported)
>
> server {
>
> server_name domain.com www.domain.com;
> }
>
> but if I specifically list the listen directive no error
>
> server {
> listen 80;
> server_name domain1.com www.domain1.com;
> }
>
> Nginx was built on CentOS 7 with GCC 11.2.1 and quictls openssl 1.1.1q
>
> nginx -V
> nginx version: nginx/1.23.2 (011122-105436-centos7-d9e494b-br-6e975bc)
> built by gcc 11.2.1 20220127 (Red Hat 11.2.1-9) (GCC)
> built with OpenSSL 1.1.1q+quic 5 Jul 2022
> TLS SNI support enabled
>
> This seems to only be an issue with nginx-quic built Nginx versions. If I
> build a regular Nginx version without nginx-quic/quictls the non-HTTPS vhost
> with no listen directive specifically listed for port 80 works fine and has
> been the expected case since I started using Nginx ~11yrs ago.
>
> So with nginx-quic, does the assumption that server{} contexts without a
> specifically mentioned listen port, no longer default to port 80?

Thanks for reporting this.

Indeed, default listen is broken in nginx-quic branch.

Please try the attached patch which should fix the problem.

--
Roman Arutyunyan
# HG changeset patch
# User Roman Arutyunyan <arut@nginx.com>
# Date 1667307635 -14400
# Tue Nov 01 17:00:35 2022 +0400
# Branch quic
# Node ID 40777e329eea363001186c4bf609d2ef0682bcee
# Parent 598cbf105892bf9d7acc0fc3278ba9329b3a151c
Set default listen socket type in http.

The type field was added in 7999d3fbb765 at early stages of QUIC implementation
and was not initialized for default listen. Missing initialization resulted in
default listen socket creation error.

diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -3008,6 +3008,7 @@ ngx_http_core_server(ngx_conf_t *cf, ngx
lsopt.socklen = sizeof(struct sockaddr_in);

lsopt.backlog = NGX_LISTEN_BACKLOG;
+ lsopt.type = SOCK_STREAM;
lsopt.rcvbuf = -1;
lsopt.sndbuf = -1;
#if (NGX_HAVE_SETFIB)
_______________________________________________
nginx mailing list -- nginx@nginx.org
To unsubscribe send an email to nginx-leave@nginx.org
Subject Author Posted

nginx-quic socket() 0.0.0.0:80 failed (94: Socket type not supported)

George November 01, 2022 08:19AM

Re: nginx-quic socket() 0.0.0.0:80 failed (94: Socket type not supported)

Roman Arutyunyan November 01, 2022 09:04AM

Re: nginx-quic socket() 0.0.0.0:80 failed (94: Socket type not supported)

George November 01, 2022 10:18AM

Re: nginx-quic socket() 0.0.0.0:80 failed (94: Socket type not supported)

George November 01, 2022 10:25AM

Re: nginx-quic socket() 0.0.0.0:80 failed (94: Socket type not supported)

Sergey Kandaurov November 10, 2022 08:34AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 307
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready