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));
}
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[])
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));