X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fserver.c;h=b3971962df5bb719742e3e61583db76471c90aa9;hb=f5d4215d93887fda552b8f5f52ea506e01d9a748;hp=a726310d494e94f582338c8adcff490611228aa3;hpb=d80c70d36363762e0cf1534e654e122d741fbc5d;p=catta diff --git a/src/server.c b/src/server.c index a726310..b397196 100644 --- a/src/server.c +++ b/src/server.c @@ -849,7 +849,7 @@ static int originates_from_local_legacy_unicast_socket(CattaServer *s, const Cat socklen_t l = sizeof(lsa); if (getsockname(s->fd_legacy_unicast_ipv4, (struct sockaddr*) &lsa, &l) != 0) - catta_log_warn("getsockname(): %s", strerror(errno)); + catta_log_warn("getsockname(): %s", errnostrsocket()); else return catta_port_from_sockaddr((struct sockaddr*) &lsa) == port; @@ -860,7 +860,7 @@ static int originates_from_local_legacy_unicast_socket(CattaServer *s, const Cat socklen_t l = sizeof(lsa); if (getsockname(s->fd_legacy_unicast_ipv6, (struct sockaddr*) &lsa, &l) != 0) - catta_log_warn("getsockname(): %s", strerror(errno)); + catta_log_warn("getsockname(): %s", errnostrsocket()); else return catta_port_from_sockaddr((struct sockaddr*) &lsa) == port; } @@ -899,9 +899,12 @@ static void dispatch_packet(CattaServer *s, CattaDnsPacket *p, const CattaAddres assert(iface > 0); assert(src_address->proto == dst_address->proto); - if (!(i = catta_interface_monitor_get_interface(s->monitor, iface, src_address->proto)) || - !i->announcing) { - catta_log_warn("Received packet from invalid interface."); + if (!(i = catta_interface_monitor_get_interface(s->monitor, iface, src_address->proto))) { + catta_log_warn("Received packet from unrecognized interface (%d).", iface); + return; + } + if (!i->announcing) { + catta_log_warn("Received packet from invalid interface %d (not announcing).", iface); return; } @@ -1217,7 +1220,7 @@ static void register_stuff(CattaServer *s) { assert(s); server_set_state(s, CATTA_SERVER_REGISTERING); - s->n_host_rr_pending ++; /** Make sure that the state isn't changed tp CATTA_SERVER_RUNNING too early */ + s->n_host_rr_pending ++; /** Make sure that the state isn't changed to CATTA_SERVER_RUNNING too early */ register_hinfo(s); register_browse_domain(s); @@ -1225,9 +1228,6 @@ static void register_stuff(CattaServer *s) { assert(s->n_host_rr_pending > 0); s->n_host_rr_pending --; - - if (s->n_host_rr_pending == 0) - server_set_state(s, CATTA_SERVER_RUNNING); } static void update_fqdn(CattaServer *s) { @@ -1381,12 +1381,14 @@ CattaServer *catta_server_new(const CattaPoll *poll_api, const CattaServerConfig 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; } @@ -1515,14 +1517,14 @@ void catta_server_free(CattaServer* s) { /* 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 */ @@ -1533,6 +1535,7 @@ void catta_server_free(CattaServer* s) { 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) {