From mdounin at mdounin.ru Wed Feb 14 18:03:11 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Wed, 14 Feb 2024 21:03:11 +0300 Subject: announcing freenginx.org Message-ID: Hello! As you probably know, F5 closed Moscow office in 2022, and I no longer work for F5 since then. Still, we?ve reached an agreement that I will maintain my role in nginx development as a volunteer. And for almost two years I was working on improving nginx and making it better for everyone, for free. Unfortunately, some new non-technical management at F5 recently decided that they know better how to run open source projects. In particular, they decided to interfere with security policy nginx uses for years, ignoring both the policy and developers? position. That?s quite understandable: they own the project, and can do anything with it, including doing marketing-motivated actions, ignoring developers position and community. Still, this contradicts our agreement. And, more importantly, I no longer able to control which changes are made in nginx within F5, and no longer see nginx as a free and open source project developed and maintained for the public good. As such, starting from today, I will no longer participate in nginx development as run by F5. Instead, I?m starting an alternative project, which is going to be run by developers, and not corporate entities: http://freenginx.org/ The goal is to keep nginx development free from arbitrary corporate actions. Help and contributions are welcome. Hope it will be beneficial for everyone. -- Maxim Dounin http://freenginx.org/ From serg.brester at sebres.de Wed Feb 14 21:45:37 2024 From: serg.brester at sebres.de (Sergey Brester) Date: Wed, 14 Feb 2024 22:45:37 +0100 Subject: announcing freenginx.org In-Reply-To: References: Message-ID: <6c0cfb0380b84175709b1bd80ba27397@sebres.de> Hi Maxim, it is pity to hear such news... I have few comments and questions about, which I enclosed inline below... Regards, Serg. 14.02.2024 19:03, Maxim Dounin wrote: > Hello! > > As you probably know, F5 closed Moscow office in 2022, and I no > longer work for F5 since then. Still, we've reached an agreement > that I will maintain my role in nginx development as a volunteer. > And for almost two years I was working on improving nginx and > making it better for everyone, for free. And you did a very good job! > Unfortunately, some new non-technical management at F5 recently > decided that they know better how to run open source projects. In > particular, they decided to interfere with security policy nginx > uses for years, ignoring both the policy and developers' position. Can you explain a bit more about that (or provide some examples or a link to a public discussion about, if it exists)? > That's quite understandable: they own the project, and can do > anything with it, including doing marketing-motivated actions, > ignoring developers position and community. Still, this > contradicts our agreement. And, more importantly, I no longer able > to control which changes are made in nginx within F5, and no longer > see nginx as a free and open source project developed and > maintained for the public good. Do you speak only about you?.. Or are there also other developers which share your point of view? Just for the record... What is about R. Arutyunyan, V. Bartenev and others? Could one expect any statement from Igor (Sysoev) about the subject? > As such, starting from today, I will no longer participate in nginx > development as run by F5. Instead, I'm starting an alternative > project, which is going to be run by developers, and not corporate > entities: > > http://freenginx.org/ [1] Why yet another fork? I mean why just not "angie", for instance? Additionally I'd like to ask whether the name "freenginx" is really well thought-out? I mean: - it can be easy confused with free nginx (compared to nginx plus) - the search for that will be horrible (if you would try to search for freenginx, even as exact (within quotes, with plus etc), many internet search engine would definitely include free nginx in the result. - possibly copyright or trademark problems, etc > The goal is to keep nginx development free from arbitrary corporate > actions. Help and contributions are welcome. Hope it will be > beneficial for everyone. Just as an idea: switch the primary dev to GH (github)... (and commonly from hg to git). I'm sure it would boost the development drastically, as well as bring many new developers and let grow the community. Links: ------ [1] http://freenginx.org/ From mdounin at mdounin.ru Wed Feb 14 22:21:10 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 15 Feb 2024 01:21:10 +0300 Subject: announcing freenginx.org In-Reply-To: <6c0cfb0380b84175709b1bd80ba27397@sebres.de> References: <6c0cfb0380b84175709b1bd80ba27397@sebres.de> Message-ID: Hello! On Wed, Feb 14, 2024 at 10:45:37PM +0100, Sergey Brester wrote: > Hi Maxim, > > it is pity to hear such news... > > I have few comments and questions about, which I enclosed inline below... > > Regards, > Serg. > > 14.02.2024 19:03, Maxim Dounin wrote: > > > Hello! > > > > As you probably know, F5 closed Moscow office in 2022, and I no > > longer work for F5 since then. Still, we've reached an agreement > > that I will maintain my role in nginx development as a volunteer. > > And for almost two years I was working on improving nginx and > > making it better for everyone, for free. > > And you did a very good job! Thanks. > > Unfortunately, some new non-technical management at F5 recently > > decided that they know better how to run open source projects. In > > particular, they decided to interfere with security policy nginx > > uses for years, ignoring both the policy and developers' position. > > Can you explain a bit more about that (or provide some examples > or a link to a public discussion about, if it exists)? I've already provided some details here: https://freenginx.org/pipermail/nginx/2024-February/000007.html : The most recent "security advisory" was released despite the fact : that the particular bug in the experimental HTTP/3 code is : expected to be fixed as a normal bug as per the existing security : policy, and all the developers, including me, agree on this. : : And, while the particular action isn't exactly very bad, the : approach in general is quite problematic. There was no public discussion. The only discussion I'm aware of happened on the security-alert@ list, and the consensus was that the bug should be fixed as a normal bug. Still, I was reached several days ago with the information that some unnamed management requested an advisory and security release anyway, regardless of the policy and developers position. > > That's quite understandable: they own the project, and can do > > anything with it, including doing marketing-motivated actions, > > ignoring developers position and community. Still, this > > contradicts our agreement. And, more importantly, I no longer able > > to control which changes are made in nginx within F5, and no longer > > see nginx as a free and open source project developed and > > maintained for the public good. > > Do you speak only about you?.. Or are there also other developers which > share your point of view? Just for the record... > What is about R. Arutyunyan, V. Bartenev and others? > Could one expect any statement from Igor (Sysoev) about the subject? I speak only about me. Others, if they are interested in, are welcome to join. > > As such, starting from today, I will no longer participate in nginx > > development as run by F5. Instead, I'm starting an alternative > > project, which is going to be run by developers, and not corporate > > entities: > > > > http://freenginx.org/ [1] > > Why yet another fork? I mean why just not "angie", for instance? The "angie" fork shares the same problem as nginx run by F5: it's run by a for-profit corporate entity. Even if it's good enough now, things might change unexpectedly, like it happened with F5. > Additionally I'd like to ask whether the name "freenginx" is really well > thought-out? > I mean: > - it can be easy confused with free nginx (compared to nginx plus) > - the search for that will be horrible (if you would try to search for > freenginx, > even as exact (within quotes, with plus etc), many internet search > engine > would definitely include free nginx in the result. > - possibly copyright or trademark problems, etc Apart from potential trademark concerns (which I believe do not apply here, but IANAL), these does not seem to be significant (and search results are already good enough). Still, the name aligns well with project goals. > > The goal is to keep nginx development free from arbitrary corporate > > actions. Help and contributions are welcome. Hope it will be > > beneficial for everyone. > > Just as an idea: switch the primary dev to GH (github)... (and commonly from > hg to git). > I'm sure it would boost the development drastically, as well as bring many > new > developers and let grow the community. While I understand the suggestion and potential benefits, I'm not a fun of git and github, and prefer Mercurial. -- Maxim Dounin http://mdounin.ru/ From vasiliy.soshnikov at gmail.com Wed Feb 14 22:33:08 2024 From: vasiliy.soshnikov at gmail.com (Vasiliy Soshnikov) Date: Thu, 15 Feb 2024 01:33:08 +0300 Subject: announcing freenginx.org In-Reply-To: References: <6c0cfb0380b84175709b1bd80ba27397@sebres.de> Message-ID: Hello Maxim, Sad to read it. I can't promise that, but I will try to support your project by using freenginx at least. I wish good luck to freenginx! -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Wed Feb 14 22:35:29 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 15 Feb 2024 01:35:29 +0300 Subject: announcing freenginx.org In-Reply-To: References: <6c0cfb0380b84175709b1bd80ba27397@sebres.de> Message-ID: Hello! On Thu, Feb 15, 2024 at 01:33:08AM +0300, Vasiliy Soshnikov wrote: > Hello Maxim, > Sad to read it. I can't promise that, but I will try to support your > project by using freenginx at least. > I wish good luck to freenginx! Thanks, appreciated. -- Maxim Dounin http://mdounin.ru/ From archimedes.gaviola at gmail.com Thu Feb 15 08:49:10 2024 From: archimedes.gaviola at gmail.com (Archimedes Gaviola) Date: Thu, 15 Feb 2024 16:49:10 +0800 Subject: announcing freenginx.org In-Reply-To: References: Message-ID: On Thu, Feb 15, 2024 at 2:03?AM Maxim Dounin wrote: > Hello! > > As you probably know, F5 closed Moscow office in 2022, and I no > longer work for F5 since then. Still, we?ve reached an agreement > that I will maintain my role in nginx development as a volunteer. > And for almost two years I was working on improving nginx and > making it better for everyone, for free. > > Unfortunately, some new non-technical management at F5 recently > decided that they know better how to run open source projects. In > particular, they decided to interfere with security policy nginx > uses for years, ignoring both the policy and developers? position. > > That?s quite understandable: they own the project, and can do > anything with it, including doing marketing-motivated actions, > ignoring developers position and community. Still, this > contradicts our agreement. And, more importantly, I no longer able > to control which changes are made in nginx within F5, and no longer > see nginx as a free and open source project developed and > maintained for the public good. > > As such, starting from today, I will no longer participate in nginx > development as run by F5. Instead, I?m starting an alternative > project, which is going to be run by developers, and not corporate > entities: > > http://freenginx.org/ > > The goal is to keep nginx development free from arbitrary corporate > actions. Help and contributions are welcome. Hope it will be > beneficial for everyone. > > > -- > Maxim Dounin > http://freenginx.org/ > _______________________________________________ > nginx-devel mailing list > nginx-devel at nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-devel Hi Maxim, Sorry to hear that. Is the license still the same for freenginx? Thanks, Archimedes -------------- next part -------------- An HTML attachment was scrubbed... URL: From antoine.bonavita at gmail.com Thu Feb 15 09:40:05 2024 From: antoine.bonavita at gmail.com (Antoine Bonavita) Date: Thu, 15 Feb 2024 10:40:05 +0100 Subject: announcing freenginx.org In-Reply-To: References: Message-ID: Maxim, Thanks for the amazing work and your dedication all those years. Will definitely follow freenginx and use it as my webserver of choice. A. On Thu, Feb 15, 2024 at 9:49?AM Archimedes Gaviola < archimedes.gaviola at gmail.com> wrote: > > > On Thu, Feb 15, 2024 at 2:03?AM Maxim Dounin wrote: > >> Hello! >> >> As you probably know, F5 closed Moscow office in 2022, and I no >> longer work for F5 since then. Still, we?ve reached an agreement >> that I will maintain my role in nginx development as a volunteer. >> And for almost two years I was working on improving nginx and >> making it better for everyone, for free. >> >> Unfortunately, some new non-technical management at F5 recently >> decided that they know better how to run open source projects. In >> particular, they decided to interfere with security policy nginx >> uses for years, ignoring both the policy and developers? position. >> >> That?s quite understandable: they own the project, and can do >> anything with it, including doing marketing-motivated actions, >> ignoring developers position and community. Still, this >> contradicts our agreement. And, more importantly, I no longer able >> to control which changes are made in nginx within F5, and no longer >> see nginx as a free and open source project developed and >> maintained for the public good. >> >> As such, starting from today, I will no longer participate in nginx >> development as run by F5. Instead, I?m starting an alternative >> project, which is going to be run by developers, and not corporate >> entities: >> >> http://freenginx.org/ >> >> The goal is to keep nginx development free from arbitrary corporate >> actions. Help and contributions are welcome. Hope it will be >> beneficial for everyone. >> >> >> -- >> Maxim Dounin >> http://freenginx.org/ >> _______________________________________________ >> nginx-devel mailing list >> nginx-devel at nginx.org >> https://mailman.nginx.org/mailman/listinfo/nginx-devel > > > Hi Maxim, > > Sorry to hear that. Is the license still the same for freenginx? > > Thanks, > Archimedes > _______________________________________________ > nginx-devel mailing list > nginx-devel at nginx.org > https://mailman.nginx.org/mailman/listinfo/nginx-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From mdounin at mdounin.ru Thu Feb 15 10:33:03 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Thu, 15 Feb 2024 13:33:03 +0300 Subject: announcing freenginx.org In-Reply-To: References: Message-ID: Hello! On Thu, Feb 15, 2024 at 04:49:10PM +0800, Archimedes Gaviola wrote: > On Thu, Feb 15, 2024 at 2:03?AM Maxim Dounin wrote: > > > Hello! > > > > As you probably know, F5 closed Moscow office in 2022, and I no > > longer work for F5 since then. Still, we?ve reached an agreement > > that I will maintain my role in nginx development as a volunteer. > > And for almost two years I was working on improving nginx and > > making it better for everyone, for free. > > > > Unfortunately, some new non-technical management at F5 recently > > decided that they know better how to run open source projects. In > > particular, they decided to interfere with security policy nginx > > uses for years, ignoring both the policy and developers? position. > > > > That?s quite understandable: they own the project, and can do > > anything with it, including doing marketing-motivated actions, > > ignoring developers position and community. Still, this > > contradicts our agreement. And, more importantly, I no longer able > > to control which changes are made in nginx within F5, and no longer > > see nginx as a free and open source project developed and > > maintained for the public good. > > > > As such, starting from today, I will no longer participate in nginx > > development as run by F5. Instead, I?m starting an alternative > > project, which is going to be run by developers, and not corporate > > entities: > > > > http://freenginx.org/ > > > > The goal is to keep nginx development free from arbitrary corporate > > actions. Help and contributions are welcome. Hope it will be > > beneficial for everyone. > > > > > > -- > > Maxim Dounin > > http://freenginx.org/ > > Hi Maxim, > > Sorry to hear that. Is the license still the same for freenginx? Yes, the license will remain the same. -- Maxim Dounin http://mdounin.ru/ From ersjtwmb at addy.io Thu Feb 15 14:06:06 2024 From: ersjtwmb at addy.io (ersjtwmb at addy.io) Date: Thu, 15 Feb 2024 14:06:06 +0000 Subject: Freenginx license -- copyleft would help Message-ID: <76f6d5ad99402cff923bc8c3471a86f9@addy.io> Hello, One of my friends told me about what is hapenning with the nginx. I was happy since I knew that the current model could lead to something bad. What I was the most interested in was if the project's license hase changed. A non-copyleft license allows a company to take everything from the upstream and add stuff to it without sharing the changes. That is for example what happened to anonaddy.com (addy.io), originally licensed under MIT (x11) license. That is why I suggest that the license should be changed so that it holds some copyleft. As a starting point I suggest the Mozilla Public License 2.0, which is considered a weak copyleft license. I think that this aligns with the project's mission: "[...] no longer see nginx as a free and open source project developed and maintained for the public good." "The goal is to keep nginx development free from arbitrary corporate actions." In my opinion the stronger the copyleft the better (MPL References: <76f6d5ad99402cff923bc8c3471a86f9@addy.io> Message-ID: Hello! On Thu, Feb 15, 2024 at 02:06:06PM +0000, ersjtwmb at addy.io wrote: > Hello, > > One of my friends told me about what is hapenning with the nginx. > I was happy since I knew that the current model could lead to something bad. > What I was the most interested in was if the project's license hase changed. > A non-copyleft license allows a company to take everything from the upstream and add stuff to it without sharing the changes. > That is for example what happened to anonaddy.com (addy.io), > originally licensed under MIT (x11) license. > > That is why I suggest that the license should be changed so that it holds some copyleft. > As a starting point I suggest the Mozilla Public License 2.0, which is considered a weak copyleft license. > > I think that this aligns with the project's mission: > "[...] no longer see nginx as a free and open source project developed and maintained for the public good." > "The goal is to keep nginx development free from arbitrary corporate actions." > > > In my opinion the stronger the copyleft the better (MPL > What do you think about this? While copyleft licenses might be beneficial to prevent corporations from using the code without sharing improvements, I don't think this is a concern here. As long as there are developers who are willing to work on the project, there will be no issues with any free license. Also, as a long-time FreeBSD user and contributor, and I think that BSD license is actually better from the freedom point of view, as it does not restrict users from doing whatever they want. -- Maxim Dounin http://mdounin.ru/ From mdounin at mdounin.ru Mon Feb 19 00:04:06 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 03:04:06 +0300 Subject: [PATCH 0 of 4] merge from F5 nginx branch Message-ID: Hello! The following patch series merges fixes from the F5 nginx branch. I've reviewed these patches and they look good, so I'm going to commit them shortly. Comments are welcome. -- Maxim Dounin From mdounin at mdounin.ru Mon Feb 19 00:04:07 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 03:04:07 +0300 Subject: [PATCH 1 of 4] QUIC: fixed unsent MTU probe acknowledgement In-Reply-To: References: Message-ID: <2ed3f57dca0a664340bc.1708301047@vm-bsd.mdounin.ru> # HG changeset patch # User Roman Arutyunyan # Date 1707915388 -14400 # Wed Feb 14 16:56:28 2024 +0400 # Node ID 2ed3f57dca0a664340bca2236c7d614902db4180 # Parent 73eb75bee30f4aee66edfb500270dbb14710aafd QUIC: fixed unsent MTU probe acknowledgement. Previously if an MTU probe send failed early in ngx_quic_frame_sendto() due to allocation error or congestion control, the application level packet number was not increased, but was still saved as MTU probe packet number. Later when a packet with this number was acknowledged, the unsent MTU probe was acknowledged as well. This could result in discovering a bigger MTU than supported by the path, which could lead to EMSGSIZE (Message too long) errors while sending further packets. The problem existed since PMTUD was introduced in 58afcd72446f (1.25.2). Back then only the unlikely memory allocation error could trigger it. However in efcdaa66df2e congestion control was added to ngx_quic_frame_sendto() which can now trigger the issue with a higher probability. diff --git a/src/event/quic/ngx_event_quic_migration.c b/src/event/quic/ngx_event_quic_migration.c --- a/src/event/quic/ngx_event_quic_migration.c +++ b/src/event/quic/ngx_event_quic_migration.c @@ -909,6 +909,7 @@ static ngx_int_t ngx_quic_send_path_mtu_probe(ngx_connection_t *c, ngx_quic_path_t *path) { size_t mtu; + uint64_t pnum; ngx_int_t rc; ngx_uint_t log_error; ngx_quic_frame_t *frame; @@ -925,7 +926,7 @@ ngx_quic_send_path_mtu_probe(ngx_connect qc = ngx_quic_get_connection(c); ctx = ngx_quic_get_send_ctx(qc, ssl_encryption_application); - path->mtu_pnum[path->tries] = ctx->pnum; + pnum = ctx->pnum; ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, "quic path seq:%uL send probe " @@ -943,14 +944,18 @@ ngx_quic_send_path_mtu_probe(ngx_connect path->mtu = mtu; c->log_error = log_error; + if (rc == NGX_OK) { + path->mtu_pnum[path->tries] = pnum; + return NGX_OK; + } + + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, + "quic path seq:%uL rejected mtu:%uz", + path->seqnum, path->mtud); + if (rc == NGX_ERROR) { if (c->write->error) { c->write->error = 0; - - ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, - "quic path seq:%uL rejected mtu:%uz", - path->seqnum, path->mtud); - return NGX_DECLINED; } @@ -976,7 +981,7 @@ ngx_quic_handle_path_mtu(ngx_connection_ pnum = path->mtu_pnum[i]; if (pnum == NGX_QUIC_UNSET_PN) { - break; + continue; } if (pnum < min || pnum > max) { From mdounin at mdounin.ru Mon Feb 19 00:04:08 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 03:04:08 +0300 Subject: [PATCH 2 of 4] QUIC: trial packet decryption in response to invalid key update In-Reply-To: References: Message-ID: <1bf1b423f26853d0453e.1708301048@vm-bsd.mdounin.ru> # HG changeset patch # User Sergey Kandaurov # Date 1707911734 -14400 # Wed Feb 14 15:55:34 2024 +0400 # Node ID 1bf1b423f26853d0453ee30fa4ed4467ea05af7c # Parent 2ed3f57dca0a664340bca2236c7d614902db4180 QUIC: trial packet decryption in response to invalid key update. Inspired by RFC 9001, Section 6.3, trial packet decryption with the current keys is now used to avoid a timing side-channel signal. Further, this fixes segfault while accessing missing next keys (ticket #2585). diff --git a/src/event/quic/ngx_event_quic_protection.c b/src/event/quic/ngx_event_quic_protection.c --- a/src/event/quic/ngx_event_quic_protection.c +++ b/src/event/quic/ngx_event_quic_protection.c @@ -1144,8 +1144,19 @@ ngx_quic_decrypt(ngx_quic_header_t *pkt, key_phase = (pkt->flags & NGX_QUIC_PKT_KPHASE) != 0; if (key_phase != pkt->key_phase) { - secret = &pkt->keys->next_key.client; - pkt->key_update = 1; + if (pkt->keys->next_key.client.ctx != NULL) { + secret = &pkt->keys->next_key.client; + pkt->key_update = 1; + + } else { + /* + * RFC 9001, 6.3. Timing of Receive Key Generation. + * + * Trial decryption to avoid timing side-channel. + */ + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, pkt->log, 0, + "quic next key missing"); + } } } From mdounin at mdounin.ru Mon Feb 19 00:04:09 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 03:04:09 +0300 Subject: [PATCH 3 of 4] QUIC: fixed stream cleanup (ticket #2586) In-Reply-To: References: Message-ID: <4ed4e1e7f115cd48ee89.1708301049@vm-bsd.mdounin.ru> # HG changeset patch # User Roman Arutyunyan # Date 1707911737 -14400 # Wed Feb 14 15:55:37 2024 +0400 # Node ID 4ed4e1e7f115cd48ee891d7cae172d5745e38e00 # Parent 1bf1b423f26853d0453ee30fa4ed4467ea05af7c QUIC: fixed stream cleanup (ticket #2586). Stream connection cleanup handler ngx_quic_stream_cleanup_handler() calls ngx_quic_shutdown_stream() after which it resets the pointer from quic stream to the connection (sc->connection = NULL). Previously if this call failed, sc->connection retained the old value, while the connection was freed by the application code. This resulted later in a second attempt to close the freed connection, which lead to allocator double free error. The fix is to reset the sc->connection pointer in case of error. diff --git a/src/event/quic/ngx_event_quic_streams.c b/src/event/quic/ngx_event_quic_streams.c --- a/src/event/quic/ngx_event_quic_streams.c +++ b/src/event/quic/ngx_event_quic_streams.c @@ -1097,6 +1097,7 @@ ngx_quic_stream_cleanup_handler(void *da "quic stream id:0x%xL cleanup", qs->id); if (ngx_quic_shutdown_stream(c, NGX_RDWR_SHUTDOWN) != NGX_OK) { + qs->connection = NULL; goto failed; } From mdounin at mdounin.ru Mon Feb 19 00:04:10 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 03:04:10 +0300 Subject: [PATCH 4 of 4] Updated OpenSSL and zlib used for win32 builds In-Reply-To: References: Message-ID: <0d9e536ec6283b25b8bf.1708301050@vm-bsd.mdounin.ru> # HG changeset patch # User Sergey Kandaurov # Date 1707911742 -14400 # Wed Feb 14 15:55:42 2024 +0400 # Node ID 0d9e536ec6283b25b8bfb5b64bcb9ffe91de5557 # Parent 4ed4e1e7f115cd48ee891d7cae172d5745e38e00 Updated OpenSSL and zlib used for win32 builds. diff --git a/misc/GNUmakefile b/misc/GNUmakefile --- a/misc/GNUmakefile +++ b/misc/GNUmakefile @@ -6,8 +6,8 @@ TEMP = tmp CC = cl OBJS = objs.msvc8 -OPENSSL = openssl-3.0.11 -ZLIB = zlib-1.3 +OPENSSL = openssl-3.0.13 +ZLIB = zlib-1.3.1 PCRE = pcre2-10.39 From mdounin at mdounin.ru Mon Feb 19 13:46:45 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 16:46:45 +0300 Subject: [PATCH 0 of 5] name changes Message-ID: Hello! The following patch series changes the name to "freenginx" in some places, notably domain name in links, server identification as returned in the Server response header, the version number as shown in "nginx -v", in CHANGES for upcoming versions, and the name of release tarballs (and win32 zip files). The binary file name, configuration file name, and so on are preserved as is, so the result can be used as a drop-in replacement for the existing installations. Review / comments appreciated. -- Maxim Dounin From mdounin at mdounin.ru Mon Feb 19 13:46:46 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 16:46:46 +0300 Subject: [PATCH 1 of 5] Free nginx: changed domain to freenginx.org In-Reply-To: References: Message-ID: <985b0bda403cd49580dc.1708350406@vm-bsd.mdounin.ru> # HG changeset patch # User Maxim Dounin # Date 1708301479 -10800 # Mon Feb 19 03:11:19 2024 +0300 # Node ID 985b0bda403cd49580dc6bf080868f04b0ff0849 # Parent 0d9e536ec6283b25b8bfb5b64bcb9ffe91de5557 Free nginx: changed domain to freenginx.org. diff --git a/docs/html/index.html b/docs/html/index.html --- a/docs/html/index.html +++ b/docs/html/index.html @@ -14,9 +14,7 @@ font-family: Tahoma, Verdana, Arial, san working. Further configuration is required.

