-
-
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
Tuple index out of range with 3.7.1 and no IPv6 #5156
Comments
I'm curious what parameters are passed into My initial thought is: on systems with IPv6 not installed the check |
I added some debug statements to resolver.py: async def resolve(
self, hostname: str, port: int = 0, family: int = socket.AF_INET
) -> List[Dict[str, Any]]:
+ print('getaddrinfo(%s, %s, type=%s, family=%s)' % (hostname, port, type, family))
infos = await self._loop.getaddrinfo(
hostname, port, type=socket.SOCK_STREAM, family=family
)
+ print('infos:', infos)
For reference, here is my current DNS resolution for
|
Interesting... |
I found this which explains the cause: https://bugs.python.org/issue16208 FWIW, I was able to process the results of getaddrinfo in C. Here is some embarrassingly bad C code: #include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <arpa/inet.h>
#include <stdlib.h>
#define BUF_SIZE 500
void
print_addr(struct addrinfo *result) {
char *addr = NULL;
switch(result->ai_family) {
case AF_INET: {
struct sockaddr_in *addr_in = (struct sockaddr_in *)result->ai_addr;
addr = malloc(INET_ADDRSTRLEN);
inet_ntop(AF_INET, &(addr_in->sin_addr), addr, INET_ADDRSTRLEN);
break;
}
case AF_INET6: {
struct sockaddr_in6 *addr_in6 = (struct sockaddr_in6 *)result->ai_addr;
addr = malloc(INET6_ADDRSTRLEN);
inet_ntop(AF_INET6, &(addr_in6->sin6_addr), addr, INET6_ADDRSTRLEN);
break;
}
default:
break;
}
printf("IP address: %s\n", addr);
free(addr);
}
int
main(int argc, char *argv[])
{
struct addrinfo hints;
struct addrinfo *result, *rp;
int sfd, s, j;
size_t len;
ssize_t nread;
char buf[BUF_SIZE];
if (argc < 3) {
fprintf(stderr, "Usage: %s host port msg...\n", argv[0]);
exit(EXIT_FAILURE);
}
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */
hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
hints.ai_flags = 0;
hints.ai_protocol = 0; /* Any protocol */
s = getaddrinfo(argv[1], argv[2], &hints, &result);
if (s != 0) {
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
exit(EXIT_FAILURE);
}
while (result != 0) {
print_addr(result);
result = result->ai_next;
}
}
I tried to do something similar in Python, I'm not sure if I'm doing it right though: import socket
for ai in socket.getaddrinfo('www.python.org', 443):
print(ai)
if ai[0] == socket.AF_INET6:
af, socktype, proto, canonname, sa = ai
print("AF_INET6", socket.inet_ntop(socket.AF_INET6, sa[1]))
I'm running a Gentoo system with the Perhaps a fix in aiohttp would be to check at AF_INET6 addresses are a 4 tuple and ignore if they are not. Also, I think this is the same issue as #4557 |
So it's enabled in CPython but disabled in the kernel? What about sysctl? Could you post your |
So it should probably be mitigated with "has ipv6" check like https://github.com/tornadoweb/tornado/pull/670/files#diff-e9701aba4f8165d329018bef200b0d98dd70c24856c159b5c29cce89ddd69e8bR56 |
From a practical point of view, I'm ok with this solution if it raises a warning before the ignoring. |
Sorry, my comment was a little confusing, when I reported this issue it was disabled in Python and in the Kernel. My workaround is to enable it in Python and leave it disabled in the Kernel.
It looks like there are no results containing ipv6. I like the |
So I looked at those bugs on CPython tracker and I'm puzzled why they are "wontfix". Moreover, I think that CPython may be incorrectly processing NUL-terminated strings or something like that. I've tried decoding that bytesting manually on a Gentoo laptop with IPv6 on and still got an error (a different error but still): >>> socket.inet_ntop(socket.AF_INET6, b'\x01\xbb\x00\x00\x00\x00*\x04NB\x00-\x00\x00')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid length of packed IP address string Something about it looked weird and I tried to do the packing of a known address >>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, family=socket.AF_INET6)
[(<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('2a04:4e42:41::223', 443, 0, 0))]
>>> socket.inet_pton(socket.AF_INET6, '2a04:4e42:2d::223')
b'*\x04NB\x00-\x00\x00\x00\x00\x00\x00\x00\x00\x02#' Woah! That looks different! Let's try unpacking that correct value, just to be sure: >>> socket.inet_ntop(socket.AF_INET6, b'*\x04NB\x00-\x00\x00\x00\x00\x00\x00\x00\x00\x02#')
'2a04:4e42:2d::223' Yaaay! We've got the correct value! Based on this, I'm pretty much convinced that the bug in CPython originates in P.S. It's interesting that both representations have identical |
So I looked up the
@danielnelson could you please try this in your Python REPL: >>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, family=socket.AF_INET6, flags=socket.AI_ADDRCONFIG) and also (just in case): >>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, flags=socket.AI_ADDRCONFIG) |
Other observations:
|
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, family=socket.AF_INET6, flags=socket.AI_ADDRCONFIG)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.7/socket.py", line 752, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, flags=socket.AI_ADDRCONFIG)
[(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.188.223', 443))] |
|
@asvetlov |
On Linux, flags=0 for I read it as Anyway, whatever we decide we need a PR that passes at least both our CI and works well on @danielnelson box. Does anybody want to create it? |
I believe AI_ADDRCONFIG is not passed by default because Python always passed a hints struct. If I call memset(&hints, 0, sizeof(struct addrinfo));
s = getaddrinfo(argv[1], argv[2], &hints, &result); |
@asvetlov It's what the underlying C API defaults to. But no, it not the default in the CPython stdlib. Both the source (https://github.com/python/cpython/blob/dff1ad5/Modules/socketmodule.c#L6463) and the docs (https://docs.python.org/3/library/socket.html#socket.getaddrinfo) confirm that So I'm still convinced that setting |
This reverts commit 9d81913.
This reverts commit 48de143.
…k supports (#5176) * Fix for #5156 * test for #5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for #5156" This reverts commit 9d81913. * Revert "Fix for #5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file
…k supports (#5176) * Fix for #5156 * test for #5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for #5156" This reverts commit 9d81913. * Revert "Fix for #5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file
…k supports (#5176) * Fix for #5156 * test for #5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for #5156" This reverts commit 9d81913. * Revert "Fix for #5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file
…k supports (#5176) (#5190) * Fix for #5156 * test for #5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for #5156" This reverts commit 9d81913. * Revert "Fix for #5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file Co-authored-by: Dmitry Erlikh <derlih@gmail.com>
…k supports (#5176) (#5189) * Fix for #5156 * test for #5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for #5156" This reverts commit 9d81913. * Revert "Fix for #5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file Co-authored-by: Dmitry Erlikh <derlih@gmail.com>
…k supports (aio-libs#5176) * Fix for aio-libs#5156 * test for aio-libs#5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for aio-libs#5156" This reverts commit 9d81913. * Revert "Fix for aio-libs#5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file
…k supports (aio-libs#5176) * Fix for aio-libs#5156 * test for aio-libs#5156 * add changes file * rearrange if/else * Revert "rearrange if/else" This reverts commit a557e4c. * Revert "test for aio-libs#5156" This reverts commit 9d81913. * Revert "Fix for aio-libs#5156" This reverts commit 48de143. * Add AI_ADDRCONFIG flag to loop.getaddrinfo * update changes file
A new issue #5901 just came in today reporting this problem on the recent version of the 3.7 stream (3.7.4.post0). So I'm reopening this for now. I think it may be reasonable to come up with a docker image based on Gentoo with the |
As mentioned at #5901 the 3.8 branch fails on my system. Here is the output of the questions above: import socket
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, family=socket.AF_INET6, flags=socket.AI_ADDRCONFIG)
[(<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '', (10, b'\x01\xbb\x00\x00\x00\x00*\x04NB\x00\x03\x00\x00'))]
>>> socket.has_ipv6 == False
True
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, flags=socket.AI_ADDRCONFIG)
[(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.12.223', 443)), (<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '', (10, b'\x01\xbb\x00\x00\x00\x00*\x04NB\x00\x03\x00\x00'))] I have libc 2.33 and kernel 4.14.217 The patch from #5901 is included in the tip of the 3.8 branch, but does not help. |
Something that might be helpful. Use a self-compiled CPython with Python 3.8.5 (default, Jul 20 2021, 04:42:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> socket.has_ipv6
True
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, family=socket.AF_INET6, flags=socket.AI_ADDRCONFIG)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/Python-3.8.5/Lib/socket.py", line 918, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, flags=socket.AI_ADDRCONFIG)
[(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('151.101.108.223', 443))] Update:
Python 3.8.5 (default, Jul 20 2021, 05:11:52)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket
>>> socket.has_ipv6
False
>>> socket.getaddrinfo('www.python.org', 443, type=socket.SOCK_STREAM, family=socket.AF_INET6, flags=socket.AI_ADDRCONFIG)
[(<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '', (10, b'\x01\xbb\x00\x00\x00\x00*\x04NB\x00\x1a\x00\x00'))] See the CPython implemention If we don't enable ipv6 when compile CPython, this case is missing. #ifdef ENABLE_IPV6
case AF_INET6:
{
const struct sockaddr_in6 *a = (const struct sockaddr_in6 *)addr;
PyObject *addrobj = make_ipv6_addr(a);
PyObject *ret = NULL;
if (addrobj) {
ret = Py_BuildValue("OiII",
addrobj,
ntohs(a->sin6_port),
ntohl(a->sin6_flowinfo),
a->sin6_scope_id);
Py_DECREF(addrobj);
}
return ret;
} And it will go to the default case. Just return the default:
/* If we don't know the address family, don't raise an
exception -- return it as an (int, bytes) tuple. */
return Py_BuildValue("iy#",
addr->sa_family,
addr->sa_data,
sizeof(addr->sa_data));
>>> socket.AddressFamily.AF_INET6 == 10
True My suggestion is to use |
I have compiled python with |
Link a fix: #5906. |
Fixed |
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.7.0 to 3.7.4. <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>aiohttp 3.7.3 release</h2> <h2>Features</h2> <ul> <li>Use Brotli instead of brotlipy <code>[#3803](aio-libs/aiohttp#3803) <https://github.com/aio-libs/aiohttp/issues/3803></code>_</li> <li>Made exceptions pickleable. Also changed the repr of some exceptions. <code>[#4077](aio-libs/aiohttp#4077) <https://github.com/aio-libs/aiohttp/issues/4077></code>_</li> </ul> <h2>Bugfixes</h2> <ul> <li>Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. <code>[#3532](aio-libs/aiohttp#3532) <https://github.com/aio-libs/aiohttp/issues/3532></code>_</li> <li>Fix <code>web_middlewares.normalize_path_middleware</code> behavior for patch without slash. <code>[#3669](aio-libs/aiohttp#3669) <https://github.com/aio-libs/aiohttp/issues/3669></code>_</li> <li>Fix overshadowing of overlapped sub-applications prefixes. <code>[#3701](aio-libs/aiohttp#3701) <https://github.com/aio-libs/aiohttp/issues/3701></code>_</li> <li>Make <code>BaseConnector.close()</code> a coroutine and wait until the client closes all connections. Drop deprecated "with Connector():" syntax. <code>[#3736](aio-libs/aiohttp#3736) <https://github.com/aio-libs/aiohttp/issues/3736></code>_</li> <li>Reset the <code>sock_read</code> timeout each time data is received for a <code>aiohttp.client</code> response. <code>[#3808](aio-libs/aiohttp#3808) <https://github.com/aio-libs/aiohttp/issues/3808></code>_</li> <li>Fixed type annotation for add_view method of UrlDispatcher to accept any subclass of View <code>[#3880](aio-libs/aiohttp#3880) <https://github.com/aio-libs/aiohttp/issues/3880></code>_</li> <li>Fixed querying the address families from DNS that the current host supports. <code>[#5156](aio-libs/aiohttp#5156) <https://github.com/aio-libs/aiohttp/issues/5156></code>_</li> <li>Change return type of MultipartReader.<strong>aiter</strong>() and BodyPartReader.<strong>aiter</strong>() to AsyncIterator. <code>[#5163](aio-libs/aiohttp#5163) <https://github.com/aio-libs/aiohttp/issues/5163></code>_</li> <li>Provide x86 Windows wheels. <code>[#5230](aio-libs/aiohttp#5230) <https://github.com/aio-libs/aiohttp/issues/5230></code>_</li> </ul> <h2>Improved Documentation</h2> <ul> <li>Add documentation for <code>aiohttp.web.FileResponse</code>. <code>[#3958](aio-libs/aiohttp#3958) <https://github.com/aio-libs/aiohttp/issues/3958></code>_</li> <li>Removed deprecation warning in tracing example docs <code>[#3964](aio-libs/aiohttp#3964) <https://github.com/aio-libs/aiohttp/issues/3964></code>_</li> <li>Fixed wrong "Usage" docstring of <code>aiohttp.client.request</code>. <code>[#4603](aio-libs/aiohttp#4603) <https://github.com/aio-libs/aiohttp/issues/4603></code>_</li> <li>Add aiohttp-pydantic to third party libraries <code>[#5228](aio-libs/aiohttp#5228) <https://github.com/aio-libs/aiohttp/issues/5228></code>_</li> </ul> <h2>Misc</h2> <!-- 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.7.4 (2021-02-25)</h1> <h2>Bugfixes</h2> <ul> <li> <p><strong>(SECURITY BUG)</strong> Started preventing open redirects in the <code>aiohttp.web.normalize_path_middleware</code> middleware. For more details, see <a href="https://github.com/aio-libs/aiohttp/security/advisories/GHSA-v6wp-4m6f-gcjg">https://github.com/aio-libs/aiohttp/security/advisories/GHSA-v6wp-4m6f-gcjg</a>.</p> <p>Thanks to <code>Beast Glatisant <https://github.com/g147></code>__ for finding the first instance of this issue and <code>Jelmer Vernooij <https://jelmer.uk/></code>__ for reporting and tracking it down in aiohttp. <code>[#5497](aio-libs/aiohttp#5497) <https://github.com/aio-libs/aiohttp/issues/5497></code>_</p> </li> <li> <p>Fix interpretation difference of the pure-Python and the Cython-based HTTP parsers construct a <code>yarl.URL</code> object for HTTP request-target.</p> <p>Before this fix, the Python parser would turn the URI's absolute-path for <code>//some-path</code> into <code>/</code> while the Cython code preserved it as <code>//some-path</code>. Now, both do the latter. <code>[#5498](aio-libs/aiohttp#5498) <https://github.com/aio-libs/aiohttp/issues/5498></code>_</p> </li> </ul> <hr /> <h1>3.7.3 (2020-11-18)</h1> <h2>Features</h2> <ul> <li>Use Brotli instead of brotlipy <code>[#3803](aio-libs/aiohttp#3803) <https://github.com/aio-libs/aiohttp/issues/3803></code>_</li> <li>Made exceptions pickleable. Also changed the repr of some exceptions. <code>[#4077](aio-libs/aiohttp#4077) <https://github.com/aio-libs/aiohttp/issues/4077></code>_</li> </ul> <h2>Bugfixes</h2> <ul> <li>Raise a ClientResponseError instead of an AssertionError for a blank HTTP Reason Phrase. <code>[#3532](aio-libs/aiohttp#3532) <https://github.com/aio-libs/aiohttp/issues/3532></code>_</li> <li>Fix <code>web_middlewares.normalize_path_middleware</code> behavior for patch without slash. <code>[#3669](aio-libs/aiohttp#3669) <https://github.com/aio-libs/aiohttp/issues/3669></code>_</li> <li>Fix overshadowing of overlapped sub-applications prefixes. <code>[#3701](aio-libs/aiohttp#3701) <https://github.com/aio-libs/aiohttp/issues/3701></code>_</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/0a26acc1de9e1b0244456b7881ec16ba8bb64fc3"><code>0a26acc</code></a> Bump aiohttp to v3.7.4 for a security release</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/021c416c18392a111225bc7326063dc4a99a5138"><code>021c416</code></a> Merge branch 'GHSA-v6wp-4m6f-gcjg' into master</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/4ed7c25b537f71c6245bb74d6b20e5867db243ab"><code>4ed7c25</code></a> Bump chardet from 3.0.4 to 4.0.0 (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5333">#5333</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/b61f0fdffc887df24244ba7bdfe8567c580240ff"><code>b61f0fd</code></a> Fix how pure-Python HTTP parser interprets <code>//</code></li> <li><a href="https://github.com/aio-libs/aiohttp/commit/5c1efbc32c46820250bd25440bb7ea96cb05abe9"><code>5c1efbc</code></a> Bump pre-commit from 2.9.2 to 2.9.3 (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5322">#5322</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/007507580137efcc0a20391a0792f39b337d9c1a"><code>0075075</code></a> Bump pygments from 2.7.2 to 2.7.3 (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5318">#5318</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/5085173d947e6cc01b6daf1aa48fe7698834c569"><code>5085173</code></a> Bump multidict from 5.0.2 to 5.1.0 (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5308">#5308</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/5d1a75e68d278c641c90021409f4eb5de1810e5e"><code>5d1a75e</code></a> Bump pre-commit from 2.9.0 to 2.9.2 (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5290">#5290</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/6724d0e7a944fd7e3a710dc292d785fa8fe424fd"><code>6724d0e</code></a> Bump pre-commit from 2.8.2 to 2.9.0 (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5273">#5273</a>)</li> <li><a href="https://github.com/aio-libs/aiohttp/commit/c688451ce31b914c71b11d2ac6c326b0c87e6d1f"><code>c688451</code></a> Removed duplicate timeout parameter in ClientSession reference docs. (<a href="https://github-redirect.dependabot.com/aio-libs/aiohttp/issues/5262">#5262</a>) ...</li> <li>Additional commits viewable in <a href="https://github.com/aio-libs/aiohttp/compare/v3.7.0...v3.7.4">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.7.0&new-version=3.7.4)](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 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) - `@dependabot use these labels` will set the current labels as the default for future PRs for this repo and language - `@dependabot use these reviewers` will set the current reviewers as the default for future PRs for this repo and language - `@dependabot use these assignees` will set the current assignees as the default for future PRs for this repo and language - `@dependabot use this milestone` will set the current milestone as the default for future PRs for this repo and language You can disable automated security fix PRs for this repo from the [Security Alerts page](https://github.com/neondatabase/neon/network/alerts). </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Vadim Kharitonov <vadim@neon.tech>
🐞 Describe the bug
After upgrading to aiohttp==3.7.1, dns resolution fails with an exception.
💡 To Reproduce
CONFIG_IPV6=n
💡 Expected behavior
Should print
200
.📋 Logs/tracebacks
📋 Your version of the Python
📋 Your version of the aiohttp/yarl/multidict distributions
📋 Additional context
The text was updated successfully, but these errors were encountered: