X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=src%2Fserver.c;h=b3971962df5bb719742e3e61583db76471c90aa9;hb=HEAD;hp=1dda8b4545edfe6481557873588365b878fe00bb;hpb=4fe2472f5302b74df5dbb43822711487f1fd9851;p=catta diff --git a/src/server.c b/src/server.c index 1dda8b4..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; } @@ -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) {