For online documentation and support please refer to -nginx.org.
-Commercial support is available at -nginx.com.

+freenginx.org.

Thank you for using nginx.

diff --git a/docs/man/nginx.8 b/docs/man/nginx.8 --- a/docs/man/nginx.8 +++ b/docs/man/nginx.8 @@ -195,10 +195,10 @@ nginx -t -c ~/mynginx.conf \e .\"Xr nginx.conf 5 .\"Pp Documentation at -.Pa http://nginx.org/en/docs/ . +.Pa http://freenginx.org/en/docs/ . .Pp For questions and technical support, please refer to -.Pa http://nginx.org/en/support.html . +.Pa http://freenginx.org/en/support.html . .Sh HISTORY Development of .Nm diff --git a/docs/text/README b/docs/text/README --- a/docs/text/README +++ b/docs/text/README @@ -1,3 +1,3 @@ -Documentation is available at http://nginx.org +Documentation is available at http://freenginx.org diff --git a/misc/README b/misc/README --- a/misc/README +++ b/misc/README @@ -3,7 +3,7 @@ make -f misc/GNUmakefile release the required tools: *) xsltproc to build CHANGES, -*) xslscript.pl ( http://hg.nginx.org/xslscript ) to build XSLTs +*) xslscript.pl ( http://freenginx.org/hg/xslscript ) to build XSLTs from XSLScript sources. diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm --- a/src/http/modules/perl/nginx.pm +++ b/src/http/modules/perl/nginx.pm @@ -125,7 +125,7 @@ This module provides a Perl interface to =head1 SEE ALSO -http://nginx.org/en/docs/http/ngx_http_perl_module.html +http://freenginx.org/en/docs/http/ngx_http_perl_module.html =head1 AUTHOR From mdounin at mdounin.ru Mon Feb 19 13:46:47 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 16:46:47 +0300 Subject: [PATCH 2 of 5] Free nginx: changed server name In-Reply-To: References: Message-ID: <23f109f0faccc22772d3.1708350407@vm-bsd.mdounin.ru> # HG changeset patch # User Maxim Dounin # Date 1708301526 -10800 # Mon Feb 19 03:12:06 2024 +0300 # Node ID 23f109f0faccc22772d3bb939ad8d3f23c603194 # Parent 985b0bda403cd49580dc6bf080868f04b0ff0849 Free nginx: changed server name. diff --git a/src/core/nginx.h b/src/core/nginx.h --- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -11,7 +11,9 @@ #define nginx_version 1025004 #define NGINX_VERSION "1.25.4" -#define NGINX_VER "nginx/" NGINX_VERSION + +#define NGINX_NAME "freenginx" +#define NGINX_VER NGINX_NAME "/" NGINX_VERSION #ifdef NGX_BUILD #define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")" diff --git a/src/http/v2/ngx_http_v2_filter_module.c b/src/http/v2/ngx_http_v2_filter_module.c --- a/src/http/v2/ngx_http_v2_filter_module.c +++ b/src/http/v2/ngx_http_v2_filter_module.c @@ -115,12 +115,14 @@ ngx_http_v2_header_filter(ngx_http_reque ngx_http_core_srv_conf_t *cscf; u_char addr[NGX_SOCKADDR_STRLEN]; - static const u_char nginx[5] = "\x84\xaa\x63\x55\xe7"; #if (NGX_HTTP_GZIP) static const u_char accept_encoding[12] = "\x8b\x84\x84\x2d\x69\x5b\x05\x44\x3c\x86\xaa\x6f"; #endif + static size_t nginx_name_len = ngx_http_v2_literal_size(NGINX_NAME); + static u_char nginx_name[ngx_http_v2_literal_size(NGINX_VER)]; + static size_t nginx_ver_len = ngx_http_v2_literal_size(NGINX_VER); static u_char nginx_ver[ngx_http_v2_literal_size(NGINX_VER)]; @@ -226,7 +228,7 @@ ngx_http_v2_header_filter(ngx_http_reque len += 1 + nginx_ver_build_len; } else { - len += 1 + sizeof(nginx); + len += 1 + nginx_name_len; } } @@ -434,8 +436,9 @@ ngx_http_v2_header_filter(ngx_http_reque NGINX_VER_BUILD); } else { - ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, - "http2 output header: \"server: nginx\""); + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"server: %s\"", + NGINX_NAME); } *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_SERVER_INDEX); @@ -460,7 +463,13 @@ ngx_http_v2_header_filter(ngx_http_reque pos = ngx_cpymem(pos, nginx_ver_build, nginx_ver_build_len); } else { - pos = ngx_cpymem(pos, nginx, sizeof(nginx)); + if (nginx_name[0] == '\0') { + p = ngx_http_v2_write_value(nginx_name, (u_char *) NGINX_NAME, + sizeof(NGINX_NAME) - 1, tmp); + nginx_name_len = p - nginx_name; + } + + pos = ngx_cpymem(pos, nginx_name, nginx_name_len); } } diff --git a/src/http/v3/ngx_http_v3_filter_module.c b/src/http/v3/ngx_http_v3_filter_module.c --- a/src/http/v3/ngx_http_v3_filter_module.c +++ b/src/http/v3/ngx_http_v3_filter_module.c @@ -166,7 +166,7 @@ ngx_http_v3_header_filter(ngx_http_reque n = sizeof(NGINX_VER_BUILD) - 1; } else { - n = sizeof("nginx") - 1; + n = sizeof(NGINX_NAME) - 1; } len += ngx_http_v3_encode_field_lri(NULL, 0, @@ -349,8 +349,8 @@ ngx_http_v3_header_filter(ngx_http_reque n = sizeof(NGINX_VER_BUILD) - 1; } else { - p = (u_char *) "nginx"; - n = sizeof("nginx") - 1; + p = (u_char *) NGINX_NAME; + n = sizeof(NGINX_NAME) - 1; } ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, From mdounin at mdounin.ru Mon Feb 19 13:46:48 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 16:46:48 +0300 Subject: [PATCH 3 of 5] Free nginx: release process adjusted In-Reply-To: References: Message-ID: <1bc938b270dcc6f09998.1708350408@vm-bsd.mdounin.ru> # HG changeset patch # User Maxim Dounin # Date 1708301572 -10800 # Mon Feb 19 03:12:52 2024 +0300 # Node ID 1bc938b270dcc6f09998bac8f99191fcaf10f4d8 # Parent 23f109f0faccc22772d3bb939ad8d3f23c603194 Free nginx: release process adjusted. diff --git a/docs/GNUmakefile b/docs/GNUmakefile --- a/docs/GNUmakefile +++ b/docs/GNUmakefile @@ -1,7 +1,7 @@ VER= $(shell grep 'define NGINX_VERSION' src/core/nginx.h \ | sed -e 's/^.*"\(.*\)".*/\1/') -NGINX= nginx-$(VER) +NGINX= freenginx-$(VER) TEMP= tmp XSLS?= xslscript.pl diff --git a/misc/GNUmakefile b/misc/GNUmakefile --- a/misc/GNUmakefile +++ b/misc/GNUmakefile @@ -1,7 +1,7 @@ VER = $(shell grep 'define NGINX_VERSION' src/core/nginx.h \ | sed -e 's/^.*"\(.*\)".*/\1/') -NGINX = nginx-$(VER) +NGINX = freenginx-$(VER) TEMP = tmp CC = cl @@ -34,7 +34,7 @@ export: RELEASE: - hg ci -m nginx-$(VER)-RELEASE + hg ci -m freenginx-$(VER)-RELEASE hg tag -m "release-$(VER) tag" release-$(VER) $(MAKE) -f misc/GNUmakefile release From mdounin at mdounin.ru Mon Feb 19 13:46:49 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 16:46:49 +0300 Subject: [PATCH 4 of 5] Free nginx: support for sections in CHANGES In-Reply-To: References: Message-ID: # HG changeset patch # User Maxim Dounin # Date 1708301598 -10800 # Mon Feb 19 03:13:18 2024 +0300 # Node ID e79c7521aaf4dfef1febc52b9deb95a4b6bd87b0 # Parent 1bc938b270dcc6f09998bac8f99191fcaf10f4d8 Free nginx: support for sections in CHANGES. diff --git a/docs/dtd/changes.dtd b/docs/dtd/changes.dtd --- a/docs/dtd/changes.dtd +++ b/docs/dtd/changes.dtd @@ -3,8 +3,10 @@ - - + + + + - + + +
+ + +
+ +
@@ -30074,4 +30081,6 @@ The first public version. +
+
diff --git a/docs/xsls/changes.xsls b/docs/xsls/changes.xsls --- a/docs/xsls/changes.xsls +++ b/docs/xsls/changes.xsls @@ -13,14 +13,15 @@ X:var br = {<br>} X:template = "/" { !! "change_log"; } -X:template = "change_log" { !! "changes"; } +X:template = "change_log" { !! "section"; } +X:template = "section" { !! "changes"; } X:template = "changes" { X:text { } !{substring(concat($conf/changes[@lang=$lang]/title, - //change_log/@title, + ../@title, ' ', @ver, ' '), 1, $conf/changes[@lang=$lang]/length)} From mdounin at mdounin.ru Mon Feb 19 13:46:50 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Mon, 19 Feb 2024 16:46:50 +0300 Subject: [PATCH 5 of 5] Free nginx: regenerated changes.xslt after previous commit In-Reply-To: References: Message-ID: # HG changeset patch # User Maxim Dounin # Date 1708301622 -10800 # Mon Feb 19 03:13:42 2024 +0300 # Node ID de20142f5046fe3a167aa4e9edfd6bd76cbc25ce # Parent e79c7521aaf4dfef1febc52b9deb95a4b6bd87b0 Free nginx: regenerated changes.xslt after previous commit. diff --git a/docs/xslt/changes.xslt b/docs/xslt/changes.xslt --- a/docs/xslt/changes.xslt +++ b/docs/xslt/changes.xslt @@ -14,14 +14,15 @@ - + + From mdounin at mdounin.ru Mon Feb 19 22:26:17 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 01:26:17 +0300 Subject: [PATCH 0 of 1] X-Accel-Redirect handling patch Message-ID: Hello! The following patch fixes X-Accel-Redirect handling from cached files, as reported by Ji?? Setni?ka. The patch was reviewed by Jan Pracha? on the nginx-devel at nginx.org mailing list. -- Maxim Dounin From mdounin at mdounin.ru Mon Feb 19 22:26:18 2024 From: mdounin at mdounin.ru (=?utf-8?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 01:26:18 +0300 Subject: [PATCH 1 of 1] Upstream: fixed X-Accel-Redirect handling from cache files In-Reply-To: References: Message-ID: <6765e5f6d991fed2d287.1708381578@vm-bsd.mdounin.ru> # HG changeset patch # User Maxim Dounin # Date 1708381423 -10800 # Tue Feb 20 01:23:43 2024 +0300 # Node ID 6765e5f6d991fed2d287d87dd8d849f456ad381e # Parent de20142f5046fe3a167aa4e9edfd6bd76cbc25ce Upstream: fixed X-Accel-Redirect handling from cache files. The X-Accel-Redirect header might appear in cache files if its handling is ignored with the "proxy_ignore_headers" directive. If the cache file is later served with different settings, ngx_http_upstream_process_headers() used to call ngx_http_upstream_finalize_request(NGX_DECLINED), which is not expected to happen before the cleanup handler is installed and resulted in ngx_http_finalize_request(NGX_DONE) (after 5994:5abf5af257a7, nginx 1.7.11), leading to unexpected request counter decrement, "request count is zero" alerts, and segmentation faults. Similarly, errors in ngx_http_upstream_process_headers() resulted in ngx_http_upstream_finalize_request(NGX_HTTP_INTERNAL_SERVER_ERROR) being called. This is also not expected to happen before the cleanup handler is installed, and resulted in ngx_http_finalize_request(NGX_DONE) without proper request finalization. Fix is to avoid calling ngx_http_upstream_finalize_request() from ngx_http_upstream_process_headers(), notably when the cleanup handler is not yet installed. Errors are now simply return NGX_ERROR, so the caller is responsible for proper finalization by calling either ngx_http_finalize_request() or ngx_http_upstream_finalize_request(). And X-Accel-Redirect handling now does not call ngx_http_upstream_finalize_request(NGX_DECLINED) if no cleanup handler is installed. Reported by Ji?? Setni?ka (https://mailman.nginx.org/pipermail/nginx-devel/2024-February/HWLYHOO3DDB3XTFT6X3GRMXIEJ3SJRUA.html). diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1087,8 +1087,10 @@ ngx_http_upstream_cache_send(ngx_http_re if (rc == NGX_OK) { - if (ngx_http_upstream_process_headers(r, u) != NGX_OK) { - return NGX_DONE; + rc = ngx_http_upstream_process_headers(r, u); + + if (rc != NGX_OK) { + return rc; } return ngx_http_cache_send(r); @@ -2516,7 +2518,14 @@ ngx_http_upstream_process_header(ngx_htt } } - if (ngx_http_upstream_process_headers(r, u) != NGX_OK) { + rc = ngx_http_upstream_process_headers(r, u); + + if (rc == NGX_DONE) { + return; + } + + if (rc == NGX_ERROR) { + ngx_http_upstream_finalize_request(r, u, NGX_ERROR); return; } @@ -2829,7 +2838,9 @@ ngx_http_upstream_process_headers(ngx_ht if (u->headers_in.x_accel_redirect && !(u->conf->ignore_headers & NGX_HTTP_UPSTREAM_IGN_XA_REDIRECT)) { - ngx_http_upstream_finalize_request(r, u, NGX_DECLINED); + if (u->cleanup) { + ngx_http_upstream_finalize_request(r, u, NGX_DECLINED); + } part = &u->headers_in.headers.part; h = part->elts; @@ -2918,18 +2929,14 @@ ngx_http_upstream_process_headers(ngx_ht if (hh) { if (hh->copy_handler(r, &h[i], hh->conf) != NGX_OK) { - ngx_http_upstream_finalize_request(r, u, - NGX_HTTP_INTERNAL_SERVER_ERROR); - return NGX_DONE; + return NGX_ERROR; } continue; } if (ngx_http_upstream_copy_header_line(r, &h[i], 0) != NGX_OK) { - ngx_http_upstream_finalize_request(r, u, - NGX_HTTP_INTERNAL_SERVER_ERROR); - return NGX_DONE; + return NGX_ERROR; } } From mdounin at mdounin.ru Tue Feb 20 14:07:08 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:07:08 +0300 Subject: [nginx] QUIC: fixed unsent MTU probe acknowledgement. Message-ID: details: http://freenginx.org/hg/nginx/rev/2ed3f57dca0a branches: changeset: 9208:2ed3f57dca0a user: Roman Arutyunyan date: Wed Feb 14 16:56:28 2024 +0400 description: QUIC: fixed unsent MTU probe acknowledgement. Previously if an MTU probe send failed early in ngx_quic_frame_sendto() due to allocation error or congestion control, the application level packet number was not increased, but was still saved as MTU probe packet number. Later when a packet with this number was acknowledged, the unsent MTU probe was acknowledged as well. This could result in discovering a bigger MTU than supported by the path, which could lead to EMSGSIZE (Message too long) errors while sending further packets. The problem existed since PMTUD was introduced in 58afcd72446f (1.25.2). Back then only the unlikely memory allocation error could trigger it. However in efcdaa66df2e congestion control was added to ngx_quic_frame_sendto() which can now trigger the issue with a higher probability. diffstat: src/event/quic/ngx_event_quic_migration.c | 19 ++++++++++++------- 1 files changed, 12 insertions(+), 7 deletions(-) diffs (53 lines): diff --git a/src/event/quic/ngx_event_quic_migration.c b/src/event/quic/ngx_event_quic_migration.c --- a/src/event/quic/ngx_event_quic_migration.c +++ b/src/event/quic/ngx_event_quic_migration.c @@ -909,6 +909,7 @@ static ngx_int_t ngx_quic_send_path_mtu_probe(ngx_connection_t *c, ngx_quic_path_t *path) { size_t mtu; + uint64_t pnum; ngx_int_t rc; ngx_uint_t log_error; ngx_quic_frame_t *frame; @@ -925,7 +926,7 @@ ngx_quic_send_path_mtu_probe(ngx_connect qc = ngx_quic_get_connection(c); ctx = ngx_quic_get_send_ctx(qc, ssl_encryption_application); - path->mtu_pnum[path->tries] = ctx->pnum; + pnum = ctx->pnum; ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, "quic path seq:%uL send probe " @@ -943,14 +944,18 @@ ngx_quic_send_path_mtu_probe(ngx_connect path->mtu = mtu; c->log_error = log_error; + if (rc == NGX_OK) { + path->mtu_pnum[path->tries] = pnum; + return NGX_OK; + } + + ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, + "quic path seq:%uL rejected mtu:%uz", + path->seqnum, path->mtud); + if (rc == NGX_ERROR) { if (c->write->error) { c->write->error = 0; - - ngx_log_debug2(NGX_LOG_DEBUG_EVENT, c->log, 0, - "quic path seq:%uL rejected mtu:%uz", - path->seqnum, path->mtud); - return NGX_DECLINED; } @@ -976,7 +981,7 @@ ngx_quic_handle_path_mtu(ngx_connection_ pnum = path->mtu_pnum[i]; if (pnum == NGX_QUIC_UNSET_PN) { - break; + continue; } if (pnum < min || pnum > max) { From mdounin at mdounin.ru Tue Feb 20 14:07:34 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:07:34 +0300 Subject: [nginx] QUIC: trial packet decryption in response to invalid key... Message-ID: details: http://freenginx.org/hg/nginx/rev/1bf1b423f268 branches: changeset: 9209:1bf1b423f268 user: Sergey Kandaurov date: Wed Feb 14 15:55:34 2024 +0400 description: QUIC: trial packet decryption in response to invalid key update. Inspired by RFC 9001, Section 6.3, trial packet decryption with the current keys is now used to avoid a timing side-channel signal. Further, this fixes segfault while accessing missing next keys (ticket #2585). diffstat: src/event/quic/ngx_event_quic_protection.c | 15 +++++++++++++-- 1 files changed, 13 insertions(+), 2 deletions(-) diffs (25 lines): diff --git a/src/event/quic/ngx_event_quic_protection.c b/src/event/quic/ngx_event_quic_protection.c --- a/src/event/quic/ngx_event_quic_protection.c +++ b/src/event/quic/ngx_event_quic_protection.c @@ -1144,8 +1144,19 @@ ngx_quic_decrypt(ngx_quic_header_t *pkt, key_phase = (pkt->flags & NGX_QUIC_PKT_KPHASE) != 0; if (key_phase != pkt->key_phase) { - secret = &pkt->keys->next_key.client; - pkt->key_update = 1; + if (pkt->keys->next_key.client.ctx != NULL) { + secret = &pkt->keys->next_key.client; + pkt->key_update = 1; + + } else { + /* + * RFC 9001, 6.3. Timing of Receive Key Generation. + * + * Trial decryption to avoid timing side-channel. + */ + ngx_log_debug0(NGX_LOG_DEBUG_EVENT, pkt->log, 0, + "quic next key missing"); + } } } From mdounin at mdounin.ru Tue Feb 20 14:07:34 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:07:34 +0300 Subject: [nginx] QUIC: fixed stream cleanup (ticket #2586). Message-ID: details: http://freenginx.org/hg/nginx/rev/4ed4e1e7f115 branches: changeset: 9210:4ed4e1e7f115 user: Roman Arutyunyan date: Wed Feb 14 15:55:37 2024 +0400 description: QUIC: fixed stream cleanup (ticket #2586). Stream connection cleanup handler ngx_quic_stream_cleanup_handler() calls ngx_quic_shutdown_stream() after which it resets the pointer from quic stream to the connection (sc->connection = NULL). Previously if this call failed, sc->connection retained the old value, while the connection was freed by the application code. This resulted later in a second attempt to close the freed connection, which lead to allocator double free error. The fix is to reset the sc->connection pointer in case of error. diffstat: src/event/quic/ngx_event_quic_streams.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (11 lines): diff --git a/src/event/quic/ngx_event_quic_streams.c b/src/event/quic/ngx_event_quic_streams.c --- a/src/event/quic/ngx_event_quic_streams.c +++ b/src/event/quic/ngx_event_quic_streams.c @@ -1097,6 +1097,7 @@ ngx_quic_stream_cleanup_handler(void *da "quic stream id:0x%xL cleanup", qs->id); if (ngx_quic_shutdown_stream(c, NGX_RDWR_SHUTDOWN) != NGX_OK) { + qs->connection = NULL; goto failed; } From mdounin at mdounin.ru Tue Feb 20 14:07:34 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:07:34 +0300 Subject: [nginx] Updated OpenSSL and zlib used for win32 builds. Message-ID: details: http://freenginx.org/hg/nginx/rev/0d9e536ec628 branches: changeset: 9211:0d9e536ec628 user: Sergey Kandaurov date: Wed Feb 14 15:55:42 2024 +0400 description: Updated OpenSSL and zlib used for win32 builds. diffstat: misc/GNUmakefile | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diffs (14 lines): diff --git a/misc/GNUmakefile b/misc/GNUmakefile --- a/misc/GNUmakefile +++ b/misc/GNUmakefile @@ -6,8 +6,8 @@ TEMP = tmp CC = cl OBJS = objs.msvc8 -OPENSSL = openssl-3.0.11 -ZLIB = zlib-1.3 +OPENSSL = openssl-3.0.13 +ZLIB = zlib-1.3.1 PCRE = pcre2-10.39 From mdounin at mdounin.ru Tue Feb 20 14:09:09 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:09:09 +0300 Subject: [nginx] Free nginx: changed domain to freenginx.org. Message-ID: details: http://freenginx.org/hg/nginx/rev/985b0bda403c branches: changeset: 9212:985b0bda403c user: Maxim Dounin date: Mon Feb 19 03:11:19 2024 +0300 description: Free nginx: changed domain to freenginx.org. diffstat: docs/html/index.html | 4 +--- docs/man/nginx.8 | 4 ++-- docs/text/README | 2 +- misc/README | 2 +- src/http/modules/perl/nginx.pm | 2 +- 5 files changed, 6 insertions(+), 8 deletions(-) diffs (62 lines): diff --git a/docs/html/index.html b/docs/html/index.html --- a/docs/html/index.html +++ b/docs/html/index.html @@ -14,9 +14,7 @@ font-family: Tahoma, Verdana, Arial, san working. Further configuration is required.

For online documentation and support please refer to -nginx.org.
-Commercial support is available at -nginx.com.

+freenginx.org.

Thank you for using nginx.

diff --git a/docs/man/nginx.8 b/docs/man/nginx.8 --- a/docs/man/nginx.8 +++ b/docs/man/nginx.8 @@ -195,10 +195,10 @@ nginx -t -c ~/mynginx.conf \e .\"Xr nginx.conf 5 .\"Pp Documentation at -.Pa http://nginx.org/en/docs/ . +.Pa http://freenginx.org/en/docs/ . .Pp For questions and technical support, please refer to -.Pa http://nginx.org/en/support.html . +.Pa http://freenginx.org/en/support.html . .Sh HISTORY Development of .Nm diff --git a/docs/text/README b/docs/text/README --- a/docs/text/README +++ b/docs/text/README @@ -1,3 +1,3 @@ -Documentation is available at http://nginx.org +Documentation is available at http://freenginx.org diff --git a/misc/README b/misc/README --- a/misc/README +++ b/misc/README @@ -3,7 +3,7 @@ make -f misc/GNUmakefile release the required tools: *) xsltproc to build CHANGES, -*) xslscript.pl ( http://hg.nginx.org/xslscript ) to build XSLTs +*) xslscript.pl ( http://freenginx.org/hg/xslscript ) to build XSLTs from XSLScript sources. diff --git a/src/http/modules/perl/nginx.pm b/src/http/modules/perl/nginx.pm --- a/src/http/modules/perl/nginx.pm +++ b/src/http/modules/perl/nginx.pm @@ -125,7 +125,7 @@ This module provides a Perl interface to =head1 SEE ALSO -http://nginx.org/en/docs/http/ngx_http_perl_module.html +http://freenginx.org/en/docs/http/ngx_http_perl_module.html =head1 AUTHOR From mdounin at mdounin.ru Tue Feb 20 14:09:09 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:09:09 +0300 Subject: [nginx] Free nginx: changed server name. Message-ID: details: http://freenginx.org/hg/nginx/rev/23f109f0facc branches: changeset: 9213:23f109f0facc user: Maxim Dounin date: Mon Feb 19 03:12:06 2024 +0300 description: Free nginx: changed server name. diffstat: src/core/nginx.h | 4 +++- src/http/v2/ngx_http_v2_filter_module.c | 19 ++++++++++++++----- src/http/v3/ngx_http_v3_filter_module.c | 6 +++--- 3 files changed, 20 insertions(+), 9 deletions(-) diffs (92 lines): diff --git a/src/core/nginx.h b/src/core/nginx.h --- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -11,7 +11,9 @@ #define nginx_version 1025004 #define NGINX_VERSION "1.25.4" -#define NGINX_VER "nginx/" NGINX_VERSION + +#define NGINX_NAME "freenginx" +#define NGINX_VER NGINX_NAME "/" NGINX_VERSION #ifdef NGX_BUILD #define NGINX_VER_BUILD NGINX_VER " (" NGX_BUILD ")" diff --git a/src/http/v2/ngx_http_v2_filter_module.c b/src/http/v2/ngx_http_v2_filter_module.c --- a/src/http/v2/ngx_http_v2_filter_module.c +++ b/src/http/v2/ngx_http_v2_filter_module.c @@ -115,12 +115,14 @@ ngx_http_v2_header_filter(ngx_http_reque ngx_http_core_srv_conf_t *cscf; u_char addr[NGX_SOCKADDR_STRLEN]; - static const u_char nginx[5] = "\x84\xaa\x63\x55\xe7"; #if (NGX_HTTP_GZIP) static const u_char accept_encoding[12] = "\x8b\x84\x84\x2d\x69\x5b\x05\x44\x3c\x86\xaa\x6f"; #endif + static size_t nginx_name_len = ngx_http_v2_literal_size(NGINX_NAME); + static u_char nginx_name[ngx_http_v2_literal_size(NGINX_VER)]; + static size_t nginx_ver_len = ngx_http_v2_literal_size(NGINX_VER); static u_char nginx_ver[ngx_http_v2_literal_size(NGINX_VER)]; @@ -226,7 +228,7 @@ ngx_http_v2_header_filter(ngx_http_reque len += 1 + nginx_ver_build_len; } else { - len += 1 + sizeof(nginx); + len += 1 + nginx_name_len; } } @@ -434,8 +436,9 @@ ngx_http_v2_header_filter(ngx_http_reque NGINX_VER_BUILD); } else { - ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0, - "http2 output header: \"server: nginx\""); + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, fc->log, 0, + "http2 output header: \"server: %s\"", + NGINX_NAME); } *pos++ = ngx_http_v2_inc_indexed(NGX_HTTP_V2_SERVER_INDEX); @@ -460,7 +463,13 @@ ngx_http_v2_header_filter(ngx_http_reque pos = ngx_cpymem(pos, nginx_ver_build, nginx_ver_build_len); } else { - pos = ngx_cpymem(pos, nginx, sizeof(nginx)); + if (nginx_name[0] == '\0') { + p = ngx_http_v2_write_value(nginx_name, (u_char *) NGINX_NAME, + sizeof(NGINX_NAME) - 1, tmp); + nginx_name_len = p - nginx_name; + } + + pos = ngx_cpymem(pos, nginx_name, nginx_name_len); } } diff --git a/src/http/v3/ngx_http_v3_filter_module.c b/src/http/v3/ngx_http_v3_filter_module.c --- a/src/http/v3/ngx_http_v3_filter_module.c +++ b/src/http/v3/ngx_http_v3_filter_module.c @@ -166,7 +166,7 @@ ngx_http_v3_header_filter(ngx_http_reque n = sizeof(NGINX_VER_BUILD) - 1; } else { - n = sizeof("nginx") - 1; + n = sizeof(NGINX_NAME) - 1; } len += ngx_http_v3_encode_field_lri(NULL, 0, @@ -349,8 +349,8 @@ ngx_http_v3_header_filter(ngx_http_reque n = sizeof(NGINX_VER_BUILD) - 1; } else { - p = (u_char *) "nginx"; - n = sizeof("nginx") - 1; + p = (u_char *) NGINX_NAME; + n = sizeof(NGINX_NAME) - 1; } ngx_log_debug2(NGX_LOG_DEBUG_HTTP, c->log, 0, From mdounin at mdounin.ru Tue Feb 20 14:09:09 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:09:09 +0300 Subject: [nginx] Free nginx: release process adjusted. Message-ID: details: http://freenginx.org/hg/nginx/rev/1bc938b270dc branches: changeset: 9214:1bc938b270dc user: Maxim Dounin date: Mon Feb 19 03:12:52 2024 +0300 description: Free nginx: release process adjusted. diffstat: docs/GNUmakefile | 2 +- misc/GNUmakefile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diffs (33 lines): diff --git a/docs/GNUmakefile b/docs/GNUmakefile --- a/docs/GNUmakefile +++ b/docs/GNUmakefile @@ -1,7 +1,7 @@ VER= $(shell grep 'define NGINX_VERSION' src/core/nginx.h \ | sed -e 's/^.*"\(.*\)".*/\1/') -NGINX= nginx-$(VER) +NGINX= freenginx-$(VER) TEMP= tmp XSLS?= xslscript.pl diff --git a/misc/GNUmakefile b/misc/GNUmakefile --- a/misc/GNUmakefile +++ b/misc/GNUmakefile @@ -1,7 +1,7 @@ VER = $(shell grep 'define NGINX_VERSION' src/core/nginx.h \ | sed -e 's/^.*"\(.*\)".*/\1/') -NGINX = nginx-$(VER) +NGINX = freenginx-$(VER) TEMP = tmp CC = cl @@ -34,7 +34,7 @@ export: RELEASE: - hg ci -m nginx-$(VER)-RELEASE + hg ci -m freenginx-$(VER)-RELEASE hg tag -m "release-$(VER) tag" release-$(VER) $(MAKE) -f misc/GNUmakefile release From mdounin at mdounin.ru Tue Feb 20 14:09:09 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:09:09 +0300 Subject: [nginx] Free nginx: support for sections in CHANGES. Message-ID: details: http://freenginx.org/hg/nginx/rev/e79c7521aaf4 branches: changeset: 9215:e79c7521aaf4 user: Maxim Dounin date: Mon Feb 19 03:13:18 2024 +0300 description: Free nginx: support for sections in CHANGES. diffstat: docs/dtd/changes.dtd | 6 ++++-- docs/xml/nginx/changes.xml | 11 ++++++++++- docs/xsls/changes.xsls | 5 +++-- 3 files changed, 17 insertions(+), 5 deletions(-) diffs (63 lines): diff --git a/docs/dtd/changes.dtd b/docs/dtd/changes.dtd --- a/docs/dtd/changes.dtd +++ b/docs/dtd/changes.dtd @@ -3,8 +3,10 @@ - - + + + + - + + +
+ + +
+ +
@@ -30074,4 +30081,6 @@ The first public version. +
+
diff --git a/docs/xsls/changes.xsls b/docs/xsls/changes.xsls --- a/docs/xsls/changes.xsls +++ b/docs/xsls/changes.xsls @@ -13,14 +13,15 @@ X:var br = {<br>} X:template = "/" { !! "change_log"; } -X:template = "change_log" { !! "changes"; } +X:template = "change_log" { !! "section"; } +X:template = "section" { !! "changes"; } X:template = "changes" { X:text { } !{substring(concat($conf/changes[@lang=$lang]/title, - //change_log/@title, + ../@title, ' ', @ver, ' '), 1, $conf/changes[@lang=$lang]/length)} From mdounin at mdounin.ru Tue Feb 20 14:09:09 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:09:09 +0300 Subject: [nginx] Free nginx: regenerated changes.xslt after previous commit. Message-ID: details: http://freenginx.org/hg/nginx/rev/de20142f5046 branches: changeset: 9216:de20142f5046 user: Maxim Dounin date: Mon Feb 19 03:13:42 2024 +0300 description: Free nginx: regenerated changes.xslt after previous commit. diffstat: docs/xslt/changes.xslt | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diffs (21 lines): diff --git a/docs/xslt/changes.xslt b/docs/xslt/changes.xslt --- a/docs/xslt/changes.xslt +++ b/docs/xslt/changes.xslt @@ -14,14 +14,15 @@ - + + From mdounin at mdounin.ru Tue Feb 20 14:19:01 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:19:01 +0300 Subject: [nginx-tests] Tests: improved version detection to accept altern... Message-ID: details: http://freenginx.org/hg/nginx-tests/rev/1d980c5013dc branches: changeset: 1947:1d980c5013dc user: Maxim Dounin date: Thu Feb 15 23:34:22 2024 +0300 description: Tests: improved version detection to accept alternative names. diffstat: lib/Test/Nginx.pm | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff --git a/lib/Test/Nginx.pm b/lib/Test/Nginx.pm --- a/lib/Test/Nginx.pm +++ b/lib/Test/Nginx.pm @@ -306,7 +306,7 @@ sub has_version($) { $self->{_configure_args} = `$NGINX -V 2>&1` if !defined $self->{_configure_args}; - $self->{_configure_args} =~ m!nginx version: nginx/([0-9.]+)!; + $self->{_configure_args} =~ m!nginx version: \w+/([0-9.]+)!; my @v = split(/\./, $1); my ($n, $v); From mdounin at mdounin.ru Tue Feb 20 14:30:55 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 17:30:55 +0300 Subject: [nginx] Upstream: fixed X-Accel-Redirect handling from cache files. Message-ID: details: http://freenginx.org/hg/nginx/rev/6765e5f6d991 branches: changeset: 9217:6765e5f6d991 user: Maxim Dounin date: Tue Feb 20 01:23:43 2024 +0300 description: Upstream: fixed X-Accel-Redirect handling from cache files. The X-Accel-Redirect header might appear in cache files if its handling is ignored with the "proxy_ignore_headers" directive. If the cache file is later served with different settings, ngx_http_upstream_process_headers() used to call ngx_http_upstream_finalize_request(NGX_DECLINED), which is not expected to happen before the cleanup handler is installed and resulted in ngx_http_finalize_request(NGX_DONE) (after 5994:5abf5af257a7, nginx 1.7.11), leading to unexpected request counter decrement, "request count is zero" alerts, and segmentation faults. Similarly, errors in ngx_http_upstream_process_headers() resulted in ngx_http_upstream_finalize_request(NGX_HTTP_INTERNAL_SERVER_ERROR) being called. This is also not expected to happen before the cleanup handler is installed, and resulted in ngx_http_finalize_request(NGX_DONE) without proper request finalization. Fix is to avoid calling ngx_http_upstream_finalize_request() from ngx_http_upstream_process_headers(), notably when the cleanup handler is not yet installed. Errors are now simply return NGX_ERROR, so the caller is responsible for proper finalization by calling either ngx_http_finalize_request() or ngx_http_upstream_finalize_request(). And X-Accel-Redirect handling now does not call ngx_http_upstream_finalize_request(NGX_DECLINED) if no cleanup handler is installed. Reported by Ji?? Setni?ka (https://mailman.nginx.org/pipermail/nginx-devel/2024-February/HWLYHOO3DDB3XTFT6X3GRMXIEJ3SJRUA.html). diffstat: src/http/ngx_http_upstream.c | 27 +++++++++++++++++---------- 1 files changed, 17 insertions(+), 10 deletions(-) diffs (64 lines): diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1087,8 +1087,10 @@ ngx_http_upstream_cache_send(ngx_http_re if (rc == NGX_OK) { - if (ngx_http_upstream_process_headers(r, u) != NGX_OK) { - return NGX_DONE; + rc = ngx_http_upstream_process_headers(r, u); + + if (rc != NGX_OK) { + return rc; } return ngx_http_cache_send(r); @@ -2516,7 +2518,14 @@ ngx_http_upstream_process_header(ngx_htt } } - if (ngx_http_upstream_process_headers(r, u) != NGX_OK) { + rc = ngx_http_upstream_process_headers(r, u); + + if (rc == NGX_DONE) { + return; + } + + if (rc == NGX_ERROR) { + ngx_http_upstream_finalize_request(r, u, NGX_ERROR); return; } @@ -2829,7 +2838,9 @@ ngx_http_upstream_process_headers(ngx_ht if (u->headers_in.x_accel_redirect && !(u->conf->ignore_headers & NGX_HTTP_UPSTREAM_IGN_XA_REDIRECT)) { - ngx_http_upstream_finalize_request(r, u, NGX_DECLINED); + if (u->cleanup) { + ngx_http_upstream_finalize_request(r, u, NGX_DECLINED); + } part = &u->headers_in.headers.part; h = part->elts; @@ -2918,18 +2929,14 @@ ngx_http_upstream_process_headers(ngx_ht if (hh) { if (hh->copy_handler(r, &h[i], hh->conf) != NGX_OK) { - ngx_http_upstream_finalize_request(r, u, - NGX_HTTP_INTERNAL_SERVER_ERROR); - return NGX_DONE; + return NGX_ERROR; } continue; } if (ngx_http_upstream_copy_header_line(r, &h[i], 0) != NGX_OK) { - ngx_http_upstream_finalize_request(r, u, - NGX_HTTP_INTERNAL_SERVER_ERROR); - return NGX_DONE; + return NGX_ERROR; } } From mdounin at mdounin.ru Tue Feb 20 15:03:21 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 20 Feb 2024 18:03:21 +0300 Subject: freenginx-1.25.4 changes draft Message-ID: Hello! Changes with freenginx 1.25.4 20 Feb 2024 *) Change: now the "freenginx" name is used in responses. *) Bugfix: "open socket left" alerts might appear in logs during worker processes shutdown when using AIO. *) Bugfix: a segmentation fault might occur in a worker process if AIO was used in subrequests. *) Bugfix: a segmentation fault might occur in a worker process if the "image_filter" directive was used, and errors with code 415 were redirected with the "error_page" directive. *) Bugfix: a segmentation fault might occur in a worker process when handling cached responses with the "X-Accel-Redirect" header. Thanks to Ji?? Setni?ka. *) Bugfix: a segmentation fault might occur in a worker process when using HTTP/3. *) Bugfixes and improvements in HTTP/3. ????????? ? freenginx 1.25.4 20.02.2024 *) ?????????: ?????? ? ??????? ???????????? ??? "freenginx". *) ???????????: ??? ????????????? AIO ?? ????? ?????????? ??????? ????????? ? ????? ????? ?????????? ????????? "open socket left". *) ???????????: ??? ????????????? AIO ? ??????????? ? ??????? ???????? ??? ????????? segmentation fault. *) ???????????: ? ??????? ???????? ??? ????????? segmentation fault, ???? ?????????????? ????????? image_filter, ? ?????? ? ????? 415 ???????????????? ? ??????? ????????? error_page. *) ???????????: ??? ????????? ?????????????? ??????? ? ?????????? X-Accel-Redirect ? ??????? ???????? ??? ????????? segmentation fault. ??????? Ji?? Setni?ka. *) ???????????: ??? ????????????? HTTP/3 ? ??????? ???????? ??? ????????? segmentation fault. *) ??????????? ? ????????? ? HTTP/3. -- Maxim Dounin http://mdounin.ru/ From mdounin at mdounin.ru Tue Feb 20 16:22:34 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 19:22:34 +0300 Subject: [nginx-site] Download page reworked. Message-ID: details: http://freenginx.org/hg/nginx-site/rev/68e8c8dc9489 branches: changeset: 3063:68e8c8dc9489 user: Maxim Dounin date: Tue Feb 20 18:58:32 2024 +0300 description: Download page reworked. For now, freenginx versions need to be explicitly marked with name="freenginx" attribute. Further, only the last mainline version is preserved in listing. diffstat: dtd/versions.dtd | 1 + xml/en/download.xml | 17 +---------------- xsls/download.xsls | 18 +++++++++++------- 3 files changed, 13 insertions(+), 23 deletions(-) diffs (94 lines): diff --git a/dtd/versions.dtd b/dtd/versions.dtd --- a/dtd/versions.dtd +++ b/dtd/versions.dtd @@ -15,4 +15,5 @@ ver CDATA #REQUIRED pgp (yes | no) "yes" win (yes | no) "yes" + name (nginx | freenginx) "nginx" > diff --git a/xml/en/download.xml b/xml/en/download.xml --- a/xml/en/download.xml +++ b/xml/en/download.xml @@ -8,7 +8,7 @@
+ rev="5">
@@ -17,21 +17,6 @@
- -
- - - -
- - -
- - - -
- -
diff --git a/xsls/download.xsls b/xsls/download.xsls --- a/xsls/download.xsls +++ b/xsls/download.xsls @@ -35,19 +35,21 @@ X:template = "download/item" { } - + X:attribute "href" { - X:text {/download/nginx-} !{@ver} X:text {.tar.gz} + X:text {/download/} !{@name} X:text{-} !{@ver} + X:text {.tar.gz} } - X:text {nginx-} !{@ver} + !{@name} X:text{-} !{@ver} X:if "@pgp = 'yes'" { X:text {  } X:attribute "href" { - X:text {/download/nginx-} !{@ver} X:text {.tar.gz.asc} + X:text {/download/} !{@name} X:text{-} !{@ver} + X:text {.tar.gz.asc} } X:text {pgp} @@ -58,16 +60,18 @@ X:template = "download/item" { X:if "@win= 'yes'" { X:attribute "href" { - X:text {/download/nginx-} !{@ver} X:text {.zip} + X:text {/download/} !{@name} X:text{-} !{@ver} + X:text {.zip} } - X:text {nginx/Windows-} !{@ver} + !{@name} X:text {/Windows-} !{@ver} X:if "@pgp = 'yes'" { X:text {  } X:attribute "href" { - X:text {/download/nginx-} !{@ver} X:text {.zip.asc} + X:text {/download/} !{@name} X:text{-} !{@ver} + X:text {.zip.asc} } X:text {pgp} From mdounin at mdounin.ru Tue Feb 20 16:22:34 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 19:22:34 +0300 Subject: [nginx-site] Regenerated. Message-ID: details: http://freenginx.org/hg/nginx-site/rev/3dd688dcbf4e branches: changeset: 3064:3dd688dcbf4e user: Maxim Dounin date: Tue Feb 20 19:00:10 2024 +0300 description: Regenerated. diffstat: xslt/download.xslt | 18 +++++++++++------- 1 files changed, 11 insertions(+), 7 deletions(-) diffs (51 lines): diff --git a/xslt/download.xslt b/xslt/download.xslt --- a/xslt/download.xslt +++ b/xslt/download.xslt @@ -36,19 +36,21 @@ - + - /download/nginx- .tar.gz + /download/ - + .tar.gz - nginx- + -   - /download/nginx- .tar.gz.asc + /download/ - + .tar.gz.asc pgp @@ -59,16 +61,18 @@ - /download/nginx- .zip + /download/ - + .zip - nginx/Windows- + /Windows-   - /download/nginx- .zip.asc + /download/ - + .zip.asc pgp From d at ja.vu Tue Feb 20 16:22:57 2024 From: d at ja.vu (Daniel K.) Date: Tue, 20 Feb 2024 16:22:57 +0000 Subject: [nginx] Free nginx: changed server name. In-Reply-To: References: Message-ID: <78ba04e4-762c-a883-0a3f-9e96e0edd83a@ja.vu> On 2/20/24 14:09, Maxim Dounin wrote: > diff --git a/src/http/v2/ngx_http_v2_filter_module.c b/src/http/v2/ngx_http_v2_filter_module.c > --- a/src/http/v2/ngx_http_v2_filter_module.c > +++ b/src/http/v2/ngx_http_v2_filter_module.c > @@ -115,12 +115,14 @@ ngx_http_v2_header_filter(ngx_http_reque > ngx_http_core_srv_conf_t *cscf; > u_char addr[NGX_SOCKADDR_STRLEN]; > > - static const u_char nginx[5] = "\x84\xaa\x63\x55\xe7"; > #if (NGX_HTTP_GZIP) > static const u_char accept_encoding[12] = > "\x8b\x84\x84\x2d\x69\x5b\x05\x44\x3c\x86\xaa\x6f"; > #endif > > + static size_t nginx_name_len = ngx_http_v2_literal_size(NGINX_NAME); > + static u_char nginx_name[ngx_http_v2_literal_size(NGINX_VER)]; It certainly works, but we could save a few bytes by using NGINX_NAME/NGINX_NAME above... > static size_t nginx_ver_len = ngx_http_v2_literal_size(NGINX_VER); > static u_char nginx_ver[ngx_http_v2_literal_size(NGINX_VER)]; ... just as we have NGINX_VER/NGINX_VER here. Daniel K. From mdounin at mdounin.ru Tue Feb 20 16:32:33 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 19:32:33 +0300 Subject: [nginx] HTTP/2: fixed incorrect name slipped in 9213:23f109f0facc. Message-ID: details: http://freenginx.org/hg/nginx/rev/de4208483315 branches: changeset: 9218:de4208483315 user: Maxim Dounin date: Tue Feb 20 19:28:26 2024 +0300 description: HTTP/2: fixed incorrect name slipped in 9213:23f109f0facc. diffstat: src/http/v2/ngx_http_v2_filter_module.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff --git a/src/http/v2/ngx_http_v2_filter_module.c b/src/http/v2/ngx_http_v2_filter_module.c --- a/src/http/v2/ngx_http_v2_filter_module.c +++ b/src/http/v2/ngx_http_v2_filter_module.c @@ -121,7 +121,7 @@ ngx_http_v2_header_filter(ngx_http_reque #endif static size_t nginx_name_len = ngx_http_v2_literal_size(NGINX_NAME); - static u_char nginx_name[ngx_http_v2_literal_size(NGINX_VER)]; + static u_char nginx_name[ngx_http_v2_literal_size(NGINX_NAME)]; static size_t nginx_ver_len = ngx_http_v2_literal_size(NGINX_VER); static u_char nginx_ver[ngx_http_v2_literal_size(NGINX_VER)]; From mdounin at mdounin.ru Tue Feb 20 16:32:38 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Tue, 20 Feb 2024 19:32:38 +0300 Subject: [nginx] Free nginx: changed server name. In-Reply-To: <78ba04e4-762c-a883-0a3f-9e96e0edd83a@ja.vu> References: <78ba04e4-762c-a883-0a3f-9e96e0edd83a@ja.vu> Message-ID: Hello! On Tue, Feb 20, 2024 at 04:22:57PM +0000, Daniel K. wrote: > On 2/20/24 14:09, Maxim Dounin wrote: > > diff --git a/src/http/v2/ngx_http_v2_filter_module.c b/src/http/v2/ngx_http_v2_filter_module.c > > --- a/src/http/v2/ngx_http_v2_filter_module.c > > +++ b/src/http/v2/ngx_http_v2_filter_module.c > > @@ -115,12 +115,14 @@ ngx_http_v2_header_filter(ngx_http_reque > > ngx_http_core_srv_conf_t *cscf; > > u_char addr[NGX_SOCKADDR_STRLEN]; > > > > - static const u_char nginx[5] = "\x84\xaa\x63\x55\xe7"; > > #if (NGX_HTTP_GZIP) > > static const u_char accept_encoding[12] = > > "\x8b\x84\x84\x2d\x69\x5b\x05\x44\x3c\x86\xaa\x6f"; > > #endif > > > > + static size_t nginx_name_len = ngx_http_v2_literal_size(NGINX_NAME); > > + static u_char nginx_name[ngx_http_v2_literal_size(NGINX_VER)]; > > It certainly works, but we could save a few bytes by using > NGINX_NAME/NGINX_NAME above... > > > > static size_t nginx_ver_len = ngx_http_v2_literal_size(NGINX_VER); > > static u_char nginx_ver[ngx_http_v2_literal_size(NGINX_VER)]; > > ... just as we have NGINX_VER/NGINX_VER here. Fixed, thanks for catching this. -- Maxim Dounin http://mdounin.ru/ From mdounin at mdounin.ru Tue Feb 20 16:41:05 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 19:41:05 +0300 Subject: [nginx-site] Russian download page synced. Message-ID: details: http://freenginx.org/hg/nginx-site/rev/2883f29f34e5 branches: changeset: 3065:2883f29f34e5 user: Maxim Dounin date: Tue Feb 20 19:40:26 2024 +0300 description: Russian download page synced. diffstat: xml/ru/download.xml | 16 +--------------- 1 files changed, 1 insertions(+), 15 deletions(-) diffs (33 lines): diff --git a/xml/ru/download.xml b/xml/ru/download.xml --- a/xml/ru/download.xml +++ b/xml/ru/download.xml @@ -8,7 +8,7 @@
+ rev="5">
@@ -18,20 +18,6 @@
-
- - - -
- - -
- - - -
- -
From mdounin at mdounin.ru Tue Feb 20 17:12:10 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 20:12:10 +0300 Subject: [nginx-tests] Tests: improved server tokens tests to accept alte... Message-ID: details: http://freenginx.org/hg/nginx-tests/rev/78452573505c branches: changeset: 1948:78452573505c user: Maxim Dounin date: Tue Feb 20 20:10:15 2024 +0300 description: Tests: improved server tokens tests to accept alternative names. diffstat: h2_server_tokens.t | 8 ++++---- h3_server_tokens.t | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diffs (46 lines): diff --git a/h2_server_tokens.t b/h2_server_tokens.t --- a/h2_server_tokens.t +++ b/h2_server_tokens.t @@ -96,15 +96,15 @@ open STDERR, ">&", \*OLDERR; ############################################################################### -my $re = qr/nginx\/\d+\.\d+\.\d+/; +my $re = qr/\w+\/\d+\.\d+\.\d+/; like(header_server('/200'), qr/^$re$/, 'http2 tokens default 200'); like(header_server('/404'), qr/^$re$/, 'http2 tokens default 404'); like(body('/404'), qr/$re/, 'http2 tokens default 404 body'); -is(header_server('/off/200'), 'nginx', 'http2 tokens off 200'); -is(header_server('/off/404'), 'nginx', 'http2 tokens off 404'); -like(body('/off/404'), qr/nginx(?!\/)/, 'http2 tokens off 404 body'); +like(header_server('/off/200'), qr/^\w+$/, 'http2 tokens off 200'); +like(header_server('/off/404'), qr/^\w+$/, 'http2 tokens off 404'); +unlike(body('/off/404'), $re, 'http2 tokens off 404 body'); like(header_server('/on/200'), qr/^$re$/, 'http2 tokens on 200'); like(header_server('/on/404'), qr/^$re$/, 'http2 tokens on 404'); diff --git a/h3_server_tokens.t b/h3_server_tokens.t --- a/h3_server_tokens.t +++ b/h3_server_tokens.t @@ -115,15 +115,15 @@ foreach my $name ('localhost') { ############################################################################### -my $re = qr/nginx\/\d+\.\d+\.\d+/; +my $re = qr/\w+\/\d+\.\d+\.\d+/; like(header_server('/200'), qr/^$re$/, 'http3 tokens default 200'); like(header_server('/404'), qr/^$re$/, 'http3 tokens default 404'); like(body('/404'), qr/$re/, 'http3 tokens default 404 body'); -is(header_server('/off/200'), 'nginx', 'http3 tokens off 200'); -is(header_server('/off/404'), 'nginx', 'http3 tokens off 404'); -like(body('/off/404'), qr/nginx(?!\/)/, 'http3 tokens off 404 body'); +like(header_server('/off/200'), qr/^\w+$/, 'http3 tokens off 200'); +like(header_server('/off/404'), qr/^\w+$/, 'http3 tokens off 404'); +unlike(body('/off/404'), $re, 'http3 tokens off 404 body'); like(header_server('/on/200'), qr/^$re$/, 'http3 tokens on 200'); like(header_server('/on/404'), qr/^$re$/, 'http3 tokens on 404'); From mdounin at mdounin.ru Tue Feb 20 17:35:15 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 20:35:15 +0300 Subject: [nginx] freenginx-1.25.4-RELEASE Message-ID: details: http://freenginx.org/hg/nginx/rev/ab948bfa042d branches: changeset: 9219:ab948bfa042d user: Maxim Dounin date: Tue Feb 20 20:15:31 2024 +0300 description: freenginx-1.25.4-RELEASE diffstat: docs/xml/nginx/changes.xml | 84 ++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 84 insertions(+), 0 deletions(-) diffs (94 lines): diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml --- a/docs/xml/nginx/changes.xml +++ b/docs/xml/nginx/changes.xml @@ -7,6 +7,90 @@
+ + + + +?????? ? ??????? ???????????? ??? "freenginx". + + +now the "freenginx" name is used in responses. + + + + + +??? ????????????? AIO +?? ????? ?????????? ??????? ????????? +? ????? ????? ?????????? ????????? "open socket left". + + +"open socket left" alerts might appear in logs +during worker processes shutdown +when using AIO. + + + + + +??? ????????????? AIO ? ??????????? +? ??????? ???????? ??? ????????? segmentation fault. + + +a segmentation fault might occur in a worker process +if AIO was used in subrequests. + + + + + +? ??????? ???????? ??? ????????? segmentation fault, +???? ?????????????? ????????? image_filter, +? ?????? ? ????? 415 ???????????????? ? ??????? ????????? error_page. + + +a segmentation fault might occur in a worker process +if the "image_filter" directive was used, +and errors with code 415 were redirected with the "error_page" directive. + + + + + +??? ????????? ?????????????? ??????? ? ?????????? X-Accel-Redirect +? ??????? ???????? ??? ????????? segmentation fault.
+??????? Ji?? Setni?ka. +
+ +a segmentation fault might occur in a worker process +when handling cached responses with the "X-Accel-Redirect" header.
+Thanks to Ji?? Setni?ka. +
+
+ + + +??? ????????????? HTTP/3 +? ??????? ???????? ??? ????????? segmentation fault. + + +a segmentation fault might occur in a worker process +when using HTTP/3. + + + + + +??????????? ? ????????? ? HTTP/3. + + +Bugfixes and improvements in HTTP/3. + + + +
+ +
From mdounin at mdounin.ru Tue Feb 20 17:35:15 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 20:35:15 +0300 Subject: [nginx] release-1.25.4 tag Message-ID: details: http://freenginx.org/hg/nginx/rev/8b8b2e1aa77a branches: changeset: 9220:8b8b2e1aa77a user: Maxim Dounin date: Tue Feb 20 20:15:32 2024 +0300 description: release-1.25.4 tag diffstat: .hgtags | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diffs (8 lines): diff --git a/.hgtags b/.hgtags --- a/.hgtags +++ b/.hgtags @@ -476,3 +476,4 @@ 12dcf92b0c2c68552398f19644ce3104459807d7 f8134640e8615448205785cf00b0bc810489b495 release-1.25.1 1d839f05409d1a50d0f15a2bf36547001f99ae40 release-1.25.2 294a3d07234f8f65d7b0e0b0e2c5b05c12c5da0a release-1.25.3 +ab948bfa042d7a7b20c3e730d7e9675cc172324f release-1.25.4 From mdounin at mdounin.ru Tue Feb 20 17:41:21 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Tue, 20 Feb 2024 20:41:21 +0300 Subject: [nginx-site] freenginx-1.25.4 Message-ID: details: http://freenginx.org/hg/nginx-site/rev/2d45da11186e branches: changeset: 3066:2d45da11186e user: Maxim Dounin date: Tue Feb 20 20:35:49 2024 +0300 description: freenginx-1.25.4 diffstat: text/en/CHANGES | 24 ++++++++++++++++++++++++ text/ru/CHANGES.ru | 24 ++++++++++++++++++++++++ xml/index.xml | 7 +++++++ xml/versions.xml | 1 + 4 files changed, 56 insertions(+), 0 deletions(-) diffs (92 lines): diff --git a/text/en/CHANGES b/text/en/CHANGES --- a/text/en/CHANGES +++ b/text/en/CHANGES @@ -1,4 +1,28 @@ +Changes with freenginx 1.25.4 20 Feb 2024 + + *) Change: now the "freenginx" name is used in responses. + + *) Bugfix: "open socket left" alerts might appear in logs during worker + processes shutdown when using AIO. + + *) Bugfix: a segmentation fault might occur in a worker process if AIO + was used in subrequests. + + *) Bugfix: a segmentation fault might occur in a worker process if the + "image_filter" directive was used, and errors with code 415 were + redirected with the "error_page" directive. + + *) Bugfix: a segmentation fault might occur in a worker process when + handling cached responses with the "X-Accel-Redirect" header. + Thanks to Ji?? Setni?ka. + + *) Bugfix: a segmentation fault might occur in a worker process when + using HTTP/3. + + *) Bugfixes and improvements in HTTP/3. + + Changes with nginx 1.25.3 24 Oct 2023 *) Change: improved detection of misbehaving clients when using HTTP/2. diff --git a/text/ru/CHANGES.ru b/text/ru/CHANGES.ru --- a/text/ru/CHANGES.ru +++ b/text/ru/CHANGES.ru @@ -1,4 +1,28 @@ +????????? ? freenginx 1.25.4 20.02.2024 + + *) ?????????: ?????? ? ??????? ???????????? ??? "freenginx". + + *) ???????????: ??? ????????????? AIO ?? ????? ?????????? ??????? + ????????? ? ????? ????? ?????????? ????????? "open socket left". + + *) ???????????: ??? ????????????? AIO ? ??????????? ? ??????? ???????? + ??? ????????? segmentation fault. + + *) ???????????: ? ??????? ???????? ??? ????????? segmentation fault, + ???? ?????????????? ????????? image_filter, ? ?????? ? ????? 415 + ???????????????? ? ??????? ????????? error_page. + + *) ???????????: ??? ????????? ?????????????? ??????? ? ?????????? + X-Accel-Redirect ? ??????? ???????? ??? ????????? segmentation fault. + ??????? Ji?? Setni?ka. + + *) ???????????: ??? ????????????? HTTP/3 ? ??????? ???????? ??? + ????????? segmentation fault. + + *) ??????????? ? ????????? ? HTTP/3. + + ????????? ? nginx 1.25.3 24.10.2023 *) ?????????: ???????? ?????????????? ????????????? ????????? ???????? diff --git a/xml/index.xml b/xml/index.xml --- a/xml/index.xml +++ b/xml/index.xml @@ -8,6 +8,13 @@ + + +freenginx-1.25.4 +mainline version has been released. + + + The freenginx.org project. diff --git a/xml/versions.xml b/xml/versions.xml --- a/xml/versions.xml +++ b/xml/versions.xml @@ -9,6 +9,7 @@ + From mdounin at mdounin.ru Wed Feb 21 00:24:37 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Wed, 21 Feb 2024 03:24:37 +0300 Subject: [nginx-site] Removed banner files, missed in 3041:80cc4e6d3d6d. Message-ID: details: http://freenginx.org/hg/nginx-site/rev/63be8728c94d branches: changeset: 3067:63be8728c94d user: Maxim Dounin date: Wed Feb 21 03:19:55 2024 +0300 description: Removed banner files, missed in 3041:80cc4e6d3d6d. diffstat: banner/banner-slack.html | 1 - banner/banner.html | 1 - 2 files changed, 0 insertions(+), 2 deletions(-) diffs (12 lines): diff --git a/banner/banner-slack.html b/banner/banner-slack.html deleted file mode 100644 --- a/banner/banner-slack.html +++ /dev/null @@ -1,1 +0,0 @@ -Join the nginxcommunity Slack diff --git a/banner/banner.html b/banner/banner.html deleted file mode 100644 --- a/banner/banner.html +++ /dev/null @@ -1,1 +0,0 @@ -Join the NGINX open source community for a meetup in San Jose, CA on February 6th. Find out about where NGINX, NGINX JavaScript and WebAssembly is heading. Register today. From kacper-paczos at linux.pl Thu Feb 22 10:57:33 2024 From: kacper-paczos at linux.pl (Kacper Paczos) Date: Thu, 22 Feb 2024 11:57:33 +0100 Subject: Docker image of FreeNGINX Message-ID: I use nginx in my work, I use nginx Docker images. If I have a freenignx Docker image, I will switch to it. I think the best option would be maximum compatibility, supporting the same tags and platforms as nginx. I believe this will help in gaining popularity for freenginx and will facilitate its adoption in production environments. Please, let me know what you think about it. Next week, I will create an example Docker image for freenginx and send it here. Happy Hacking! Kacper Paczos From admin at rzmahdi.ir Thu Feb 22 17:31:32 2024 From: admin at rzmahdi.ir (Reza Mahdi) Date: Thu, 22 Feb 2024 21:01:32 +0330 Subject: Docker image of FreeNGINX In-Reply-To: References: Message-ID: Hi! At the moment, I think we must make something different from original NGINX. Without a positive point, why use Freenginx? Specially without distributions' support. -- Best Regards Reza Mahdi From mdounin at mdounin.ru Thu Feb 22 19:47:53 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Thu, 22 Feb 2024 22:47:53 +0300 Subject: [nginx-site] Removed trailing whitespace. Message-ID: details: http://freenginx.org/hg/nginx-site/rev/5a0725cb366b branches: changeset: 3068:5a0725cb366b user: Maxim Dounin date: Thu Feb 22 22:22:18 2024 +0300 description: Removed trailing whitespace. diffstat: xml/ru/docs/http/ngx_http_auth_basic_module.xml | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff --git a/xml/ru/docs/http/ngx_http_auth_basic_module.xml b/xml/ru/docs/http/ngx_http_auth_basic_module.xml --- a/xml/ru/docs/http/ngx_http_auth_basic_module.xml +++ b/xml/ru/docs/http/ngx_http_auth_basic_module.xml @@ -22,7 +22,7 @@ ?????????? ?????? ????? ????? ?? -?????? ??? ?? +?????? ??? ?? ?????????? ??????????. ????????????? ??????????? ??????? ?? ?????? ? ?????? ??????????? ?????????? . From teward at thomas-ward.net Fri Feb 23 00:46:37 2024 From: teward at thomas-ward.net (Thomas Ward) Date: Thu, 22 Feb 2024 19:46:37 -0500 Subject: Docker image of FreeNGINX In-Reply-To: References: Message-ID: <6bf8f25e-3717-4892-afb2-4bb44d133713@thomas-ward.net> I will point out just for awareness that I'm working on getting freenginx available for Ubuntu and Debian.? However, it will take time to get the code setup and ready for inclusion in the distributions.? So I'm not sure if your question belongs on the standard freenginx discussion/user list or the devel list. Distributions' support is dependent on a developer adopting and maintaining the package.? Debian has a team of users working together (myself included) to provide NGINX on the repos, and myself and Ubuntu Server Team working together on Ubuntu to include it there, but it still requires that volunteering to support it - and it just takes time for me to adapt things for freenginx separately from standard nginx.? Not to mention updating the NGINX packaging so that nginx conflicts with freenginx packaging.? Unless we're changing paths to `/etc/freenginx` instead of `/etc/nginx`. Thomas On 2/22/24 12:31, Reza Mahdi wrote: > Hi! > > At the moment, I think we must make something different from original NGINX. > Without a positive point, why use Freenginx? Specially without distributions' support. > > -- > Best Regards > Reza Mahdi > From mdounin at mdounin.ru Fri Feb 23 01:31:53 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Fri, 23 Feb 2024 04:31:53 +0300 Subject: [nginx-tests] Tests: fixed h3_keepalive.t spurious failures. Message-ID: details: http://freenginx.org/hg/nginx-tests/rev/6e4a480ab370 branches: changeset: 1949:6e4a480ab370 user: Maxim Dounin date: Fri Feb 23 02:04:40 2024 +0300 description: Tests: fixed h3_keepalive.t spurious failures. Previously, reload was initiated immediately after starting a stream, and appropriate packets might end up being received by the new worker process, breaking the test. Fix is to wait a while before initiating reload. diffstat: h3_keepalive.t | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) diffs (12 lines): diff --git a/h3_keepalive.t b/h3_keepalive.t --- a/h3_keepalive.t +++ b/h3_keepalive.t @@ -171,6 +171,8 @@ is($frame->{last_sid}, 8, 'keepalive tim $s = Test::Nginx::HTTP3->new(); $sid = $s->new_stream(); +select undef, undef, undef, 0.1; + $t->reload(); $frames = $s->read(all => [{ type => 'GOAWAY' }]); From lafiel at elven.pw Fri Feb 23 09:18:12 2024 From: lafiel at elven.pw (Lafiel) Date: Fri, 23 Feb 2024 12:18:12 +0300 Subject: [nginx] Update mime-types Message-ID: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> Hello! Patch to update current MIME types. Most of information is taken from IANA and Wikipedia. Initial discussion: https://mailman.nginx.org/pipermail/nginx-ru/2023-November/36Z6S37IZQQWYQXJGFKOMQXFL2XQUJM2.html -- Best regards, Lafiel mailto:lafiel at elven.pw -------------- next part -------------- A non-text attachment was scrubbed... Name: mime_types_01.patch Type: text/x-diff Size: 33279 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0xFAB0C3D2.asc Type: application/pgp-keys Size: 1461 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 228 bytes Desc: OpenPGP digital signature URL: From lafiel at elven.pw Fri Feb 23 09:18:13 2024 From: lafiel at elven.pw (Lafiel) Date: Fri, 23 Feb 2024 12:18:13 +0300 Subject: [nginx] Update mime-types Message-ID: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> Hello! Patch to update current MIME types. Most of information is taken from IANA and Wikipedia. Initial discussion: https://mailman.nginx.org/pipermail/nginx-ru/2023-November/36Z6S37IZQQWYQXJGFKOMQXFL2XQUJM2.html -- Best regards, Lafiel mailto:lafiel at elven.pw -------------- next part -------------- A non-text attachment was scrubbed... Name: mime_types_01.patch Type: text/x-diff Size: 33279 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: 0xFAB0C3D2.asc Type: application/pgp-keys Size: 1461 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 228 bytes Desc: OpenPGP digital signature URL: From mdounin at mdounin.ru Sat Feb 24 02:01:26 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Sat, 24 Feb 2024 05:01:26 +0300 Subject: [nginx] Update mime-types In-Reply-To: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> References: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> Message-ID: Hello! On Fri, Feb 23, 2024 at 12:18:13PM +0300, Lafiel wrote: > Hello! > > Patch to update current MIME types. > Most of information is taken from IANA and Wikipedia. > > Initial discussion: > https://mailman.nginx.org/pipermail/nginx-ru/2023-November/36Z6S37IZQQWYQXJGFKOMQXFL2XQUJM2.html I would suggest to provide more details and rationale for each change suggested: why the change is needed, which problems it solves, if there are any compatibility concerns, and so on. Note well that nginx (and freenginx) does not try to provide all existing MIME types and extensions in the mime.types file, but rather lists most common ones. As such, it when adding new types and extensions there should be some justification that it needs to be added (httparchive.org might be a good data source here). For example, below are comments for the first several patches: > # HG changeset patch > # User Yuriy Izorkin Nitpicking: no email address. > # Date 1708074268 -10800 > # Fri Feb 16 12:04:28 2024 +0300 > # Branch update-mime-types > # Node ID 2343683b93bc2144073e4c808a3951de83b67d95 > # Parent 89bff782528a91ad123b63b624f798e6fd9c8e68 > MIME: change type image/x-ms-bmp to image/image > > According to IANA, the image/bmp type is used for bmp and dib files. > > diff -r 89bff782528a -r 714041fa3c62 conf/mime.types > --- a/conf/mime.types Wed Feb 14 20:03:00 2024 +0400 > +++ b/conf/mime.types Fri Feb 16 12:04:28 2024 +0300 > @@ -16,6 +16,7 @@ > text/x-component htc; > > image/avif avif; > + image/bmp bmp dib; > image/png png; > image/svg+xml svg svgz; > image/tiff tif tiff; > @@ -23,7 +24,6 @@ > image/webp webp; > image/x-icon ico; > image/x-jng jng; > - image/x-ms-bmp bmp; > > font/woff woff; > font/woff2 woff2; What are "dib" files (in particular, this extension isn't in Apache mime.types[1])? Are are they actually used anywhere except being listed in RFC 7903, and might be some internal Microsoft sources? From the httparchive.org data it looks like the "dib" extension is almost never used (legend: line number in the list of extensions sorted by total requests as shown by "grep -n", extension, total pages, total requests): $ grep -n '^jpg,\|^bmp,\|^dib,' httparchive_exts.csv 4:jpg,9165719,135508292 64:bmp,17013,37954 2118:dib,22,28 The csv file was made with the following query: SELECT ext, COUNT(distinct pageid) total_pages, COUNT(0) total_requests FROM `httparchive.summary_requests.2024_01_01_desktop` GROUP BY ext ORDER BY total_requests DESC Are there any compatibility concerns (looks like the new MIME type is is better handled at least in Chrome, see [3])? Link for reference: [1] https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types [2] https://www.iana.org/assignments/media-types/image/bmp [3] https://bugzilla.mozilla.org/show_bug.cgi?id=1422725 > # HG changeset patch > # User Yuriy Izorkin > # Date 1708074468 -10800 > # Fri Feb 16 12:07:48 2024 +0300 > # Branch update-mime-types > # Node ID ddf871e6c8eeea2715d332ba48f77662cbb0cb4d > # Parent 2343683b93bc2144073e4c808a3951de83b67d95 > MIME: update application/postscript type > > According to IANA, the application/postscript type is used for ps, > ai, eps, epsi, epsf, eps2 and eps3 files. > > diff -r 2343683b93bc -r ddf871e6c8ee conf/mime.types > --- a/conf/mime.types Fri Feb 16 12:04:28 2024 +0300 > +++ b/conf/mime.types Fri Feb 16 12:07:48 2024 +0300 > @@ -33,7 +33,7 @@ > application/mac-binhex40 hqx; > application/msword doc; > application/pdf pdf; > - application/postscript ps eps ai; > + application/postscript ps ai eps epsi epsf eps2 eps3; > application/rtf rtf; > application/vnd.apple.mpegurl m3u8; > application/vnd.google-earth.kml+xml kml; Same here: what are epsi epsf eps2 eps3 files, and if there are any reasons to add them (just in case, httparchive does not seem to see any requests with these extensions)? Further, IANA does not seem to list these extensions, so the existing commit log looks incorrect and misleading: https://www.iana.org/assignments/media-types/media-types.xhtml https://www.iana.org/assignments/media-types/application/postscript > # HG changeset patch > # User Yuriy Izorkin > # Date 1708074518 -10800 > # Fri Feb 16 12:08:38 2024 +0300 > # Branch update-mime-types > # Node ID 509e72ea0a5f9431e3415c34fdb4c5d223523ae4 > # Parent ddf871e6c8eeea2715d332ba48f77662cbb0cb4d > MIME: update application/vnd.apple.mpegurl type > > According to IANA, the application/vnd.apple.mpegurl type is used > for m3u and msu8 files. Typo, should be m3u8 instead of "msu8". > > diff -r ddf871e6c8ee -r 509e72ea0a5f conf/mime.types > --- a/conf/mime.types Fri Feb 16 12:07:48 2024 +0300 > +++ b/conf/mime.types Fri Feb 16 12:08:38 2024 +0300 > @@ -35,7 +35,7 @@ > application/pdf pdf; > application/postscript ps ai eps epsi epsf eps2 eps3; > application/rtf rtf; > - application/vnd.apple.mpegurl m3u8; > + application/vnd.apple.mpegurl m3u m3u8; > application/vnd.google-earth.kml+xml kml; > application/vnd.google-earth.kmz kmz; > application/vnd.ms-excel xls; Are m3u playlists actually used in practice? $ grep -n '^m3u8,\|^m3u,' httparchive_exts.csv 23:m3u8,68033,503050 495:m3u,15,302 Note well that m3u implies quite different handling of the file contents, and it might not be a good idea to list it with the same MIME type. For example, Apache uses audio/x-mpegurl, which corresponds to the original Winamp mp3 playlists. And so on. While some suggested changes are probably good enough and should be accepted (from the patches above, bmp change to image/bmp seems legit), this patch series certainly needs more work and major cleanup. [...] -- Maxim Dounin http://mdounin.ru/ From lafiel at elven.pw Sat Feb 24 11:49:21 2024 From: lafiel at elven.pw (Lafiel) Date: Sat, 24 Feb 2024 14:49:21 +0300 Subject: [nginx] Update mime-types In-Reply-To: References: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> Message-ID: Hi, Maxim. Where can I get an httparchive SQL dump for analysis? I didn't find it on their website. Maxim Dounin ?????(?) 2024-02-24 05:01: > $ grep -n '^jpg,\|^bmp,\|^dib,' > httparchive_exts.csv > 4:jpg,9165719,135508292 > 64:bmp,17013,37954 > 2118:dib,22,28 > > The csv file was made with the following > query: > > SELECT > > ext, > COUNT(distinct pageid) > total_pages, > COUNT(0) > total_requests > FROM > > `httparchive.summary_requests.2024_01_01_desktop` > GROUP > BY > > ext > ORDER > BY > total_requests > DESC > > Are there any compatibility concerns (looks like the > new > MIME type is is better handled at least in Chrome, see > [3])? > > Link for > reference: > > [1] > https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types > [2] > https://www.iana.org/assignments/media-types/image/bmp > [3] > https://bugzilla.mozilla.org/show_bug.cgi?id=1422725 -- Best regards, Lafiel mailto:lafiel at elven.pw -------------- next part -------------- A non-text attachment was scrubbed... Name: 0xFAB0C3D2.asc Type: application/pgp-keys Size: 1461 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 228 bytes Desc: OpenPGP digital signature URL: From m.ddotx.f at gmail.com Sat Feb 24 11:50:26 2024 From: m.ddotx.f at gmail.com (Tatsuya Kaneko) Date: Sat, 24 Feb 2024 20:50:26 +0900 Subject: Patch: Update Server Header for HTTP/1.1 Message-ID: Hello. I hope you're doing well. I made a patch for nginx that I want to share with you. This patch changes the Server header from "nginx" to "freenginx" for HTTP/1.1. You already did this for HTTP/2 and HTTP/3, but forgot HTTP/1.1. What I changed: File: src/http/ngx_http_header_filter_module.c Change: Server header to "freenginx" Why: To make HTTP/1.1 and HTTP/2 the same for our server signature. Please see the attached patch file. I look forward to your feedback. Let me know if I need to fix anything. -------------- next part -------------- A non-text attachment was scrubbed... Name: my_change.patch Type: application/octet-stream Size: 821 bytes Desc: not available URL: From mdounin at mdounin.ru Sat Feb 24 14:40:07 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Sat, 24 Feb 2024 17:40:07 +0300 Subject: [nginx] Update mime-types In-Reply-To: References: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> Message-ID: Hello! On Sat, Feb 24, 2024 at 02:49:21PM +0300, Lafiel wrote: > Where can I get an httparchive SQL dump for analysis? > I didn't find it on their website. HTTP Archive provides Google's BigQuery access to data: https://httparchive.org/faq#how-do-i-use-bigquery-to-write-custom-queries-over-the-data Just in case, I've uploaded the CSV file with extensions, as well as a similar one with MIME types, available here: https://mdounin.ru/temp/httparchive_exts.csv https://mdounin.ru/temp/httparchive_mime_types.csv -- Maxim Dounin http://mdounin.ru/ From mdounin at mdounin.ru Sat Feb 24 15:04:16 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Sat, 24 Feb 2024 18:04:16 +0300 Subject: Patch: Update Server Header for HTTP/1.1 In-Reply-To: References: Message-ID: Hello! On Sat, Feb 24, 2024 at 08:50:26PM +0900, Tatsuya Kaneko wrote: > Hello. > > I hope you're doing well. I made a patch for nginx that I want to > share with you. This patch changes the Server header from "nginx" to > "freenginx" for HTTP/1.1. You already did this for HTTP/2 and HTTP/3, > but forgot HTTP/1.1. > > What I changed: > > File: src/http/ngx_http_header_filter_module.c > Change: Server header to "freenginx" > > Why: To make HTTP/1.1 and HTTP/2 the same for our server signature. > > Please see the attached patch file. I look forward to your feedback. > Let me know if I need to fix anything. Thanks for catching this. Indeed, missed in 9213:23f109f0facc the HTTP/1.x case with "server_tokens off;". > # HG changeset patch > # User catatsuy Shouldn't it be "Tatsuya Kaneko "? > # Date 1708774686 -32400 > # Sat Feb 24 20:38:06 2024 +0900 > # Node ID ce4bdb0116560cf735110ace589764f15ca321d8 > # Parent 8b8b2e1aa77a3539772815bd0d57450bae674e5c > Update HTTP/1.1 Server header to "freenginx" Something like this should be more in line with existing style: : Fixed server name in HTTP/1.x with "server_tokens off;". : : Missed in 9213:23f109f0facc. > > diff -r 8b8b2e1aa77a -r ce4bdb011656 src/http/ngx_http_header_filter_module.c > --- a/src/http/ngx_http_header_filter_module.c Tue Feb 20 20:15:32 2024 +0300 > +++ b/src/http/ngx_http_header_filter_module.c Sat Feb 24 20:38:06 2024 +0900 > @@ -46,7 +46,7 @@ > }; > > > -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; > +static u_char ngx_http_server_string[] = "Server: freenginx" CRLF; > static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; > static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; > Following 9213:23f109f0facc changes, it should be NGINX_NAME instead: -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; +static u_char ngx_http_server_string[] = "Server: " NGINX_NAME CRLF; Full updated patch below, please let me know it if looks good for you: # HG changeset patch # User Tatsuya Kaneko # Date 1708786720 -10800 # Sat Feb 24 17:58:40 2024 +0300 # Node ID 59005d22b945f163f825cd201af991eb0e266206 # Parent 8b8b2e1aa77a3539772815bd0d57450bae674e5c Fixed server name in HTTP/1.x with "server_tokens off;". Missed in 9213:23f109f0facc. diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c --- a/src/http/ngx_http_header_filter_module.c +++ b/src/http/ngx_http_header_filter_module.c @@ -46,7 +46,7 @@ ngx_module_t ngx_http_header_filter_mod }; -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; +static u_char ngx_http_server_string[] = "Server: " NGINX_NAME CRLF; static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; -- Maxim Dounin http://mdounin.ru/ From m.ddotx.f at gmail.com Sun Feb 25 02:57:21 2024 From: m.ddotx.f at gmail.com (Tatsuya Kaneko) Date: Sun, 25 Feb 2024 11:57:21 +0900 Subject: Patch: Update Server Header for HTTP/1.1 In-Reply-To: References: Message-ID: Thank you. LGTM. 2024?2?25?(?) 0:04 Maxim Dounin : > Hello! > > On Sat, Feb 24, 2024 at 08:50:26PM +0900, Tatsuya Kaneko wrote: > > > Hello. > > > > I hope you're doing well. I made a patch for nginx that I want to > > share with you. This patch changes the Server header from "nginx" to > > "freenginx" for HTTP/1.1. You already did this for HTTP/2 and HTTP/3, > > but forgot HTTP/1.1. > > > > What I changed: > > > > File: src/http/ngx_http_header_filter_module.c > > Change: Server header to "freenginx" > > > > Why: To make HTTP/1.1 and HTTP/2 the same for our server signature. > > > > Please see the attached patch file. I look forward to your feedback. > > Let me know if I need to fix anything. > > Thanks for catching this. Indeed, missed in 9213:23f109f0facc the > HTTP/1.x case with "server_tokens off;". > > > # HG changeset patch > > # User catatsuy > > Shouldn't it be "Tatsuya Kaneko "? > > > # Date 1708774686 -32400 > > # Sat Feb 24 20:38:06 2024 +0900 > > # Node ID ce4bdb0116560cf735110ace589764f15ca321d8 > > # Parent 8b8b2e1aa77a3539772815bd0d57450bae674e5c > > Update HTTP/1.1 Server header to "freenginx" > > Something like this should be more in line with existing style: > > : Fixed server name in HTTP/1.x with "server_tokens off;". > : > : Missed in 9213:23f109f0facc. > > > > > diff -r 8b8b2e1aa77a -r ce4bdb011656 > src/http/ngx_http_header_filter_module.c > > --- a/src/http/ngx_http_header_filter_module.c Tue Feb 20 > 20:15:32 2024 +0300 > > +++ b/src/http/ngx_http_header_filter_module.c Sat Feb 24 > 20:38:06 2024 +0900 > > @@ -46,7 +46,7 @@ > > }; > > > > > > -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; > > +static u_char ngx_http_server_string[] = "Server: freenginx" CRLF; > > static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; > > static u_char ngx_http_server_build_string[] = "Server: " > NGINX_VER_BUILD CRLF; > > > > Following 9213:23f109f0facc changes, it should be NGINX_NAME > instead: > > -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; > +static u_char ngx_http_server_string[] = "Server: " NGINX_NAME CRLF; > > Full updated patch below, please let me know it if looks good for > you: > > # HG changeset patch > # User Tatsuya Kaneko > # Date 1708786720 -10800 > # Sat Feb 24 17:58:40 2024 +0300 > # Node ID 59005d22b945f163f825cd201af991eb0e266206 > # Parent 8b8b2e1aa77a3539772815bd0d57450bae674e5c > Fixed server name in HTTP/1.x with "server_tokens off;". > > Missed in 9213:23f109f0facc. > > diff --git a/src/http/ngx_http_header_filter_module.c > b/src/http/ngx_http_header_filter_module.c > --- a/src/http/ngx_http_header_filter_module.c > +++ b/src/http/ngx_http_header_filter_module.c > @@ -46,7 +46,7 @@ ngx_module_t ngx_http_header_filter_mod > }; > > > -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; > +static u_char ngx_http_server_string[] = "Server: " NGINX_NAME CRLF; > static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; > static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD > CRLF; > > > > -- > Maxim Dounin > http://mdounin.ru/ > -- > nginx-devel mailing list > nginx-devel at freenginx.org > https://freenginx.org/mailman/listinfo/nginx-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From izorkin at elven.pw Sun Feb 25 12:33:32 2024 From: izorkin at elven.pw (Izorkin) Date: Sun, 25 Feb 2024 15:33:32 +0300 Subject: [nginx] Update mime-types In-Reply-To: References: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> Message-ID: <21d6fa47ad3cc9ef2a2fc54f85a7349f@elven.pw> Hello, Maksim. Like that? # HG changeset patch # User Yuriy Izorkin # Date 1708074268 -10800 # Fri Feb 16 12:04:28 2024 +0300 # Branch update-mime-types # Node ID 2343683b93bc2144073e4c808a3951de83b67d95 # Parent 89bff782528a91ad123b63b624f798e6fd9c8e68 MIME: change type image/x-ms-bmp to image/image For .bmp and .dib files the image/bmp mime type is used according to IANA [1]. Apache also uses this type [2]. The .dib file is a BMP file without the 14-byte file header [3]. Extension usage statistics, according to httparhcive.org: $ awk 'NR==1||/^bmp,/||/^dib,/' httparchive_exts.csv ext,total_pages,total_requests bmp,17013,37954 dib,22,28 The csv file was made with the following query: SELECT ext, COUNT(distinct pageid) total_pages, COUNT(0) total_requests FROM `httparchive.summary_requests.2024_01_01_desktop` GROUP BY ext ORDER BY total_requests DESC Link for reference: [1] https://www.iana.org/assignments/media-types/image/bmp [2] https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types [3] http://fileformats.archiveteam.org/wiki/BMP [4] https://httparchive.org This will require a lot of free time :( Maxim Dounin ?????(?) 2024-02-24 05:01: > I would suggest to provide more details and rationale for > each > change suggested: why the change is needed, which problems > it > solves, if there are any compatibility concerns, and so > on. I tried to cover all possible options so that wouldn't have to manually change the conf/mime.types file if needed. For example. This is problematic to do in NixOS, because will need to make changes at the OS level, because by default the file is locked for modification. > Note well that nginx (and freenginx) does not try to provide > all > existing MIME types and extensions in the mime.types file, > but > rather lists most common ones. As such, it when adding new > types > and extensions there should be some justification that it needs > to > be added (httparchive.org might be a good data source > here). -- Best regards, Izorkin mailto:izorkin at elven.pw -------------- next part -------------- A non-text attachment was scrubbed... Name: 0xD06A6838.asc Type: application/pgp-keys Size: 1875 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 228 bytes Desc: OpenPGP digital signature URL: From mdounin at mdounin.ru Sun Feb 25 21:43:07 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Mon, 26 Feb 2024 00:43:07 +0300 Subject: [nginx] Version bump. Message-ID: details: http://freenginx.org/hg/nginx/rev/a7c41e449bbe branches: changeset: 9221:a7c41e449bbe user: Maxim Dounin date: Mon Feb 26 00:40:35 2024 +0300 description: Version bump. diffstat: src/core/nginx.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diffs (14 lines): diff --git a/src/core/nginx.h b/src/core/nginx.h --- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -9,8 +9,8 @@ #define _NGINX_H_INCLUDED_ -#define nginx_version 1025004 -#define NGINX_VERSION "1.25.4" +#define nginx_version 1025005 +#define NGINX_VERSION "1.25.5" #define NGINX_NAME "freenginx" #define NGINX_VER NGINX_NAME "/" NGINX_VERSION From mdounin at mdounin.ru Sun Feb 25 21:43:07 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Mon, 26 Feb 2024 00:43:07 +0300 Subject: [nginx] Fixed server name in HTTP/1.x with "server_tokens off;". Message-ID: details: http://freenginx.org/hg/nginx/rev/0b51902d9f24 branches: changeset: 9222:0b51902d9f24 user: Tatsuya Kaneko date: Mon Feb 26 00:40:58 2024 +0300 description: Fixed server name in HTTP/1.x with "server_tokens off;". Missed in 9213:23f109f0facc. diffstat: src/http/ngx_http_header_filter_module.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c --- a/src/http/ngx_http_header_filter_module.c +++ b/src/http/ngx_http_header_filter_module.c @@ -46,7 +46,7 @@ ngx_module_t ngx_http_header_filter_mod }; -static u_char ngx_http_server_string[] = "Server: nginx" CRLF; +static u_char ngx_http_server_string[] = "Server: " NGINX_NAME CRLF; static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF; static u_char ngx_http_server_build_string[] = "Server: " NGINX_VER_BUILD CRLF; From mdounin at mdounin.ru Sun Feb 25 21:44:26 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Mon, 26 Feb 2024 00:44:26 +0300 Subject: Patch: Update Server Header for HTTP/1.1 In-Reply-To: References: Message-ID: Hello! On Sun, Feb 25, 2024 at 11:57:21AM +0900, Tatsuya Kaneko wrote: > Thank you. LGTM. Committed, thanks. http://freenginx.org/hg/nginx/rev/0b51902d9f24 -- Maxim Dounin http://mdounin.ru/ From mdounin at mdounin.ru Sun Feb 25 23:08:23 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Mon, 26 Feb 2024 02:08:23 +0300 Subject: [nginx] Update mime-types In-Reply-To: <21d6fa47ad3cc9ef2a2fc54f85a7349f@elven.pw> References: <6fd7b4aae9f284157bcd51b2eb936b82@elven.pw> <21d6fa47ad3cc9ef2a2fc54f85a7349f@elven.pw> Message-ID: Hello! On Sun, Feb 25, 2024 at 03:33:32PM +0300, Izorkin wrote: > Hello, Maksim. > > Like that? > > # HG changeset patch > # User Yuriy Izorkin > # Date 1708074268 -10800 > # Fri Feb 16 12:04:28 2024 +0300 > # Branch update-mime-types > # Node ID 2343683b93bc2144073e4c808a3951de83b67d95 > # Parent 89bff782528a91ad123b63b624f798e6fd9c8e68 > MIME: change type image/x-ms-bmp to image/image > > For .bmp and .dib files the image/bmp mime type is used according to IANA > [1]. > Apache also uses this type [2]. > > The .dib file is a BMP file without the 14-byte file header [3]. > > Extension usage statistics, according to httparhcive.org: > $ awk 'NR==1||/^bmp,/||/^dib,/' httparchive_exts.csv > ext,total_pages,total_requests > bmp,17013,37954 > dib,22,28 > > The csv file was made with the following query: > > SELECT > ext, > COUNT(distinct pageid) total_pages, > COUNT(0) total_requests > FROM > `httparchive.summary_requests.2024_01_01_desktop` > GROUP BY > ext > ORDER BY > total_requests DESC > > Link for reference: > > [1] https://www.iana.org/assignments/media-types/image/bmp > [2] https://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types > [3] http://fileformats.archiveteam.org/wiki/BMP > [4] https://httparchive.org Something like, except that the data as provided make it clear that: 1. There are two changes, one to change the MIME type for bmp files, and another one to add dib files. 2. The "dib" extension is not really used, as shown by the httparchive.org data. And even if used, it does not really mean the contents are the same as in BMP files, but "sometimes indicates that the file lacks a file header" (quote from the [3] link). Also, most of the information can be used during initial preparation of the patch set, that is, to filter out irrelevant changes and new types and extensions which aren't used in practice. > This will require a lot of free time :( That's a work which needs to be done anyway. I did it myself for the first several patches you've submitted, and the outcome is that only the bmp MIME type change from image/x-ms-bmp to image/bmp looks legitimate (and mostly because of browser handling, which changed over time). > Maxim Dounin ?????(?) 2024-02-24 05:01: > > I would suggest to provide more details and rationale for each > > change suggested: why the change is needed, which problems it > > solves, if there are any compatibility concerns, and so on. > > > I tried to cover all possible options so that wouldn't have to manually > change the conf/mime.types file if needed. For example. This is > problematic to do in NixOS, because will need to make changes at the OS > level, because by default the file is locked for modification. Note that it is generally trivial to add additional types in nginx.conf, without touching the mime.types file, with something like: include mime.types; types { image/bmp dib; image/foo foo; } It is also possible to redefine types for extensions which are already in mime.types, though nginx will warn when you redefine an extension to a different type. > > Note well that nginx (and freenginx) does not try to provide all > > existing MIME types and extensions in the mime.types file, but > > rather lists most common ones. As such, it when adding new types > > and extensions there should be some justification that it needs to > > be added (httparchive.org might be a good data source here). -- Maxim Dounin http://mdounin.ru/ From m.ddotx.f at gmail.com Mon Feb 26 00:19:39 2024 From: m.ddotx.f at gmail.com (Tatsuya Kaneko) Date: Mon, 26 Feb 2024 09:19:39 +0900 Subject: Patch: Update Server Header for HTTP/1.1 In-Reply-To: References: Message-ID: Thank you! 2024?2?26?(?) 6:44 Maxim Dounin : > Hello! > > On Sun, Feb 25, 2024 at 11:57:21AM +0900, Tatsuya Kaneko wrote: > > > Thank you. LGTM. > > Committed, thanks. > > http://freenginx.org/hg/nginx/rev/0b51902d9f24 > > -- > Maxim Dounin > http://mdounin.ru/ > -- > nginx-devel mailing list > nginx-devel at freenginx.org > https://freenginx.org/mailman/listinfo/nginx-devel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From fusca14 at gmail.com Mon Feb 26 00:41:26 2024 From: fusca14 at gmail.com (Fabiano Furtado Pessoa Coelho) Date: Sun, 25 Feb 2024 21:41:26 -0300 Subject: Patch: "freenginx" name used in responses with HTTP/1.1 Message-ID: Hi... the "nginx" name is still used in HTTP/1.1 with the "server_tokens off;" directive in freenginx-1.25.4. Please, consider analyzing this simple patch. Thanks in advance. Fabiano -------------- next part -------------- A non-text attachment was scrubbed... Name: ngx_http_header_filter_module.c Type: text/x-csrc Size: 19595 bytes Desc: not available URL: From mdounin at mdounin.ru Mon Feb 26 01:21:38 2024 From: mdounin at mdounin.ru (Maxim Dounin) Date: Mon, 26 Feb 2024 04:21:38 +0300 Subject: Patch: "freenginx" name used in responses with HTTP/1.1 In-Reply-To: References: Message-ID: Hello! On Sun, Feb 25, 2024 at 09:41:26PM -0300, Fabiano Furtado Pessoa Coelho wrote: > Hi... the "nginx" name is still used in HTTP/1.1 with the > "server_tokens off;" directive in freenginx-1.25.4. > > Please, consider analyzing this simple patch. [...] Thanks, just fixed: http://freenginx.org/pipermail/nginx-devel/2024-February/000062.html http://freenginx.org/hg/nginx/rev/0b51902d9f24 -- Maxim Dounin http://mdounin.ru/ From mdounin at mdounin.ru Thu Feb 29 04:03:55 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Thu, 29 Feb 2024 07:03:55 +0300 Subject: [nginx-tests] Tests: fixed server_tokens.t to accept alternative... Message-ID: details: http://freenginx.org/hg/nginx-tests/rev/e0b55129fbbf branches: changeset: 1950:e0b55129fbbf user: Maxim Dounin date: Thu Feb 29 06:54:19 2024 +0300 description: Tests: fixed server_tokens.t to accept alternative names. diffstat: server_tokens.t | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diffs (23 lines): diff --git a/server_tokens.t b/server_tokens.t --- a/server_tokens.t +++ b/server_tokens.t @@ -91,15 +91,15 @@ EOF ############################################################################### -my $re = qr/nginx\/\d+\.\d+\.\d+/; +my $re = qr/\w+\/\d+\.\d+\.\d+/; like(http_get_server('/200'), $re, 'tokens default 200'); like(http_get_server('/404'), $re, 'tokens default 404'); like(http_body('/404'), $re, 'tokens default 404 body'); -is(http_get_server('/off/200'), 'nginx', 'tokens off 200'); -is(http_get_server('/off/404'), 'nginx', 'tokens off 404'); -like(http_body('/off/404'), qr/nginx(?!\/)/, 'tokens off 404 body'); +like(http_get_server('/off/200'), qr/^\w+$/, 'tokens off 200'); +like(http_get_server('/off/404'), qr/^\w+$/, 'tokens off 404'); +unlike(http_body('/off/404'), $re, 'tokens off 404 body'); like(http_get_server('/on/200'), $re, 'tokens on 200'); like(http_get_server('/on/404'), $re, 'tokens on 404'); From mdounin at mdounin.ru Thu Feb 29 18:23:20 2024 From: mdounin at mdounin.ru (=?iso-8859-1?q?Maxim_Dounin?=) Date: Thu, 29 Feb 2024 21:23:20 +0300 Subject: [nginx] Fixed server name in special responses with "server_toke... Message-ID: details: http://freenginx.org/hg/nginx/rev/697f452bc033 branches: changeset: 9223:697f452bc033 user: Maxim Dounin date: Thu Feb 29 19:24:26 2024 +0300 description: Fixed server name in special responses with "server_tokens off;". Missed in 9213:23f109f0facc. Reported by Antanas Pata?ius. diffstat: src/http/ngx_http_special_response.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diffs (12 lines): diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c --- a/src/http/ngx_http_special_response.c +++ b/src/http/ngx_http_special_response.c @@ -33,7 +33,7 @@ static u_char ngx_http_error_build_tail[ static u_char ngx_http_error_tail[] = -"
nginx
" CRLF +"
" NGINX_NAME "
" CRLF "" CRLF "" CRLF ;