// Create socket
sock = socket(res->ai_family, res->ai_socktype|SOCK_CLOEXEC, res->ai_protocol);
if(sock == (SOCKET)INVALID_SOCKET) {
- net_perror("ERROR SOCKET");
+ net_perror("socket");
freeaddrinfo(res);
exit(EXIT_FAILURE);
}
// Set socket options
if (setsockint(sock, SOL_SOCKET, SO_REUSEADDR, 1) == -1) {
- net_perror("ERROR SOCKET");
+ net_perror("setsockopt(SO_REUSEADDR)");
freeaddrinfo(res);
exit(EXIT_FAILURE);
}
if (res->ai_family == AF_INET6 && setsockint(sock, IPPROTO_IPV6, IPV6_V6ONLY, 1) == -1) {
- net_perror("ERROR SOCKET IPV6");
+ net_perror("setsockopt(IPV6_V6ONLY)");
freeaddrinfo(res);
exit(EXIT_FAILURE);
}
// Bind to socket
if (bind(sock, res->ai_addr, res->ai_addrlen) == -1) {
- net_perror("ERROR BIND");
+ net_perror("bind");
freeaddrinfo(res);
exit(EXIT_FAILURE);
}
freeaddrinfo(res);
// Listen to socket
if(listen(sock, SOMAXCONN) == -1) {
- net_perror("ERROR LISTEN");
+ net_perror("listen");
exit(EXIT_FAILURE);
}
return listener{sock, ctx};
SOCKET newSocket = accept4(listener->sock, (struct sockaddr *)&addr, &len, SOCK_CLOEXEC);
if (newSocket == (SOCKET)INVALID_SOCKET) {
if (!net_wouldblock())
- net_perror("ERROR newSocket");
+ net_perror("accept4");
break;
}
// Set nonblock