else
catta_server_config_init(&s->config);
+ winsock_init(); // on Windows, call WSAStartup; no-op on other platforms
if ((e = setup_sockets(s)) < 0) {
if (error)
*error = e;
catta_server_config_free(&s->config);
catta_free(s);
+ winsock_exit();
return NULL;
}
/* Free sockets */
if (s->fd_ipv4 >= 0)
- close(s->fd_ipv4);
+ closesocket(s->fd_ipv4);
if (s->fd_ipv6 >= 0)
- close(s->fd_ipv6);
+ closesocket(s->fd_ipv6);
if (s->fd_legacy_unicast_ipv4 >= 0)
- close(s->fd_legacy_unicast_ipv4);
+ closesocket(s->fd_legacy_unicast_ipv4);
if (s->fd_legacy_unicast_ipv6 >= 0)
- close(s->fd_legacy_unicast_ipv6);
+ closesocket(s->fd_legacy_unicast_ipv6);
/* Free other stuff */
catta_server_config_free(&s->config);
catta_free(s);
+ winsock_exit(); // on Windows, call WSACleanup(); no-op on other platforms
}
const char* catta_server_get_domain_name(CattaServer *s) {