{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":37912398,"defaultBranch":"master","name":"nginx","ownerLogin":"nginx","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2015-06-23T10:26:27.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1412239?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713883327.0","currentOid":""},"activityList":{"items":[{"before":"489e1e61912a808fdaffb4f513426cb285f267a3","after":"efc6a217b92985a1ee211b6bb7337cd2f62deb90","ref":"refs/heads/master","pushedAt":"2024-05-21T11:44:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Configure: fixed building libatomic test.\n\nUsing \"long *\" instead of \"AO_t *\" leads either to -Wincompatible-pointer-types\nor -Wpointer-sign warnings, depending on whether long and size_t are compatible\ntypes (e.g., ILP32 versus LP64 data models). Notably, -Wpointer-sign warnings\nare enabled by default in Clang only, and -Wincompatible-pointer-types is an\nerror starting from GCC 14.\n\nSigned-off-by: Edgar Bonet ","shortMessageHtmlLink":"Configure: fixed building libatomic test."}},{"before":"489e1e61912a808fdaffb4f513426cb285f267a3","after":"efc6a217b92985a1ee211b6bb7337cd2f62deb90","ref":"refs/heads/branches/default","pushedAt":"2024-05-21T11:44:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Configure: fixed building libatomic test.\n\nUsing \"long *\" instead of \"AO_t *\" leads either to -Wincompatible-pointer-types\nor -Wpointer-sign warnings, depending on whether long and size_t are compatible\ntypes (e.g., ILP32 versus LP64 data models). Notably, -Wpointer-sign warnings\nare enabled by default in Clang only, and -Wincompatible-pointer-types is an\nerror starting from GCC 14.\n\nSigned-off-by: Edgar Bonet ","shortMessageHtmlLink":"Configure: fixed building libatomic test."}},{"before":"6f7494081ae8a56664afb480eff583d639b60ab4","after":"489e1e61912a808fdaffb4f513426cb285f267a3","ref":"refs/heads/master","pushedAt":"2024-05-03T16:34:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream pass: disabled passing from or to udp.\n\nPassing from udp was not possible for the most part due to preread buffer\nrestriction. Passing to udp could occasionally work, but the connection would\nstill be bound to the original listen rbtree, which prevented it from being\ndeleted on connection closure.","shortMessageHtmlLink":"Stream pass: disabled passing from or to udp."}},{"before":"6f7494081ae8a56664afb480eff583d639b60ab4","after":"489e1e61912a808fdaffb4f513426cb285f267a3","ref":"refs/heads/branches/default","pushedAt":"2024-05-03T16:34:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream pass: disabled passing from or to udp.\n\nPassing from udp was not possible for the most part due to preread buffer\nrestriction. Passing to udp could occasionally work, but the connection would\nstill be bound to the original listen rbtree, which prevented it from being\ndeleted on connection closure.","shortMessageHtmlLink":"Stream pass: disabled passing from or to udp."}},{"before":"d8a849ae3c99ee5ca82c9a06074761e937dac6d6","after":"6f7494081ae8a56664afb480eff583d639b60ab4","ref":"refs/heads/master","pushedAt":"2024-05-03T16:31:11.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"SSL: fixed possible configuration overwrite loading \"engine:\" keys.\n\nWhen loading certificate keys via ENGINE_load_private_key() in runtime,\nit was possible to overwrite configuration on ENGINE_by_id() failure.\nOpenSSL documention doesn't describe errors in details, the only reason\nI found in the comment to example is when the engine is not available.","shortMessageHtmlLink":"SSL: fixed possible configuration overwrite loading \"engine:\" keys."}},{"before":"d8a849ae3c99ee5ca82c9a06074761e937dac6d6","after":"6f7494081ae8a56664afb480eff583d639b60ab4","ref":"refs/heads/branches/default","pushedAt":"2024-05-03T16:31:11.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"SSL: fixed possible configuration overwrite loading \"engine:\" keys.\n\nWhen loading certificate keys via ENGINE_load_private_key() in runtime,\nit was possible to overwrite configuration on ENGINE_by_id() failure.\nOpenSSL documention doesn't describe errors in details, the only reason\nI found in the comment to example is when the engine is not available.","shortMessageHtmlLink":"SSL: fixed possible configuration overwrite loading \"engine:\" keys."}},{"before":null,"after":"ea3f44e0129da6939e1c4802fd7ece530f894eb4","ref":"refs/heads/branches/stable-1.26","pushedAt":"2024-04-23T14:42:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"release-1.26.0 tag","shortMessageHtmlLink":"release-1.26.0 tag"}},{"before":"bf3e6538b93375e8ac49d3863f74ee7cbe588111","after":"d8a849ae3c99ee5ca82c9a06074761e937dac6d6","ref":"refs/heads/master","pushedAt":"2024-04-16T14:45:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"release-1.25.5 tag","shortMessageHtmlLink":"release-1.25.5 tag"}},{"before":"bf3e6538b93375e8ac49d3863f74ee7cbe588111","after":"d8a849ae3c99ee5ca82c9a06074761e937dac6d6","ref":"refs/heads/branches/default","pushedAt":"2024-04-16T14:45:10.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"release-1.25.5 tag","shortMessageHtmlLink":"release-1.25.5 tag"}},{"before":"92f99685717e857de9ffa96993601a90803eb0d8","after":"bf3e6538b93375e8ac49d3863f74ee7cbe588111","ref":"refs/heads/master","pushedAt":"2024-04-11T10:50:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream pass: limited the number of passes per connection.\n\nPreviously a cycle in pass configuration resulted in stack overflow.","shortMessageHtmlLink":"Stream pass: limited the number of passes per connection."}},{"before":"92f99685717e857de9ffa96993601a90803eb0d8","after":"bf3e6538b93375e8ac49d3863f74ee7cbe588111","ref":"refs/heads/branches/default","pushedAt":"2024-04-11T10:50:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream pass: limited the number of passes per connection.\n\nPreviously a cycle in pass configuration resulted in stack overflow.","shortMessageHtmlLink":"Stream pass: limited the number of passes per connection."}},{"before":"e3207a17f084c9eb7905ca0f2cfdb1df088fd165","after":"92f99685717e857de9ffa96993601a90803eb0d8","ref":"refs/heads/master","pushedAt":"2024-04-10T11:48:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"QUIC: fixed close timer processing with early data.\n\nThe ngx_quic_run() function uses qc->close timer to limit the handshake\nduration. Normally it is removed by ngx_quic_do_init_streams() which is\ncalled once when we are done with initial SSL processing.\n\nThe problem happens when the client sends early data and streams are\ninitialized in the ngx_quic_run() -> ngx_quic_handle_datagram() call.\nThe order of set/remove timer calls is now reversed; the close timer is\nset up and the timer fires when assigned, starting the unexpected connection\nclose process.\n\nThe fix is to skip setting the timer if streams were initialized during\nhandling of the initial datagram. The idle timer for quic is set anyway,\nand stream-related timeouts are managed by application layer.","shortMessageHtmlLink":"QUIC: fixed close timer processing with early data."}},{"before":"e3207a17f084c9eb7905ca0f2cfdb1df088fd165","after":"92f99685717e857de9ffa96993601a90803eb0d8","ref":"refs/heads/branches/default","pushedAt":"2024-04-10T11:48:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"QUIC: fixed close timer processing with early data.\n\nThe ngx_quic_run() function uses qc->close timer to limit the handshake\nduration. Normally it is removed by ngx_quic_do_init_streams() which is\ncalled once when we are done with initial SSL processing.\n\nThe problem happens when the client sends early data and streams are\ninitialized in the ngx_quic_run() -> ngx_quic_handle_datagram() call.\nThe order of set/remove timer calls is now reversed; the close timer is\nset up and the timer fires when assigned, starting the unexpected connection\nclose process.\n\nThe fix is to skip setting the timer if streams were initialized during\nhandling of the initial datagram. The idle timer for quic is set anyway,\nand stream-related timeouts are managed by application layer.","shortMessageHtmlLink":"QUIC: fixed close timer processing with early data."}},{"before":"5e79d98a59b6d094145200976077aa7ca34a84d0","after":"e3207a17f084c9eb7905ca0f2cfdb1df088fd165","ref":"refs/heads/master","pushedAt":"2024-03-27T17:47:23.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Configure: allow cross-compiling to Windows using Clang.\n\nSigned-off-by: Piotr Sikora ","shortMessageHtmlLink":"Configure: allow cross-compiling to Windows using Clang."}},{"before":"5e79d98a59b6d094145200976077aa7ca34a84d0","after":"e3207a17f084c9eb7905ca0f2cfdb1df088fd165","ref":"refs/heads/branches/default","pushedAt":"2024-03-27T17:47:23.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Configure: allow cross-compiling to Windows using Clang.\n\nSigned-off-by: Piotr Sikora ","shortMessageHtmlLink":"Configure: allow cross-compiling to Windows using Clang."}},{"before":"45e166b4a4a0e8d0e0f8adeb3438e4745261e8da","after":"5e79d98a59b6d094145200976077aa7ca34a84d0","ref":"refs/heads/master","pushedAt":"2024-03-25T14:47:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream: $server_name.","shortMessageHtmlLink":"Stream: $server_name."}},{"before":"45e166b4a4a0e8d0e0f8adeb3438e4745261e8da","after":"5e79d98a59b6d094145200976077aa7ca34a84d0","ref":"refs/heads/branches/default","pushedAt":"2024-03-25T14:47:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream: $server_name.","shortMessageHtmlLink":"Stream: $server_name."}},{"before":"a168b810e23627070271dc8bab61cfd6f0caddd7","after":"45e166b4a4a0e8d0e0f8adeb3438e4745261e8da","ref":"refs/heads/master","pushedAt":"2024-03-22T11:18:19.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream: moved fastopen compatibility check.\n\nThe move makes the code look similar to the corresponding code in http module.","shortMessageHtmlLink":"Stream: moved fastopen compatibility check."}},{"before":"a168b810e23627070271dc8bab61cfd6f0caddd7","after":"45e166b4a4a0e8d0e0f8adeb3438e4745261e8da","ref":"refs/heads/branches/default","pushedAt":"2024-03-22T11:18:19.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream: moved fastopen compatibility check.\n\nThe move makes the code look similar to the corresponding code in http module.","shortMessageHtmlLink":"Stream: moved fastopen compatibility check."}},{"before":"ef96f5835468ff8d40df29b0ddbc04ec1e5e1582","after":"a168b810e23627070271dc8bab61cfd6f0caddd7","ref":"refs/heads/master","pushedAt":"2024-03-21T13:41:13.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream: ngx_stream_pass_module.\n\nThe module allows to pass connections from Stream to other modules such as HTTP\nor Mail, as well as back to Stream. Previously, this was only possible with\nproxying. Connections with preread buffer read out from socket cannot be\npassed.\n\nThe module allows selective SSL termination based on SNI.\n\n stream {\n server {\n listen 8000 default_server;\n ssl_preread on;\n ...\n }\n\n server {\n listen 8000;\n server_name foo.example.com;\n pass 127.0.0.1:8001; # to HTTP\n }\n\n server {\n listen 8000;\n server_name bar.example.com;\n ...\n }\n }\n\n http {\n server {\n listen 8001 ssl;\n ...\n\n location / {\n root html;\n }\n }\n }","shortMessageHtmlLink":"Stream: ngx_stream_pass_module."}},{"before":"ef96f5835468ff8d40df29b0ddbc04ec1e5e1582","after":"a168b810e23627070271dc8bab61cfd6f0caddd7","ref":"refs/heads/branches/default","pushedAt":"2024-03-21T13:41:13.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Stream: ngx_stream_pass_module.\n\nThe module allows to pass connections from Stream to other modules such as HTTP\nor Mail, as well as back to Stream. Previously, this was only possible with\nproxying. Connections with preread buffer read out from socket cannot be\npassed.\n\nThe module allows selective SSL termination based on SNI.\n\n stream {\n server {\n listen 8000 default_server;\n ssl_preread on;\n ...\n }\n\n server {\n listen 8000;\n server_name foo.example.com;\n pass 127.0.0.1:8001; # to HTTP\n }\n\n server {\n listen 8000;\n server_name bar.example.com;\n ...\n }\n }\n\n http {\n server {\n listen 8001 ssl;\n ...\n\n location / {\n root html;\n }\n }\n }","shortMessageHtmlLink":"Stream: ngx_stream_pass_module."}},{"before":"ed47f72a85fb6279e2ba5d431f64ea4db695cf4e","after":"ef96f5835468ff8d40df29b0ddbc04ec1e5e1582","ref":"refs/heads/master","pushedAt":"2024-02-14T16:16:19.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"release-1.25.4 tag","shortMessageHtmlLink":"release-1.25.4 tag"}},{"before":"ed47f72a85fb6279e2ba5d431f64ea4db695cf4e","after":"ef96f5835468ff8d40df29b0ddbc04ec1e5e1582","ref":"refs/heads/branches/default","pushedAt":"2024-02-14T16:16:19.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"release-1.25.4 tag","shortMessageHtmlLink":"release-1.25.4 tag"}},{"before":"71a0a4acdbb9ed0a8ef269a28218365cde00415d","after":"ed47f72a85fb6279e2ba5d431f64ea4db695cf4e","ref":"refs/heads/master","pushedAt":"2024-02-14T14:12:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"QUIC: fixed unsent MTU probe acknowledgement.\n\nPreviously if an MTU probe send failed early in ngx_quic_frame_sendto()\ndue to allocation error or congestion control, the application level packet\nnumber was not increased, but was still saved as MTU probe packet number.\nLater when a packet with this number was acknowledged, the unsent MTU probe\nwas acknowledged as well. This could result in discovering a bigger MTU than\nsupported by the path, which could lead to EMSGSIZE (Message too long) errors\nwhile sending further packets.\n\nThe problem existed since PMTUD was introduced in 58afcd72446f (1.25.2).\nBack then only the unlikely memory allocation error could trigger it. However\nin efcdaa66df2e congestion control was added to ngx_quic_frame_sendto() which\ncan now trigger the issue with a higher probability.","shortMessageHtmlLink":"QUIC: fixed unsent MTU probe acknowledgement."}},{"before":"71a0a4acdbb9ed0a8ef269a28218365cde00415d","after":"ed47f72a85fb6279e2ba5d431f64ea4db695cf4e","ref":"refs/heads/branches/default","pushedAt":"2024-02-14T14:12:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"QUIC: fixed unsent MTU probe acknowledgement.\n\nPreviously if an MTU probe send failed early in ngx_quic_frame_sendto()\ndue to allocation error or congestion control, the application level packet\nnumber was not increased, but was still saved as MTU probe packet number.\nLater when a packet with this number was acknowledged, the unsent MTU probe\nwas acknowledged as well. This could result in discovering a bigger MTU than\nsupported by the path, which could lead to EMSGSIZE (Message too long) errors\nwhile sending further packets.\n\nThe problem existed since PMTUD was introduced in 58afcd72446f (1.25.2).\nBack then only the unlikely memory allocation error could trigger it. However\nin efcdaa66df2e congestion control was added to ngx_quic_frame_sendto() which\ncan now trigger the issue with a higher probability.","shortMessageHtmlLink":"QUIC: fixed unsent MTU probe acknowledgement."}},{"before":"2a10e48620d430bc2d44f36249c33fb1813aa507","after":"71a0a4acdbb9ed0a8ef269a28218365cde00415d","ref":"refs/heads/master","pushedAt":"2024-01-30T15:23:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"HTTP/3: added more compatibility checks for \"listen ... quic\".\n\nNow \"fastopen\", \"backlog\", \"accept_filter\", \"deferred\", and \"so_keepalive\"\nparameters are not allowed with \"quic\" in the \"listen\" directive.\n\nReported by Izorkin.","shortMessageHtmlLink":"HTTP/3: added more compatibility checks for \"listen ... quic\"."}},{"before":"2a10e48620d430bc2d44f36249c33fb1813aa507","after":"71a0a4acdbb9ed0a8ef269a28218365cde00415d","ref":"refs/heads/branches/default","pushedAt":"2024-01-30T15:23:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"HTTP/3: added more compatibility checks for \"listen ... quic\".\n\nNow \"fastopen\", \"backlog\", \"accept_filter\", \"deferred\", and \"so_keepalive\"\nparameters are not allowed with \"quic\" in the \"listen\" directive.\n\nReported by Izorkin.","shortMessageHtmlLink":"HTTP/3: added more compatibility checks for \"listen ... quic\"."}},{"before":"6f2059147f20d1bd2cd6ff01ea71bf31ec9c2845","after":"2a10e48620d430bc2d44f36249c33fb1813aa507","ref":"refs/heads/master","pushedAt":"2024-01-30T15:19:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"SSL: fixed $ssl_curves allocation error handling.","shortMessageHtmlLink":"SSL: fixed $ssl_curves allocation error handling."}},{"before":"6f2059147f20d1bd2cd6ff01ea71bf31ec9c2845","after":"2a10e48620d430bc2d44f36249c33fb1813aa507","ref":"refs/heads/branches/default","pushedAt":"2024-01-30T15:19:09.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"SSL: fixed $ssl_curves allocation error handling.","shortMessageHtmlLink":"SSL: fixed $ssl_curves allocation error handling."}},{"before":"f255815f5d161fab0dd310fe826d4f7572e141f2","after":"6f2059147f20d1bd2cd6ff01ea71bf31ec9c2845","ref":"refs/heads/master","pushedAt":"2024-01-30T15:09:18.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"nginx-hg-mirror","name":"nginx mercurial mirror bot","path":"/nginx-hg-mirror","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/31765010?s=80&v=4"},"commit":{"message":"Upstream: fixed usage of closed sockets with filter finalization.\n\nWhen filter finalization is triggered when working with an upstream server,\nand error_page redirects request processing to some simple handler,\nngx_http_request_finalize() triggers request termination when the response\nis sent. In particular, via the upstream cleanup handler, nginx will close\nthe upstream connection and the corresponding socket.\n\nStill, this can happen to be with ngx_event_pipe() on stack. While\nthe code will set p->downstream_error due to NGX_ERROR returned from the\noutput filter chain by filter finalization, otherwise the error will be\nignored till control returns to ngx_http_upstream_process_request().\nAnd event pipe might try reading from the (already closed) socket, resulting\nin \"readv() failed (9: Bad file descriptor) while reading upstream\" errors\n(or even segfaults with SSL).\n\nSuch errors were seen with the following configuration:\n\n location /t2 {\n proxy_pass http://127.0.0.1:8080/big;\n\n image_filter_buffer 10m;\n image_filter resize 150 100;\n error_page 415 = /empty;\n }\n\n location /empty {\n return 204;\n }\n\n location /big {\n # big enough static file\n }\n\nFix is to clear p->upstream in ngx_http_upstream_finalize_request(),\nand ensure that p->upstream is checked in ngx_event_pipe_read_upstream()\nand when handling events at ngx_event_pipe() exit.","shortMessageHtmlLink":"Upstream: fixed usage of closed sockets with filter finalization."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAET8lAWQA","startCursor":null,"endCursor":null}},"title":"Activity ยท nginx/nginx"}