X-Git-Url: https://git.distorted.org.uk/~mdw/yaid/blobdiff_plain/f7a8c7ebcd7d55f679d26f5e3ce4fd06692fbff2..a20696ca1a330c7dc11424dd65a4dd13db4f19af:/yaid.c diff --git a/yaid.c b/yaid.c index 385ce38..affa522 100644 --- a/yaid.c +++ b/yaid.c @@ -621,6 +621,7 @@ static int make_listening_socket(int af, int port, const char *proto) size_t ssz; if ((fd = socket(af, SOCK_STREAM, 0)) < 0) { + if (errno == EAFNOSUPPORT) return (-1); die(1, "failed to create %s listening socket: %s", proto, strerror(errno)); } @@ -661,7 +662,7 @@ static int make_listening_socket(int af, int port, const char *proto) sel_initfile(&sel, &l->f, fd, SEL_READ, accept_client, l); sel_addfile(&l->f); - return (fd); + return (0); } int main(int argc, char *argv[]) @@ -691,8 +692,9 @@ int main(int argc, char *argv[]) printf("ipv6 gw = %s\n", inet_ntop(AF_INET6, &a, buf, sizeof(buf))); sel_init(&sel); - make_listening_socket(AF_INET, port, "IPv4"); - make_listening_socket(AF_INET6, port, "IPv6"); + if (make_listening_socket(AF_INET, port, "IPv4") && + make_listening_socket(AF_INET6, port, "IPv6")) + die(1, "no IP protocols supported"); for (;;) if (sel_select(&sel)) die(1, "select failed: %s", strerror(errno));