1369Sdefan@nginx.com<?xml version="1.0" ?> 2369Sdefan@nginx.com<!DOCTYPE change_log SYSTEM "changes.dtd" > 3369Sdefan@nginx.com 4369Sdefan@nginx.com 5369Sdefan@nginx.com<change_log title="unit"> 6369Sdefan@nginx.com 7369Sdefan@nginx.com 82029SN/A<changes apply="unit-php 92029SN/A unit-python unit-python2.7 102029SN/A unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 112029SN/A unit-python3.8 unit-python3.9 unit-python3.10 122029SN/A unit-go 132029SN/A unit-perl 142029SN/A unit-ruby 152029SN/A unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 162029SN/A unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18" 172129Szelenkov@nginx.com ver="1.28.0" rev="1" 182129Szelenkov@nginx.com date="" time="" 192135Sthresh@nginx.com packager="Nginx Packaging <nginx-packaging@f5.com>"> 202129Szelenkov@nginx.com 212129Szelenkov@nginx.com<change> 222129Szelenkov@nginx.com<para> 232129Szelenkov@nginx.comNGINX Unit updated to 1.28.0. 242129Szelenkov@nginx.com</para> 252129Szelenkov@nginx.com</change> 262129Szelenkov@nginx.com 272129Szelenkov@nginx.com</changes> 282129Szelenkov@nginx.com 292129Szelenkov@nginx.com 302129Szelenkov@nginx.com<changes apply="unit" ver="1.28.0" rev="1" 312129Szelenkov@nginx.com date="" time="" 322135Sthresh@nginx.com packager="Nginx Packaging <nginx-packaging@f5.com>"> 332129Szelenkov@nginx.com 342133Sz.hong@f5.com<change type="feature"> 352133Sz.hong@f5.com<para> 36*2161Salx.manpages@gmail.comsupporting UNIX sockets in address matching. 37*2161Salx.manpages@gmail.com</para> 38*2161Salx.manpages@gmail.com</change> 39*2161Salx.manpages@gmail.com 40*2161Salx.manpages@gmail.com<change type="feature"> 41*2161Salx.manpages@gmail.com<para> 422133Sz.hong@f5.comforwarded header to replace client address and protocol. 432133Sz.hong@f5.com</para> 442133Sz.hong@f5.com</change> 452133Sz.hong@f5.com 462147Sz.hong@f5.com<change type="feature"> 472147Sz.hong@f5.com<para> 482147Sz.hong@f5.comability to get dynamic variables. 492147Sz.hong@f5.com</para> 502147Sz.hong@f5.com</change> 512147Sz.hong@f5.com 522149Sz.hong@f5.com<change type="feature"> 532149Sz.hong@f5.com<para> 542149Sz.hong@f5.commore http variables support. 552149Sz.hong@f5.com</para> 562149Sz.hong@f5.com</change> 572149Sz.hong@f5.com 58*2161Salx.manpages@gmail.com<change type="feature"> 59*2161Salx.manpages@gmail.com<para> 60*2161Salx.manpages@gmail.comadded a new variable, $dollar, that translates to a literal "$" during 61*2161Salx.manpages@gmail.com</para> 62*2161Salx.manpages@gmail.com</change> 63*2161Salx.manpages@gmail.com 642137Salx.manpages@gmail.com<change type="bugfix"> 652137Salx.manpages@gmail.com<para> 662137Salx.manpages@gmail.coman index file that didn't contain a file extension was incorrectly 672137Salx.manpages@gmail.comhandled, and caused a use-after-free bug. 682137Salx.manpages@gmail.com</para> 692137Salx.manpages@gmail.com</change> 702137Salx.manpages@gmail.com 712145Stippexs91@googlemail.com<change type="change"> 722145Stippexs91@googlemail.com<para> 732145Stippexs91@googlemail.comincreased the applications' startup timeout. 742145Stippexs91@googlemail.com</para> 752145Stippexs91@googlemail.com</change> 762145Stippexs91@googlemail.com 772129Szelenkov@nginx.com</changes> 782129Szelenkov@nginx.com 792129Szelenkov@nginx.com 802129Szelenkov@nginx.com<changes apply="unit-php 812129Szelenkov@nginx.com unit-python unit-python2.7 822129Szelenkov@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 832129Szelenkov@nginx.com unit-python3.8 unit-python3.9 unit-python3.10 842129Szelenkov@nginx.com unit-go 852129Szelenkov@nginx.com unit-perl 862129Szelenkov@nginx.com unit-ruby 872129Szelenkov@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 882129Szelenkov@nginx.com unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18" 892012Svbart@nginx.com ver="1.27.0" rev="1" 902127Szelenkov@nginx.com date="2022-06-02" time="18:00:00 +0300" 912012Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 922012Svbart@nginx.com 932012Svbart@nginx.com<change> 942012Svbart@nginx.com<para> 952012Svbart@nginx.comNGINX Unit updated to 1.27.0. 962012Svbart@nginx.com</para> 972012Svbart@nginx.com</change> 982012Svbart@nginx.com 992012Svbart@nginx.com</changes> 1002012Svbart@nginx.com 1012012Svbart@nginx.com 1022012Svbart@nginx.com<changes apply="unit" ver="1.27.0" rev="1" 1032127Szelenkov@nginx.com date="2022-06-02" time="18:00:00 +0300" 1042012Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 1052012Svbart@nginx.com 1062072Sz.hong@f5.com<change type="feature"> 1072072Sz.hong@f5.com<para> 1082108Salx.manpages@gmail.comability to specify a custom index file name when serving static files. 1092108Salx.manpages@gmail.com</para> 1102108Salx.manpages@gmail.com</change> 1112108Salx.manpages@gmail.com 1122108Salx.manpages@gmail.com<change type="feature"> 1132108Salx.manpages@gmail.com<para> 1142081Salx.manpages@gmail.comvariables support in the "location" option of the "return" action. 1152081Salx.manpages@gmail.com</para> 1162081Salx.manpages@gmail.com</change> 1172081Salx.manpages@gmail.com 1182081Salx.manpages@gmail.com<change type="feature"> 1192081Salx.manpages@gmail.com<para> 1202113Sartem.konev@nginx.comsupport empty strings in the "location" option of the "return" action. 1212113Sartem.konev@nginx.com</para> 1222113Sartem.konev@nginx.com</change> 1232113Sartem.konev@nginx.com 1242113Sartem.konev@nginx.com<change type="feature"> 1252113Sartem.konev@nginx.com<para> 1262113Sartem.konev@nginx.comadded a new variable, $request_uri, that includes both the path and the query 1272113Sartem.konev@nginx.comparts as per RFC 3986, sections 3-4. 1282113Sartem.konev@nginx.com</para> 1292113Sartem.konev@nginx.com</change> 1302113Sartem.konev@nginx.com 1312113Sartem.konev@nginx.com<change type="feature"> 1322113Sartem.konev@nginx.com<para> 1332113Sartem.konev@nginx.comRuby Rack environment parameter "SCRIPT_NAME" support. 1342110Salx.manpages@gmail.com</para> 1352110Salx.manpages@gmail.com</change> 1362110Salx.manpages@gmail.com 1372110Salx.manpages@gmail.com<change type="feature"> 1382110Salx.manpages@gmail.com<para> 1392072Sz.hong@f5.comcompatibility with GCC 12. 1402072Sz.hong@f5.com</para> 1412072Sz.hong@f5.com</change> 1422072Sz.hong@f5.com 1432060Smax.romanov@nginx.com<change type="bugfix"> 1442060Smax.romanov@nginx.com<para> 1452093Sz.hong@f5.comRuby Sinatra applications don't work without custom logging. 1462093Sz.hong@f5.com</para> 1472093Sz.hong@f5.com</change> 1482093Sz.hong@f5.com 1492093Sz.hong@f5.com<change type="bugfix"> 1502093Sz.hong@f5.com<para> 1512113Sartem.konev@nginx.comthe controller process could crash when a chain of more than four 1522069Sz.hong@f5.comcertificates was uploaded. 1532069Sz.hong@f5.com</para> 1542069Sz.hong@f5.com</change> 1552069Sz.hong@f5.com 1562069Sz.hong@f5.com<change type="bugfix"> 1572069Sz.hong@f5.com<para> 1582060Smax.romanov@nginx.comsome Perl applications failed to process the request body, notably with Plack. 1592060Smax.romanov@nginx.com</para> 1602060Smax.romanov@nginx.com</change> 1612060Smax.romanov@nginx.com 1622061Smax.romanov@nginx.com<change type="bugfix"> 1632061Smax.romanov@nginx.com<para> 1642061Smax.romanov@nginx.comsome Spring Boot applications failed to start, notably with Grails. 1652061Smax.romanov@nginx.com</para> 1662061Smax.romanov@nginx.com</change> 1672061Smax.romanov@nginx.com 1682067Smax.romanov@nginx.com<change type="bugfix"> 1692067Smax.romanov@nginx.com<para> 1702067Smax.romanov@nginx.comincorrect Python protocol auto detection (ASGI or WSGI) for native callable 1712067Smax.romanov@nginx.comobject, notably with Falcon. 1722067Smax.romanov@nginx.com</para> 1732067Smax.romanov@nginx.com</change> 1742067Smax.romanov@nginx.com 1752117Szelenkov@nginx.com<change type="bugfix"> 1762117Szelenkov@nginx.com<para> 1772117Szelenkov@nginx.comECMAScript modules did not work with the recent Node.js versions. 1782117Szelenkov@nginx.com</para> 1792117Szelenkov@nginx.com</change> 1802117Szelenkov@nginx.com 1812050Svbart@nginx.com</changes> 1822050Svbart@nginx.com 1832050Svbart@nginx.com 1842050Svbart@nginx.com<changes apply="unit-php 1852050Svbart@nginx.com unit-python unit-python2.7 1862050Svbart@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 1872050Svbart@nginx.com unit-python3.8 unit-python3.9 unit-python3.10 1882050Svbart@nginx.com unit-go 1892050Svbart@nginx.com unit-perl 1902050Svbart@nginx.com unit-ruby 1912050Svbart@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 1922050Svbart@nginx.com unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17 unit-jsc18" 1932029SN/A ver="1.26.1" rev="1" 1942045SN/A date="2021-12-02" time="18:00:00 +0300" 1952029SN/A packager="Andrei Belov <defan@nginx.com>"> 1962029SN/A 1972029SN/A<change> 1982029SN/A<para> 1992029SN/ANGINX Unit updated to 1.26.1. 2002029SN/A</para> 2012029SN/A</change> 2022029SN/A 2032029SN/A</changes> 2042029SN/A 2052029SN/A 2062029SN/A<changes apply="unit" ver="1.26.1" rev="1" 2072045SN/A date="2021-12-02" time="18:00:00 +0300" 2082029SN/A packager="Andrei Belov <defan@nginx.com>"> 2092029SN/A 2102033SN/A<change type="bugfix"> 2112033SN/A<para> 2122044SN/Aoccasionally, the Unit daemon was unable to fully terminate; the bug had 2132044SN/Aappeared in 1.26.0. 2142033SN/A</para> 2152033SN/A</change> 2162033SN/A 2172034SN/A<change type="bugfix"> 2182034SN/A<para> 2192044SN/Aa prototype process could crash on an application process exit; the bug had 2202034SN/Aappeared in 1.26.0. 2212034SN/A</para> 2222034SN/A</change> 2232034SN/A 2242035SN/A<change type="bugfix"> 2252035SN/A<para> 2262044SN/Athe router process crashed on reconfiguration if "access_log" was configured 2272044SN/Awithout listeners. 2282044SN/A</para> 2292044SN/A</change> 2302044SN/A 2312044SN/A<change type="bugfix"> 2322044SN/A<para> 2332035SN/Aa segmentation fault occurred in the PHP module if chdir() or 2342035SN/Afastcgi_finish_request() was called in the OPcache preloading script. 2352035SN/A</para> 2362035SN/A</change> 2372035SN/A 2382040SN/A<change type="bugfix"> 2392040SN/A<para> 2402041SN/Afatal errors on DragonFly BSD; the bug had appeared in 1.26.0. 2412041SN/A</para> 2422041SN/A</change> 2432041SN/A 2442029SN/A</changes> 2452029SN/A 2462029SN/A 2471973Sdefan@nginx.com<changes apply="unit-jsc18" ver="1.26.0" rev="1" 2482007Svbart@nginx.com date="2021-11-18" time="18:00:00 +0300" 2491973Sdefan@nginx.com packager="Andrei Belov <defan@nginx.com>"> 2501973Sdefan@nginx.com 2511973Sdefan@nginx.com<change> 2521973Sdefan@nginx.com<para> 2531973Sdefan@nginx.comInitial release of Java 18 module for NGINX Unit. 2541973Sdefan@nginx.com</para> 2551973Sdefan@nginx.com</change> 2561973Sdefan@nginx.com 2571973Sdefan@nginx.com</changes> 2581973Sdefan@nginx.com 2591973Sdefan@nginx.com 2601973Sdefan@nginx.com<changes apply="unit-python3.10" ver="1.26.0" rev="1" 2612007Svbart@nginx.com date="2021-11-18" time="18:00:00 +0300" 2621973Sdefan@nginx.com packager="Andrei Belov <defan@nginx.com>"> 2631973Sdefan@nginx.com 2641973Sdefan@nginx.com<change> 2651973Sdefan@nginx.com<para> 2661973Sdefan@nginx.comInitial release of Python 3.10 module for NGINX Unit. 2671973Sdefan@nginx.com</para> 2681973Sdefan@nginx.com</change> 2691973Sdefan@nginx.com 2701973Sdefan@nginx.com</changes> 2711973Sdefan@nginx.com 2721973Sdefan@nginx.com 2731896Svbart@nginx.com<changes apply="unit-php 2741896Svbart@nginx.com unit-python unit-python2.7 2751896Svbart@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 2761896Svbart@nginx.com unit-python3.8 unit-python3.9 2771896Svbart@nginx.com unit-go 2781896Svbart@nginx.com unit-perl 2791896Svbart@nginx.com unit-ruby 2801896Svbart@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 2811896Svbart@nginx.com unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17" 2821951Svbart@nginx.com ver="1.26.0" rev="1" 2832007Svbart@nginx.com date="2021-11-18" time="18:00:00 +0300" 2841951Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 2851951Svbart@nginx.com 2861951Svbart@nginx.com<change> 2871951Svbart@nginx.com<para> 2881951Svbart@nginx.comNGINX Unit updated to 1.26.0. 2891951Svbart@nginx.com</para> 2901951Svbart@nginx.com</change> 2911951Svbart@nginx.com 2921951Svbart@nginx.com</changes> 2931951Svbart@nginx.com 2941951Svbart@nginx.com 2951951Svbart@nginx.com<changes apply="unit" ver="1.26.0" rev="1" 2962007Svbart@nginx.com date="2021-11-18" time="18:00:00 +0300" 2971951Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 2981951Svbart@nginx.com 2991960Sz.hong@f5.com<change type="change"> 3001960Sz.hong@f5.com<para> 3011960Sz.hong@f5.comthe "share" option now specifies the entire path to the files it serves, 3021960Sz.hong@f5.comrather than a document root directory to be prepended to the request URI. 3031960Sz.hong@f5.com</para> 3041960Sz.hong@f5.com</change> 3051960Sz.hong@f5.com 3061960Sz.hong@f5.com<change type="feature"> 3071960Sz.hong@f5.com<para> 3082006Svbart@nginx.comautomatic adjustment of existing configurations to the new "share" behavior 3092006Svbart@nginx.comwhen updating from previous versions. 3102006Svbart@nginx.com</para> 3112006Svbart@nginx.com</change> 3122006Svbart@nginx.com 3132006Svbart@nginx.com<change type="feature"> 3142006Svbart@nginx.com<para> 3151960Sz.hong@f5.comvariables support in the "share" option. 3161960Sz.hong@f5.com</para> 3171960Sz.hong@f5.com</change> 3181960Sz.hong@f5.com 3191959Sz.hong@f5.com<change type="feature"> 3201959Sz.hong@f5.com<para> 3211961Sz.hong@f5.commultiple paths in the "share" option. 3221961Sz.hong@f5.com</para> 3231961Sz.hong@f5.com</change> 3241961Sz.hong@f5.com 3251961Sz.hong@f5.com<change type="feature"> 3261961Sz.hong@f5.com<para> 3271959Sz.hong@f5.comvariables support in the "chroot" option. 3281959Sz.hong@f5.com</para> 3291959Sz.hong@f5.com</change> 3301959Sz.hong@f5.com 3311969Sz.hong@f5.com<change type="feature"> 3321969Sz.hong@f5.com<para> 3332006Svbart@nginx.comPHP opcache is shared between application processes. 3341969Sz.hong@f5.com</para> 3351969Sz.hong@f5.com</change> 3361969Sz.hong@f5.com 3371991Sz.hong@f5.com<change type="feature"> 3381991Sz.hong@f5.com<para> 3391991Sz.hong@f5.comrequest routing by the query string. 3401991Sz.hong@f5.com</para> 3411991Sz.hong@f5.com</change> 3421991Sz.hong@f5.com 3431955Smax.romanov@nginx.com<change type="bugfix"> 3441955Smax.romanov@nginx.com<para> 3452006Svbart@nginx.comthe router and app processes could crash when the requests limit was reached 3462006Svbart@nginx.comby asynchronous or multithreaded apps. 3471955Smax.romanov@nginx.com</para> 3481955Smax.romanov@nginx.com</change> 3491955Smax.romanov@nginx.com 3501956Smax.romanov@nginx.com<change type="bugfix"> 3511956Smax.romanov@nginx.com<para> 3521956Smax.romanov@nginx.comestablished WebSocket connections could stop reading frames from the client 3531956Smax.romanov@nginx.comafter the corresponding listener had been reconfigured. 3541956Smax.romanov@nginx.com</para> 3551956Smax.romanov@nginx.com</change> 3561956Smax.romanov@nginx.com 3571992Smax.romanov@nginx.com<change type="bugfix"> 3581992Smax.romanov@nginx.com<para> 3592006Svbart@nginx.comfixed building with glibc 2.34, notably Fedora 35. 3601992Smax.romanov@nginx.com</para> 3611992Smax.romanov@nginx.com</change> 3621992Smax.romanov@nginx.com 3631951Svbart@nginx.com</changes> 3641951Svbart@nginx.com 3651951Svbart@nginx.com 3661951Svbart@nginx.com<changes apply="unit-php 3671951Svbart@nginx.com unit-python unit-python2.7 3681951Svbart@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 3691951Svbart@nginx.com unit-python3.8 unit-python3.9 3701951Svbart@nginx.com unit-go 3711951Svbart@nginx.com unit-perl 3721951Svbart@nginx.com unit-ruby 3731951Svbart@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 3741951Svbart@nginx.com unit-jsc14 unit-jsc15 unit-jsc16 unit-jsc17" 3751896Svbart@nginx.com ver="1.25.0" rev="1" 3761945Svbart@nginx.com date="2021-08-19" time="18:00:00 +0300" 3771896Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 3781896Svbart@nginx.com 3791896Svbart@nginx.com<change> 3801896Svbart@nginx.com<para> 3811896Svbart@nginx.comNGINX Unit updated to 1.25.0. 3821896Svbart@nginx.com</para> 3831896Svbart@nginx.com</change> 3841896Svbart@nginx.com 3851896Svbart@nginx.com</changes> 3861896Svbart@nginx.com 3871896Svbart@nginx.com 3881896Svbart@nginx.com<changes apply="unit" ver="1.25.0" rev="1" 3891945Svbart@nginx.com date="2021-08-19" time="18:00:00 +0300" 3901896Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 3911896Svbart@nginx.com 3921910So.canty@f5.com<change type="feature"> 3931910So.canty@f5.com<para> 3941944Svbart@nginx.comclient IP address replacement from a specified HTTP header field. 3951942Sa.suvorov@f5.com</para> 3961942Sa.suvorov@f5.com</change> 3971942Sa.suvorov@f5.com 3981942Sa.suvorov@f5.com<change type="feature"> 3991942Sa.suvorov@f5.com<para> 4001920Sa.suvorov@f5.comTLS sessions cache. 4011920Sa.suvorov@f5.com</para> 4021920Sa.suvorov@f5.com</change> 4031920Sa.suvorov@f5.com 4041920Sa.suvorov@f5.com<change type="feature"> 4051920Sa.suvorov@f5.com<para> 4061944Svbart@nginx.comTLS session tickets. 4071910So.canty@f5.com</para> 4081910So.canty@f5.com</change> 4091910So.canty@f5.com 4101926Smax.romanov@nginx.com<change type="feature"> 4111926Smax.romanov@nginx.com<para> 4121926Smax.romanov@nginx.comapplication restart control. 4131926Smax.romanov@nginx.com</para> 4141926Smax.romanov@nginx.com</change> 4151926Smax.romanov@nginx.com 4161936So.canty@f5.com<change type="feature"> 4171936So.canty@f5.com<para> 4181944Svbart@nginx.comprocess and thread lifecycle hooks in Ruby. 4191936So.canty@f5.com</para> 4201936So.canty@f5.com</change> 4211936So.canty@f5.com 4221907Smax.romanov@nginx.com<change type="bugfix"> 4231907Smax.romanov@nginx.com<para> 4241944Svbart@nginx.comthe router process could crash on TLS connection open when multiple listeners 4251944Svbart@nginx.comwith TLS certificates were configured; the bug had appeared in 1.23.0. 4261921Sa.suvorov@f5.com</para> 4271921Sa.suvorov@f5.com</change> 4281921Sa.suvorov@f5.com 4291921Sa.suvorov@f5.com<change type="bugfix"> 4301921Sa.suvorov@f5.com<para> 4311944Svbart@nginx.comTLS connections were rejected for configurations with multiple certificate 4321944Svbart@nginx.combundles in a listener if the client did not use SNI. 4331907Smax.romanov@nginx.com</para> 4341907Smax.romanov@nginx.com</change> 4351907Smax.romanov@nginx.com 4361907Smax.romanov@nginx.com<change type="bugfix"> 4371907Smax.romanov@nginx.com<para> 4381950Sartem.konev@nginx.comthe router process could crash with frequent multithreaded application 4391915Smax.romanov@nginx.comreconfiguration. 4401915Smax.romanov@nginx.com</para> 4411915Smax.romanov@nginx.com</change> 4421915Smax.romanov@nginx.com 4431915Smax.romanov@nginx.com<change type="bugfix"> 4441915Smax.romanov@nginx.com<para> 4451944Svbart@nginx.comcompatibility issues with some Python ASGI apps, notably based on the Starlette 4461944Svbart@nginx.comframework. 4471944Svbart@nginx.com</para> 4481944Svbart@nginx.com</change> 4491944Svbart@nginx.com 4501944Svbart@nginx.com<change type="bugfix"> 4511944Svbart@nginx.com<para> 4521944Svbart@nginx.coma descriptor and memory leak occurred in the router process when an app process 4531944Svbart@nginx.comstopped or crashed. 4541907Smax.romanov@nginx.com</para> 4551907Smax.romanov@nginx.com</change> 4561907Smax.romanov@nginx.com 4571909So.canty@f5.com<change type="bugfix"> 4581909So.canty@f5.com<para> 4591909So.canty@f5.comthe controller or router process could crash if the configuration contained 4601909So.canty@f5.coma full-form IPv6 in a listener address. 4611909So.canty@f5.com</para> 4621909So.canty@f5.com</change> 4631909So.canty@f5.com 4641916Smax.romanov@nginx.com<change type="bugfix"> 4651916Smax.romanov@nginx.com<para> 4661929Sz.hong@f5.comthe router process crashed when a request was passed to an empty "routes" 4671929Sz.hong@f5.comor "upstreams" using a variable "pass" option. 4681929Sz.hong@f5.com</para> 4691929Sz.hong@f5.com</change> 4701929Sz.hong@f5.com 4711930So.canty@f5.com<change type="bugfix"> 4721930So.canty@f5.com<para> 4731944Svbart@nginx.comthe router process crashed while matching a request to an empty array of source 4741944Svbart@nginx.comor destination address patterns. 4751930So.canty@f5.com</para> 4761930So.canty@f5.com</change> 4771930So.canty@f5.com 4781896Svbart@nginx.com</changes> 4791896Svbart@nginx.com 4801896Svbart@nginx.com 4811887Sdefan@nginx.com<changes apply="unit-jsc17" ver="1.24.0" rev="1" 4821891Svbart@nginx.com date="2021-05-27" time="18:00:00 +0300" 4831887Sdefan@nginx.com packager="Andrei Belov <defan@nginx.com>"> 4841887Sdefan@nginx.com 4851887Sdefan@nginx.com<change> 4861887Sdefan@nginx.com<para> 4871887Sdefan@nginx.comInitial release of Java 17 module for NGINX Unit. 4881887Sdefan@nginx.com</para> 4891887Sdefan@nginx.com</change> 4901887Sdefan@nginx.com 4911887Sdefan@nginx.com</changes> 4921887Sdefan@nginx.com 4931887Sdefan@nginx.com 4941887Sdefan@nginx.com<changes apply="unit-jsc16" ver="1.24.0" rev="1" 4951891Svbart@nginx.com date="2021-05-27" time="18:00:00 +0300" 4961887Sdefan@nginx.com packager="Andrei Belov <defan@nginx.com>"> 4971887Sdefan@nginx.com 4981887Sdefan@nginx.com<change> 4991887Sdefan@nginx.com<para> 5001887Sdefan@nginx.comInitial release of Java 16 module for NGINX Unit. 5011887Sdefan@nginx.com</para> 5021887Sdefan@nginx.com</change> 5031887Sdefan@nginx.com 5041887Sdefan@nginx.com</changes> 5051887Sdefan@nginx.com 5061887Sdefan@nginx.com 5071834Svbart@nginx.com<changes apply="unit-php 5081834Svbart@nginx.com unit-python unit-python2.7 5091834Svbart@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 5101834Svbart@nginx.com unit-python3.8 unit-python3.9 5111834Svbart@nginx.com unit-go 5121834Svbart@nginx.com unit-perl 5131834Svbart@nginx.com unit-ruby 5141834Svbart@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 5151834Svbart@nginx.com unit-jsc14 unit-jsc15" 5161839Svbart@nginx.com ver="1.24.0" rev="1" 5171891Svbart@nginx.com date="2021-05-27" time="18:00:00 +0300" 5181839Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 5191839Svbart@nginx.com 5201839Svbart@nginx.com<change> 5211839Svbart@nginx.com<para> 5221839Svbart@nginx.comNGINX Unit updated to 1.24.0. 5231839Svbart@nginx.com</para> 5241839Svbart@nginx.com</change> 5251839Svbart@nginx.com 5261839Svbart@nginx.com</changes> 5271839Svbart@nginx.com 5281839Svbart@nginx.com 5291839Svbart@nginx.com<changes apply="unit" ver="1.24.0" rev="1" 5301891Svbart@nginx.com date="2021-05-27" time="18:00:00 +0300" 5311839Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 5321839Svbart@nginx.com 5331882So.canty@f5.com<change type="change"> 5341882So.canty@f5.com<para> 5351882So.canty@f5.comPHP added to the default MIME type list. 5361882So.canty@f5.com</para> 5371882So.canty@f5.com</change> 5381882So.canty@f5.com 5391855Sz.hong@f5.com<change type="feature"> 5401855Sz.hong@f5.com<para> 5411885Sa.suvorov@f5.comarbitrary configuration of TLS connections via OpenSSL commands. 5421885Sa.suvorov@f5.com</para> 5431885Sa.suvorov@f5.com</change> 5441885Sa.suvorov@f5.com 5451885Sa.suvorov@f5.com<change type="feature"> 5461885Sa.suvorov@f5.com<para> 5471890Svbart@nginx.comthe ability to limit static file serving by MIME types. 5481890Svbart@nginx.com</para> 5491890Svbart@nginx.com</change> 5501890Svbart@nginx.com 5511890Svbart@nginx.com<change type="feature"> 5521890Svbart@nginx.com<para> 5531890Svbart@nginx.comsupport for chrooting, rejecting symlinks, and rejecting mount 5541890Svbart@nginx.compoint traversal on a per-request basis when serving static files. 5551872So.canty@f5.com</para> 5561872So.canty@f5.com</change> 5571872So.canty@f5.com 5581872So.canty@f5.com<change type="feature"> 5591872So.canty@f5.com<para> 5601889Sartem.konev@nginx.coma loader for automatically overriding the "http" and "websocket" modules in 5611889Sartem.konev@nginx.comNode.js. 5621865So.canty@f5.com</para> 5631865So.canty@f5.com</change> 5641865So.canty@f5.com 5651865So.canty@f5.com<change type="feature"> 5661865So.canty@f5.com<para> 5671890Svbart@nginx.commultiple "targets" in Python applications. 5681855Sz.hong@f5.com</para> 5691855Sz.hong@f5.com</change> 5701855Sz.hong@f5.com 5711870So.canty@f5.com<change type="feature"> 5721870So.canty@f5.com<para> 5731870So.canty@f5.comcompatibility with Ruby 3.0. 5741870So.canty@f5.com</para> 5751870So.canty@f5.com</change> 5761870So.canty@f5.com 5771861Svbart@nginx.com<change type="bugfix"> 5781861Svbart@nginx.com<para> 5791889Sartem.konev@nginx.comthe router process could crash while closing a TLS connection. 5801884Sa.suvorov@f5.com</para> 5811884Sa.suvorov@f5.com</change> 5821884Sa.suvorov@f5.com 5831884Sa.suvorov@f5.com<change type="bugfix"> 5841884Sa.suvorov@f5.com<para> 5851861Svbart@nginx.coma segmentation fault might have occurred in the PHP module if 5861861Svbart@nginx.comfastcgi_finish_request() was used with the "auto_globals_jit" option enabled. 5871861Svbart@nginx.com</para> 5881861Svbart@nginx.com</change> 5891861Svbart@nginx.com 5901839Svbart@nginx.com</changes> 5911839Svbart@nginx.com 5921839Svbart@nginx.com 5931839Svbart@nginx.com<changes apply="unit-php 5941839Svbart@nginx.com unit-python unit-python2.7 5951839Svbart@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 5961839Svbart@nginx.com unit-python3.8 unit-python3.9 5971839Svbart@nginx.com unit-go 5981839Svbart@nginx.com unit-perl 5991839Svbart@nginx.com unit-ruby 6001839Svbart@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 6011839Svbart@nginx.com unit-jsc14 unit-jsc15" 6021834Svbart@nginx.com ver="1.23.0" rev="1" 6031834Svbart@nginx.com date="2021-03-25" time="18:00:00 +0300" 6041834Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 6051834Svbart@nginx.com 6061834Svbart@nginx.com<change> 6071834Svbart@nginx.com<para> 6081834Svbart@nginx.comNGINX Unit updated to 1.23.0. 6091834Svbart@nginx.com</para> 6101834Svbart@nginx.com</change> 6111834Svbart@nginx.com 6121834Svbart@nginx.com</changes> 6131834Svbart@nginx.com 6141834Svbart@nginx.com 6151806Svbart@nginx.com<changes apply="unit" ver="1.23.0" rev="1" 6161834Svbart@nginx.com date="2021-03-25" time="18:00:00 +0300" 6171806Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 6181806Svbart@nginx.com 6191825Sthresh@nginx.com<change type="feature"> 6201825Sthresh@nginx.com<para> 6211833Sartem.konev@nginx.comsupport for multiple certificate bundles on a listener via the Server Name 6221828Sa.suvorov@f5.comIndication (SNI) TLS extension. 6231828Sa.suvorov@f5.com</para> 6241828Sa.suvorov@f5.com</change> 6251828Sa.suvorov@f5.com 6261828Sa.suvorov@f5.com<change type="feature"> 6271828Sa.suvorov@f5.com<para> 6281833Sartem.konev@nginx.com"--mandir" ./configure option to specify the directory for man page 6291833Sartem.konev@nginx.cominstallation. 6301825Sthresh@nginx.com</para> 6311825Sthresh@nginx.com</change> 6321825Sthresh@nginx.com 6331811Smax.romanov@nginx.com<change type="bugfix"> 6341811Smax.romanov@nginx.com<para> 6351812Svbart@nginx.comthe router process could crash on premature TLS connection close; the bug had 6361812Svbart@nginx.comappeared in 1.17.0. 6371812Svbart@nginx.com</para> 6381812Svbart@nginx.com</change> 6391812Svbart@nginx.com 6401812Svbart@nginx.com<change type="bugfix"> 6411812Svbart@nginx.com<para> 6421833Sartem.konev@nginx.coma connection leak occurred on premature TLS connection close; the bug had 6431812Svbart@nginx.comappeared in 1.6. 6441812Svbart@nginx.com</para> 6451812Svbart@nginx.com</change> 6461812Svbart@nginx.com 6471812Svbart@nginx.com<change type="bugfix"> 6481812Svbart@nginx.com<para> 6491833Sartem.konev@nginx.coma descriptor and memory leak occurred in the router process when processing 6501832Smax.romanov@nginx.comsmall WebSocket frames from a client; the bug had appeared in 1.19.0. 6511832Smax.romanov@nginx.com</para> 6521832Smax.romanov@nginx.com</change> 6531832Smax.romanov@nginx.com 6541832Smax.romanov@nginx.com<change type="bugfix"> 6551832Smax.romanov@nginx.com<para> 6561833Sartem.konev@nginx.coma descriptor leak occurred in the router process when removing or 6571811Smax.romanov@nginx.comreconfiguring an application; the bug had appeared in 1.19.0. 6581811Smax.romanov@nginx.com</para> 6591811Smax.romanov@nginx.com</change> 6601806Svbart@nginx.com 6611813Svbart@nginx.com<change type="bugfix"> 6621813Svbart@nginx.com<para> 6631813Svbart@nginx.compersistent storage of certificates might've not worked with some filesystems in 6641813Svbart@nginx.comLinux, and all uploaded certificate bundles were forgotten after restart. 6651813Svbart@nginx.com</para> 6661813Svbart@nginx.com</change> 6671813Svbart@nginx.com 6681814Svbart@nginx.com<change type="bugfix"> 6691814Svbart@nginx.com<para> 6701820Svbart@nginx.comthe controller process could crash while requesting information about a 6711820Svbart@nginx.comcertificate with a non-DNS SAN entry. 6721820Svbart@nginx.com</para> 6731820Svbart@nginx.com</change> 6741820Svbart@nginx.com 6751820Svbart@nginx.com<change type="bugfix"> 6761820Svbart@nginx.com<para> 6771822Svbart@nginx.comthe controller process could crash on manipulations with a certificate 6781833Sartem.konev@nginx.comcontaining a SAN and no standard name attributes in subject or issuer. 6791822Svbart@nginx.com</para> 6801822Svbart@nginx.com</change> 6811822Svbart@nginx.com 6821822Svbart@nginx.com<change type="bugfix"> 6831822Svbart@nginx.com<para> 6841833Sartem.konev@nginx.comthe Ruby module didn't respect the user locale for defaults in the Encoding 6851833Sartem.konev@nginx.comclass. 6861814Svbart@nginx.com</para> 6871814Svbart@nginx.com</change> 6881814Svbart@nginx.com 6891815Svbart@nginx.com<change type="bugfix"> 6901815Svbart@nginx.com<para> 6911815Svbart@nginx.comthe PHP 5 module failed to build with thread safety enabled; the bug had 6921815Svbart@nginx.comappeared in 1.22.0. 6931815Svbart@nginx.com</para> 6941815Svbart@nginx.com</change> 6951815Svbart@nginx.com 6961806Svbart@nginx.com</changes> 6971806Svbart@nginx.com 6981806Svbart@nginx.com 6991798Sdefan@nginx.com<changes apply="unit-python3.9" ver="1.22.0" rev="1" 7001798Sdefan@nginx.com date="2021-02-04" time="18:00:00 +0300" 7011798Sdefan@nginx.com packager="Andrei Belov <defan@nginx.com>"> 7021798Sdefan@nginx.com 7031798Sdefan@nginx.com<change> 7041798Sdefan@nginx.com<para> 7051798Sdefan@nginx.comInitial release of Python 3.9 module for NGINX Unit. 7061798Sdefan@nginx.com</para> 7071798Sdefan@nginx.com</change> 7081798Sdefan@nginx.com 7091798Sdefan@nginx.com</changes> 7101798Sdefan@nginx.com 7111798Sdefan@nginx.com 7121763Sdefan@nginx.com<changes apply="unit-php 7131763Sdefan@nginx.com unit-python unit-python2.7 7141763Sdefan@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 7151763Sdefan@nginx.com unit-python3.8 7161763Sdefan@nginx.com unit-go 7171763Sdefan@nginx.com unit-perl 7181763Sdefan@nginx.com unit-ruby 7191763Sdefan@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11 unit-jsc13 7201763Sdefan@nginx.com unit-jsc14 unit-jsc15" 7211763Sdefan@nginx.com ver="1.22.0" rev="1" 7221793Svbart@nginx.com date="2021-02-04" time="18:00:00 +0300" 7231763Sdefan@nginx.com packager="Andrei Belov <defan@nginx.com>"> 7241763Sdefan@nginx.com 7251763Sdefan@nginx.com<change> 7261763Sdefan@nginx.com<para> 7271763Sdefan@nginx.comNGINX Unit updated to 1.22.0. 7281763Sdefan@nginx.com</para> 7291763Sdefan@nginx.com</change> 7301763Sdefan@nginx.com 7311763Sdefan@nginx.com</changes> 7321763Sdefan@nginx.com 7331763Sdefan@nginx.com 7341727Svbart@nginx.com<changes apply="unit" ver="1.22.0" rev="1" 7351793Svbart@nginx.com date="2021-02-04" time="18:00:00 +0300" 7361727Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 7371727Svbart@nginx.com 7381759Svbart@nginx.com<change type="feature"> 7391759Svbart@nginx.com<para> 7401792Svbart@nginx.comthe ServerRequest and ServerResponse objects of Node.js module are now 7411792Svbart@nginx.comcompliant with Stream API. 7421759Svbart@nginx.com</para> 7431759Svbart@nginx.com</change> 7441759Svbart@nginx.com 7451766Smax.romanov@nginx.com<change type="feature"> 7461766Smax.romanov@nginx.com<para> 7471792Svbart@nginx.comsupport for specifying multiple directories in the "path" option of Python 7481792Svbart@nginx.comapps. 7491732Svbart@nginx.com</para> 7501732Svbart@nginx.com</change> 7511732Svbart@nginx.com 7521733Svbart@nginx.com<change type="bugfix"> 7531733Svbart@nginx.com<para> 7541792Svbart@nginx.coma memory leak occurred in the router process when serving files larger than 7551792Svbart@nginx.com128K; the bug had appeared in 1.13.0. 7561754Smax.romanov@nginx.com</para> 7571754Smax.romanov@nginx.com</change> 7581754Smax.romanov@nginx.com 7591755Smax.romanov@nginx.com<change type="bugfix"> 7601755Smax.romanov@nginx.com<para> 7611790Sartem.konev@nginx.comapps could stop processing new requests under high load; the bug had 7621755Smax.romanov@nginx.comappeared in 1.19.0. 7631755Smax.romanov@nginx.com</para> 7641755Smax.romanov@nginx.com</change> 7651755Smax.romanov@nginx.com 7661756Smax.romanov@nginx.com<change type="bugfix"> 7671756Smax.romanov@nginx.com<para> 7681790Sartem.konev@nginx.comapp processes could terminate unexpectedly under high load; the bug had 7691790Sartem.konev@nginx.comappeared in 1.19.0. 7701756Smax.romanov@nginx.com</para> 7711756Smax.romanov@nginx.com</change> 7721756Smax.romanov@nginx.com 7731760Smax.romanov@nginx.com<change type="bugfix"> 7741760Smax.romanov@nginx.com<para> 7751792Svbart@nginx.cominvalid HTTP responses were generated for some unusual status codes. 7761792Svbart@nginx.com</para> 7771792Svbart@nginx.com</change> 7781792Svbart@nginx.com 7791792Svbart@nginx.com<change type="bugfix"> 7801792Svbart@nginx.com<para> 7811792Svbart@nginx.comthe PHP_AUTH_USER, PHP_AUTH_PW, and PHP_AUTH_DIGEST server variables were 7821792Svbart@nginx.commissing in the PHP module. 7831792Svbart@nginx.com</para> 7841792Svbart@nginx.com</change> 7851792Svbart@nginx.com 7861792Svbart@nginx.com<change type="bugfix"> 7871792Svbart@nginx.com<para> 7881792Svbart@nginx.comthe router process could crash with multithreaded apps under high load. 7891792Svbart@nginx.com</para> 7901792Svbart@nginx.com</change> 7911792Svbart@nginx.com 7921792Svbart@nginx.com<change type="bugfix"> 7931792Svbart@nginx.com<para> 7941792Svbart@nginx.comRuby apps with multithreading configured could crash on start under load. 7951792Svbart@nginx.com</para> 7961792Svbart@nginx.com</change> 7971792Svbart@nginx.com 7981792Svbart@nginx.com<change type="bugfix"> 7991792Svbart@nginx.com<para> 8001792Svbart@nginx.commount points weren't unmounted when the "mount" namespace isolation was used; 8011792Svbart@nginx.comthe bug had appeared in 1.21.0. 8021760Smax.romanov@nginx.com</para> 8031760Smax.romanov@nginx.com</change> 8041760Smax.romanov@nginx.com 8051780Smax.romanov@nginx.com<change type="bugfix"> 8061780Smax.romanov@nginx.com<para> 8071790Sartem.konev@nginx.comthe router process could crash while removing or reconfiguring an app that used 8081790Sartem.konev@nginx.comWebSocket. 8091780Smax.romanov@nginx.com</para> 8101780Smax.romanov@nginx.com</change> 8111780Smax.romanov@nginx.com 8121789Smax.romanov@nginx.com<change type="bugfix"> 8131789Smax.romanov@nginx.com<para> 8141789Smax.romanov@nginx.coma memory leak occurring in the router process when removing or reconfiguring 8151789Smax.romanov@nginx.coman application; the bug had appeared in 1.19.0. 8161789Smax.romanov@nginx.com</para> 8171789Smax.romanov@nginx.com</change> 8181789Smax.romanov@nginx.com 8191727Svbart@nginx.com</changes> 8201727Svbart@nginx.com 8211727Svbart@nginx.com 8221722Svbart@nginx.com<changes apply="unit-jsc15" ver="1.21.0" rev="1" 8231722Svbart@nginx.com date="2020-11-19" time="18:00:00 +0300" 8241722Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 8251722Svbart@nginx.com 8261722Svbart@nginx.com<change> 8271722Svbart@nginx.com<para> 8281722Svbart@nginx.comInitial release of Java 15 module for NGINX Unit. 8291722Svbart@nginx.com</para> 8301722Svbart@nginx.com</change> 8311722Svbart@nginx.com 8321722Svbart@nginx.com</changes> 8331722Svbart@nginx.com 8341722Svbart@nginx.com 8351722Svbart@nginx.com<changes apply="unit-jsc14" ver="1.21.0" rev="1" 8361722Svbart@nginx.com date="2020-11-19" time="18:00:00 +0300" 8371722Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 8381722Svbart@nginx.com 8391722Svbart@nginx.com<change> 8401722Svbart@nginx.com<para> 8411722Svbart@nginx.comInitial release of Java 14 module for NGINX Unit. 8421722Svbart@nginx.com</para> 8431722Svbart@nginx.com</change> 8441722Svbart@nginx.com 8451722Svbart@nginx.com</changes> 8461722Svbart@nginx.com 8471722Svbart@nginx.com 8481722Svbart@nginx.com<changes apply="unit-jsc13" ver="1.21.0" rev="1" 8491722Svbart@nginx.com date="2020-11-19" time="18:00:00 +0300" 8501722Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 8511722Svbart@nginx.com 8521722Svbart@nginx.com<change> 8531722Svbart@nginx.com<para> 8541722Svbart@nginx.comInitial release of Java 13 module for NGINX Unit. 8551722Svbart@nginx.com</para> 8561722Svbart@nginx.com</change> 8571722Svbart@nginx.com 8581722Svbart@nginx.com</changes> 8591722Svbart@nginx.com 8601722Svbart@nginx.com 8611722Svbart@nginx.com<changes apply="unit-php 8621722Svbart@nginx.com unit-python unit-python2.7 8631722Svbart@nginx.com unit-python3.4 unit-python3.5 unit-python3.6 unit-python3.7 8641722Svbart@nginx.com unit-python3.8 8651722Svbart@nginx.com unit-go 8661722Svbart@nginx.com unit-perl 8671722Svbart@nginx.com unit-ruby 8681722Svbart@nginx.com unit-jsc-common unit-jsc8 unit-jsc10 unit-jsc11" 8691722Svbart@nginx.com ver="1.21.0" rev="1" 8701722Svbart@nginx.com date="2020-11-19" time="18:00:00 +0300" 8711722Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 8721722Svbart@nginx.com 8731722Svbart@nginx.com<change> 8741722Svbart@nginx.com<para> 8751722Svbart@nginx.comNGINX Unit updated to 1.21.0. 8761722Svbart@nginx.com</para> 8771722Svbart@nginx.com</change> 8781722Svbart@nginx.com 8791722Svbart@nginx.com</changes> 8801722Svbart@nginx.com 8811722Svbart@nginx.com 8821722Svbart@nginx.com<changes apply="unit" ver="1.21.0" rev="1" 8831722Svbart@nginx.com date="2020-11-19" time="18:00:00 +0300" 8841722Svbart@nginx.com packager="Andrei Belov <defan@nginx.com>"> 8851722Svbart@nginx.com 8861722Svbart@nginx.com<change type="change"> 8871722Svbart@nginx.com<para> 8881722Svbart@nginx.comprocfs is mounted by default for all languages when "rootfs" isolation is used. 8891722Svbart@nginx.com</para> 8901722Svbart@nginx.com</change> 8911722Svbart@nginx.com 8921722Svbart@nginx.com<change type="change"> 8931722Svbart@nginx.com<para> 8941722Svbart@nginx.comany characters valid according to RFC 7230 are now allowed in HTTP header field 8951722Svbart@nginx.comnames. 8961722Svbart@nginx.com</para> 8971722Svbart@nginx.com</change> 8981722Svbart@nginx.com 8991722Svbart@nginx.com<change type="change"> 9001722Svbart@nginx.com<para> 9011722Svbart@nginx.comHTTP header fields with underscores ("_") are now discarded from requests by 9021722Svbart@nginx.comdefault. 9031722Svbart@nginx.com</para> 9041722Svbart@nginx.com</change> 9051722Svbart@nginx.com 9061722Svbart@nginx.com<change type="feature"> 9071722Svbart@nginx.com<para> 9081722Svbart@nginx.comoptional multithreaded request processing for Java, Python, Perl, and Ruby apps. 9091722Svbart@nginx.com</para> 9101722Svbart@nginx.com</change> 9111722Svbart@nginx.com 9121722Svbart@nginx.com<change type="feature"> 9131722Svbart@nginx.com<para> 9141722Svbart@nginx.comregular expressions in route matching patterns. 9151722Svbart@nginx.com</para> 9161722Svbart@nginx.com</change> 9171722Svbart@nginx.com 9181722Svbart@nginx.com<change type="feature"> 9191722Svbart@nginx.com<para> 9201722Svbart@nginx.comcompatibility with Python 3.9. 9211722Svbart@nginx.com</para> 9221722Svbart@nginx.com</change> 9231722Svbart@nginx.com 9241722Svbart@nginx.com<change type="feature"> 9251722Svbart@nginx.com<para> 9261722Svbart@nginx.comthe Python module now supports ASGI 2.0 legacy applications. 9271722Svbart@nginx.com</para> 9281722Svbart@nginx.com</change> 9291722Svbart@nginx.com 9301722Svbart@nginx.com<change type="feature"> 9311722Svbart@nginx.com<para> 9321722Svbart@nginx.comthe "protocol" option in Python applications aids choice between ASGI and WSGI. 9331722Svbart@nginx.com</para> 9341722Svbart@nginx.com</change> 9351722Svbart@nginx.com 9361722Svbart@nginx.com<change type="feature"> 9371722Svbart@nginx.com<para> 9381722Svbart@nginx.comthe fastcgi_finish_request() PHP function that finalizes request processing and 9391722Svbart@nginx.comcontinues code execution without holding onto the client connection. 9401722Svbart@nginx.com</para> 9411722Svbart@nginx.com</change> 9421722Svbart@nginx.com 9431722Svbart@nginx.com<change type="feature"> 9441722Svbart@nginx.com<para> 9451722Svbart@nginx.comthe "discard_unsafe_fields" HTTP option that enables discarding request header 9461722Svbart@nginx.comfields with irregular (but still valid) characters in the field name. 9471722Svbart@nginx.com</para> 9481722Svbart@nginx.com</change> 9491722Svbart@nginx.com 9501722Svbart@nginx.com<change type="feature"> 9511722Svbart@nginx.com<para> 9521722Svbart@nginx.comthe "procfs" and "tmpfs" automount isolation options to disable automatic 9531722Svbart@nginx.commounting of eponymous filesystems. 9541722Svbart@nginx.com</para> 9551722Svbart@nginx.com</change> 9561722Svbart@nginx.com 9571722Svbart@nginx.com<change type="bugfix"> 9581722Svbart@nginx.com<para> 9591722Svbart@nginx.comthe router process could crash when running Go applications under high load; 9601722Svbart@nginx.comthe bug had appeared in 1.19.0. 9611722Svbart@nginx.com</para> 9621722Svbart@nginx.com</change> 9631722Svbart@nginx.com 9641722Svbart@nginx.com<change type="bugfix"> 9651722Svbart@nginx.com<para> 9661722Svbart@nginx.comsome language dependencies could remain mounted after using "rootfs" isolation. 9671722Svbart@nginx.com</para> 968