-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix regression with connection upgrade #7879
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #7879 +/- ##
=======================================
Coverage 97.40% 97.41%
=======================================
Files 107 107
Lines 32207 32263 +56
Branches 3743 3750 +7
=======================================
+ Hits 31371 31428 +57
Misses 632 632
+ Partials 204 203 -1
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
I'll throw this on production shortly |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
I put this on two production systems and everything is still working as expected.
I beat it up a bit with a lot of websocket connections and didn't hit any issues |
Backport to 3.9: 💔 cherry-picking failed — conflicts found❌ Failed to cleanly apply 48b1558 on top of patchback/backports/3.9/48b15583305e692ce997ec6f5a6a2f88f23ace71/pr-7879 Backporting merged PR #7879 into master
🤖 @patchback |
Backport to 3.10: 💔 cherry-picking failed — conflicts found❌ Failed to cleanly apply 48b1558 on top of patchback/backports/3.10/48b15583305e692ce997ec6f5a6a2f88f23ace71/pr-7879 Backporting merged PR #7879 into master
🤖 @patchback |
I think that's the last regression I've seen. So, I'll try and push a 3.9.1 release today. |
By the way, if you have any ideas on an easy way to backport all the type annotations from the tests in master, that'd make the automatic backport a lot more reliable. I think doing it manually would be a lot of work, and I've not thought of an easy way to do it. Currently, editing any test file basically fails the backport as it will conflict with the type annotation differences. |
I really can't think of a good way to do it except manually. If I think of something, I'll be sure to bring it up |
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.0 to 3.9.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/releases">aiohttp's releases</a>.</em></p> <blockquote> <h2>3.9.1</h2> <h2>Bugfixes</h2> <ul> <li> <p>Fixed importing aiohttp under PyPy on Windows.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7848">#7848</a>)</p> </li> <li> <p>Fixed async concurrency safety in websocket compressor.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7865">#7865</a>)</p> </li> <li> <p>Fixed <code>ClientResponse.close()</code> releasing the connection instead of closing.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7869">#7869</a>)</p> </li> <li> <p>Fixed a regression where connection may get closed during upgrade. -- by :user:<code>Dreamsorcerer</code></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7879">#7879</a>)</p> </li> <li> <p>Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:<code>Dreamsorcerer</code></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7895">#7895</a>)</p> </li> </ul> <hr /> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst">aiohttp's changelog</a>.</em></p> <blockquote> <h1>3.9.1 (2023-11-26)</h1> <h2>Bugfixes</h2> <ul> <li> <p>Fixed importing aiohttp under PyPy on Windows.</p> <p><code>[#7848](aio-libs/aiohttp#7848) <https://github.com/aio-libs/aiohttp/issues/7848></code>_</p> </li> <li> <p>Fixed async concurrency safety in websocket compressor.</p> <p><code>[#7865](aio-libs/aiohttp#7865) <https://github.com/aio-libs/aiohttp/issues/7865></code>_</p> </li> <li> <p>Fixed <code>ClientResponse.close()</code> releasing the connection instead of closing.</p> <p><code>[#7869](aio-libs/aiohttp#7869) <https://github.com/aio-libs/aiohttp/issues/7869></code>_</p> </li> <li> <p>Fixed a regression where connection may get closed during upgrade. -- by :user:<code>Dreamsorcerer</code></p> <p><code>[#7879](aio-libs/aiohttp#7879) <https://github.com/aio-libs/aiohttp/issues/7879></code>_</p> </li> <li> <p>Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:<code>Dreamsorcerer</code></p> <p><code>[#7895](aio-libs/aiohttp#7895) <https://github.com/aio-libs/aiohttp/issues/7895></code>_</p> </li> </ul> <hr /> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aio-libs/aiohttp/commit/6333c026422c6b0fe57ff63cde4104e2d00f47f4"><code>6333c02</code></a> Release v3.9.1 (<a href="https://github.com/aio-libs/aiohttp/issues/7911">#7911</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/9dbd273093d6af6f5e1481816b05a7192860b440"><code>9dbd273</code></a> [PR <a href="https://github.com/aio-libs/aiohttp/issues/7673">#7673</a>/aa7d1a8f backport][3.9] Document release process (<a href="https://github.com/aio-libs/aiohttp/issues/7909">#7909</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/dd175b6b89564dc74fba0692a8a5f9a9b38e528a"><code>dd175b6</code></a> Fix regression with connection upgrade (<a href="https://github.com/aio-libs/aiohttp/issues/7879">#7879</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7908">#7908</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/946523d6380bd79e13146557432f46f6f9bbd53f"><code>946523d</code></a> Fix flaky websocket test (<a href="https://github.com/aio-libs/aiohttp/issues/7902">#7902</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7904">#7904</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/ddc2a26c9e0c43fd1229e4424f2a30d1b10ced13"><code>ddc2a26</code></a> [PR <a href="https://github.com/aio-libs/aiohttp/issues/7896">#7896</a>/9a7cfe77 backport][3.9] Fix some flaky tests (<a href="https://github.com/aio-libs/aiohttp/issues/7900">#7900</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/2ae4d6ffdd015f622bfb75dee98ad629240cccc4"><code>2ae4d6f</code></a> Message is not upgraded if Upgrade header is missing (<a href="https://github.com/aio-libs/aiohttp/issues/7895">#7895</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7898">#7898</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/bb111012706d3ef9edc525be3d8d4df410ad847f"><code>bb11101</code></a> Restore async concurrency safety to websocket compressor (<a href="https://github.com/aio-libs/aiohttp/issues/7865">#7865</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7889">#7889</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/6dd0122417f00ed4b2b353226a1b164b6463a245"><code>6dd0122</code></a> Update dependabot.yml (<a href="https://github.com/aio-libs/aiohttp/issues/7888">#7888</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/41a9f1f5b9b2630b1f4b971811c7ef8f016262fb"><code>41a9f1f</code></a> Bump mypy from 1.7.0 to 1.7.1 (<a href="https://github.com/aio-libs/aiohttp/issues/7882">#7882</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/a04970150c6ce9fda22c9f63d947845f79148b4c"><code>a049701</code></a> Fix usage of proxy.py in test_proxy_functional (<a href="https://github.com/aio-libs/aiohttp/issues/7773">#7773</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7876">#7876</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aio-libs/aiohttp/compare/v3.9.0...v3.9.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aiohttp&package-manager=pip&previous-version=3.9.0&new-version=3.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.9.0 to 3.9.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/releases">aiohttp's releases</a>.</em></p> <blockquote> <h2>3.9.1</h2> <h2>Bugfixes</h2> <ul> <li> <p>Fixed importing aiohttp under PyPy on Windows.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7848">#7848</a>)</p> </li> <li> <p>Fixed async concurrency safety in websocket compressor.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7865">#7865</a>)</p> </li> <li> <p>Fixed <code>ClientResponse.close()</code> releasing the connection instead of closing.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7869">#7869</a>)</p> </li> <li> <p>Fixed a regression where connection may get closed during upgrade. -- by :user:<code>Dreamsorcerer</code></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7879">#7879</a>)</p> </li> <li> <p>Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:<code>Dreamsorcerer</code></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7895">#7895</a>)</p> </li> </ul> <hr /> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst">aiohttp's changelog</a>.</em></p> <blockquote> <h1>3.9.1 (2023-11-26)</h1> <h2>Bugfixes</h2> <ul> <li> <p>Fixed importing aiohttp under PyPy on Windows.</p> <p><code>[#7848](aio-libs/aiohttp#7848) <https://github.com/aio-libs/aiohttp/issues/7848></code>_</p> </li> <li> <p>Fixed async concurrency safety in websocket compressor.</p> <p><code>[#7865](aio-libs/aiohttp#7865) <https://github.com/aio-libs/aiohttp/issues/7865></code>_</p> </li> <li> <p>Fixed <code>ClientResponse.close()</code> releasing the connection instead of closing.</p> <p><code>[#7869](aio-libs/aiohttp#7869) <https://github.com/aio-libs/aiohttp/issues/7869></code>_</p> </li> <li> <p>Fixed a regression where connection may get closed during upgrade. -- by :user:<code>Dreamsorcerer</code></p> <p><code>[#7879](aio-libs/aiohttp#7879) <https://github.com/aio-libs/aiohttp/issues/7879></code>_</p> </li> <li> <p>Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:<code>Dreamsorcerer</code></p> <p><code>[#7895](aio-libs/aiohttp#7895) <https://github.com/aio-libs/aiohttp/issues/7895></code>_</p> </li> </ul> <hr /> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aio-libs/aiohttp/commit/6333c026422c6b0fe57ff63cde4104e2d00f47f4"><code>6333c02</code></a> Release v3.9.1 (<a href="https://github.com/aio-libs/aiohttp/issues/7911">#7911</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/9dbd273093d6af6f5e1481816b05a7192860b440"><code>9dbd273</code></a> [PR <a href="https://github.com/aio-libs/aiohttp/issues/7673">#7673</a>/aa7d1a8f backport][3.9] Document release process (<a href="https://github.com/aio-libs/aiohttp/issues/7909">#7909</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/dd175b6b89564dc74fba0692a8a5f9a9b38e528a"><code>dd175b6</code></a> Fix regression with connection upgrade (<a href="https://github.com/aio-libs/aiohttp/issues/7879">#7879</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7908">#7908</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/946523d6380bd79e13146557432f46f6f9bbd53f"><code>946523d</code></a> Fix flaky websocket test (<a href="https://github.com/aio-libs/aiohttp/issues/7902">#7902</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7904">#7904</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/ddc2a26c9e0c43fd1229e4424f2a30d1b10ced13"><code>ddc2a26</code></a> [PR <a href="https://github.com/aio-libs/aiohttp/issues/7896">#7896</a>/9a7cfe77 backport][3.9] Fix some flaky tests (<a href="https://github.com/aio-libs/aiohttp/issues/7900">#7900</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/2ae4d6ffdd015f622bfb75dee98ad629240cccc4"><code>2ae4d6f</code></a> Message is not upgraded if Upgrade header is missing (<a href="https://github.com/aio-libs/aiohttp/issues/7895">#7895</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7898">#7898</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/bb111012706d3ef9edc525be3d8d4df410ad847f"><code>bb11101</code></a> Restore async concurrency safety to websocket compressor (<a href="https://github.com/aio-libs/aiohttp/issues/7865">#7865</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7889">#7889</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/6dd0122417f00ed4b2b353226a1b164b6463a245"><code>6dd0122</code></a> Update dependabot.yml (<a href="https://github.com/aio-libs/aiohttp/issues/7888">#7888</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/41a9f1f5b9b2630b1f4b971811c7ef8f016262fb"><code>41a9f1f</code></a> Bump mypy from 1.7.0 to 1.7.1 (<a href="https://github.com/aio-libs/aiohttp/issues/7882">#7882</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/a04970150c6ce9fda22c9f63d947845f79148b4c"><code>a049701</code></a> Fix usage of proxy.py in test_proxy_functional (<a href="https://github.com/aio-libs/aiohttp/issues/7773">#7773</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7876">#7876</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aio-libs/aiohttp/compare/v3.9.0...v3.9.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aiohttp&package-manager=pip&previous-version=3.9.0&new-version=3.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.6 to 3.9.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/releases">aiohttp's releases</a>.</em></p> <blockquote> <h2>3.9.1</h2> <h2>Bugfixes</h2> <ul> <li> <p>Fixed importing aiohttp under PyPy on Windows.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7848">#7848</a>)</p> </li> <li> <p>Fixed async concurrency safety in websocket compressor.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7865">#7865</a>)</p> </li> <li> <p>Fixed <code>ClientResponse.close()</code> releasing the connection instead of closing.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7869">#7869</a>)</p> </li> <li> <p>Fixed a regression where connection may get closed during upgrade. -- by :user:<code>Dreamsorcerer</code></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7879">#7879</a>)</p> </li> <li> <p>Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:<code>Dreamsorcerer</code></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7895">#7895</a>)</p> </li> </ul> <hr /> <h2>3.9.0</h2> <h2>Features</h2> <ul> <li> <p>Introduced <code>AppKey</code> for static typing support of <code>Application</code> storage. See <a href="https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config">https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config</a></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/5864">#5864</a>)</p> </li> <li> <p>Added a graceful shutdown period which allows pending tasks to complete before the application's cleanup is called. The period can be adjusted with the <code>shutdown_timeout</code> parameter. -- by :user:<code>Dreamsorcerer</code>. See <a href="https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown">https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown</a></p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7188">#7188</a>)</p> </li> <li> <p>Added <code>handler_cancellation <https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation></code>_ parameter to cancel web handler on client disconnection. -- by :user:<code>mosquito</code> This (optionally) reintroduces a feature removed in a previous release. Recommended for those looking for an extra level of protection against denial-of-service attacks.</p> <p>(<a href="https://github.com/aio-libs/aiohttp/issues/7056">#7056</a>)</p> </li> <li> <p>Added support for setting response header parameters <code>max_line_size</code> and <code>max_field_size</code>.</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst">aiohttp's changelog</a>.</em></p> <blockquote> <h1>3.9.1 (2023-11-26)</h1> <h2>Bugfixes</h2> <ul> <li> <p>Fixed importing aiohttp under PyPy on Windows.</p> <p><code>[#7848](aio-libs/aiohttp#7848) <https://github.com/aio-libs/aiohttp/issues/7848></code>_</p> </li> <li> <p>Fixed async concurrency safety in websocket compressor.</p> <p><code>[#7865](aio-libs/aiohttp#7865) <https://github.com/aio-libs/aiohttp/issues/7865></code>_</p> </li> <li> <p>Fixed <code>ClientResponse.close()</code> releasing the connection instead of closing.</p> <p><code>[#7869](aio-libs/aiohttp#7869) <https://github.com/aio-libs/aiohttp/issues/7869></code>_</p> </li> <li> <p>Fixed a regression where connection may get closed during upgrade. -- by :user:<code>Dreamsorcerer</code></p> <p><code>[#7879](aio-libs/aiohttp#7879) <https://github.com/aio-libs/aiohttp/issues/7879></code>_</p> </li> <li> <p>Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:<code>Dreamsorcerer</code></p> <p><code>[#7895](aio-libs/aiohttp#7895) <https://github.com/aio-libs/aiohttp/issues/7895></code>_</p> </li> </ul> <hr /> <h1>3.9.0 (2023-11-18)</h1> <h2>Features</h2> <ul> <li> <p>Introduced <code>AppKey</code> for static typing support of <code>Application</code> storage. See <a href="https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config">https://docs.aiohttp.org/en/stable/web_advanced.html#application-s-config</a></p> <p><code>[#5864](aio-libs/aiohttp#5864) <https://github.com/aio-libs/aiohttp/issues/5864></code>_</p> </li> <li> <p>Added a graceful shutdown period which allows pending tasks to complete before the application's cleanup is called. The period can be adjusted with the <code>shutdown_timeout</code> parameter. -- by :user:<code>Dreamsorcerer</code>. See <a href="https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown">https://docs.aiohttp.org/en/latest/web_advanced.html#graceful-shutdown</a></p> <p><code>[#7188](aio-libs/aiohttp#7188) <https://github.com/aio-libs/aiohttp/issues/7188></code>_</p> </li> <li> <p>Added <code>handler_cancellation <https://docs.aiohttp.org/en/stable/web_advanced.html#web-handler-cancellation></code>_ parameter to cancel web handler on client disconnection. -- by :user:<code>mosquito</code> This (optionally) reintroduces a feature removed in a previous release.</p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/aio-libs/aiohttp/commit/6333c026422c6b0fe57ff63cde4104e2d00f47f4"><code>6333c02</code></a> Release v3.9.1 (<a href="https://github.com/aio-libs/aiohttp/issues/7911">#7911</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/9dbd273093d6af6f5e1481816b05a7192860b440"><code>9dbd273</code></a> [PR <a href="https://github.com/aio-libs/aiohttp/issues/7673">#7673</a>/aa7d1a8f backport][3.9] Document release process (<a href="https://github.com/aio-libs/aiohttp/issues/7909">#7909</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/dd175b6b89564dc74fba0692a8a5f9a9b38e528a"><code>dd175b6</code></a> Fix regression with connection upgrade (<a href="https://github.com/aio-libs/aiohttp/issues/7879">#7879</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7908">#7908</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/946523d6380bd79e13146557432f46f6f9bbd53f"><code>946523d</code></a> Fix flaky websocket test (<a href="https://github.com/aio-libs/aiohttp/issues/7902">#7902</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7904">#7904</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/ddc2a26c9e0c43fd1229e4424f2a30d1b10ced13"><code>ddc2a26</code></a> [PR <a href="https://github.com/aio-libs/aiohttp/issues/7896">#7896</a>/9a7cfe77 backport][3.9] Fix some flaky tests (<a href="https://github.com/aio-libs/aiohttp/issues/7900">#7900</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/2ae4d6ffdd015f622bfb75dee98ad629240cccc4"><code>2ae4d6f</code></a> Message is not upgraded if Upgrade header is missing (<a href="https://github.com/aio-libs/aiohttp/issues/7895">#7895</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7898">#7898</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/bb111012706d3ef9edc525be3d8d4df410ad847f"><code>bb11101</code></a> Restore async concurrency safety to websocket compressor (<a href="https://github.com/aio-libs/aiohttp/issues/7865">#7865</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7889">#7889</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/6dd0122417f00ed4b2b353226a1b164b6463a245"><code>6dd0122</code></a> Update dependabot.yml (<a href="https://github.com/aio-libs/aiohttp/issues/7888">#7888</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/41a9f1f5b9b2630b1f4b971811c7ef8f016262fb"><code>41a9f1f</code></a> Bump mypy from 1.7.0 to 1.7.1 (<a href="https://github.com/aio-libs/aiohttp/issues/7882">#7882</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/a04970150c6ce9fda22c9f63d947845f79148b4c"><code>a049701</code></a> Fix usage of proxy.py in test_proxy_functional (<a href="https://github.com/aio-libs/aiohttp/issues/7773">#7773</a>) (<a href="https://github.com/aio-libs/aiohttp/issues/7876">#7876</a>)</li> <li>Additional commits viewable in <a href="https://github.com/aio-libs/aiohttp/compare/v3.8.6...v3.9.1">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=aiohttp&package-manager=pip&previous-version=3.8.6&new-version=3.9.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Fixes #7867.