MT#55283 add IPv4 fallback

Try open an IPv4 socket if IPv6 fails with EAFNOSUPPORT in order to
support kernels without IPv6 support.

closes #1784

Change-Id: I2cf4065450a8b19b738c572e7d9ad6f8548ecc04
pull/1786/head
Richard Fuchs 1 year ago
parent 339c705469
commit f9b8f2041d

@ -800,15 +800,19 @@ fail:
}
int open_v46_socket(socket_t *r, int type) {
sockfamily_t *fam = &__socket_families[SF_IP6];
if (__socket(r, type, fam)) {
__C_DBG("open socket fail, fd=%d", r->fd);
return -1;
int ret = __socket(r, type, &__socket_families[SF_IP6]);
if (ret) {
if (errno == EAFNOSUPPORT)
ret = __socket(r, type, &__socket_families[SF_IP6]);
if (ret) {
__C_DBG("open socket fail");
return -1;
}
}
else
ipv6only(r->fd, 0);
nonblock(r->fd);
ipv6only(r->fd, 0);
return 0;
}

Loading…
Cancel
Save