X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-core%2Fserver.c;h=453db092fd9afd6e892cb45dca5f86fb4d047294;hb=bd08c7fb439987cf18386e7e6f9a3eeba855ed00;hp=00b5581a5767e68e6390ce42b976e6aa1ce44792;hpb=9b7ea32a8363909b15b5239dbec1a32f7fed0a3c;p=catta diff --git a/avahi-core/server.c b/avahi-core/server.c index 00b5581..453db09 100644 --- a/avahi-core/server.c +++ b/avahi-core/server.c @@ -228,9 +228,9 @@ static void incoming_probe(AvahiServer *s, AvahiRecord *record, AvahiInterface * char *t = avahi_record_to_string(record); if (won) - avahi_log_debug("Recieved conflicting probe [%s]. Local host won.", t); + avahi_log_debug("Received conflicting probe [%s]. Local host won.", t); else if (lost) { - avahi_log_debug("Recieved conflicting probe [%s]. Local host lost. Withdrawing.", t); + avahi_log_debug("Received conflicting probe [%s]. Local host lost. Withdrawing.", t); withdraw_rrset(s, record->key); } @@ -262,7 +262,7 @@ static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *recor /* Refresh */ t = avahi_record_to_string(record); - avahi_log_debug("Recieved goodbye record for one of our records [%s]. Refreshing.", t); + avahi_log_debug("Received goodbye record for one of our records [%s]. Refreshing.", t); avahi_server_prepare_matching_responses(s, i, e->record->key, 0); valid = 0; @@ -289,7 +289,7 @@ static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *recor /* Refresh */ t = avahi_record_to_string(record); - avahi_log_debug("Recieved record with bad TTL [%s]. Refreshing.", t); + avahi_log_debug("Received record with bad TTL [%s]. Refreshing.", t); avahi_server_prepare_matching_responses(s, i, e->record->key, 0); valid = 0; @@ -326,11 +326,11 @@ static int handle_conflict(AvahiServer *s, AvahiInterface *i, AvahiRecord *recor t = avahi_record_to_string(record); if (withdraw_immediately) { - avahi_log_debug("Recieved conflicting record [%s] with local record to be. Withdrawing.", t); + avahi_log_debug("Received conflicting record [%s] with local record to be. Withdrawing.", t); withdraw_rrset(s, record->key); } else { assert(conflicting_entry); - avahi_log_debug("Recieved conflicting record [%s]. Resetting our record.", t); + avahi_log_debug("Received conflicting record [%s]. Resetting our record.", t); avahi_entry_return_to_initial_state(s, conflicting_entry, i); /* Local unique records are returned to probing @@ -579,13 +579,14 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac int unicast_response = 0; if (!(key = avahi_dns_packet_consume_key(p, &unicast_response))) { - avahi_log_warn(__FILE__": Packet too short or invalid while reading question key. (Maybe an UTF8 problem?)"); + avahi_log_warn(__FILE__": Packet too short or invalid while reading question key. (Maybe a UTF-8 problem?)"); goto fail; } if (!legacy_unicast && !from_local_iface) { reflect_query(s, i, key); - avahi_cache_start_poof(i->cache, key, a); + if (!unicast_response) + avahi_cache_start_poof(i->cache, key, a); } if (avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_ANCOUNT) == 0 && @@ -606,15 +607,13 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac int unique = 0; if (!(record = avahi_dns_packet_consume_record(p, &unique))) { - avahi_log_warn(__FILE__": Packet too short or invalid while reading known answer record. (Maybe an UTF8 problem?)"); + avahi_log_warn(__FILE__": Packet too short or invalid while reading known answer record. (Maybe a UTF-8 problem?)"); goto fail; } - if (handle_conflict(s, i, record, unique)) { - avahi_response_scheduler_suppress(i->response_scheduler, record, a); - avahi_record_list_drop(s->record_list, record); - avahi_cache_stop_poof(i->cache, record, a); - } + avahi_response_scheduler_suppress(i->response_scheduler, record, a); + avahi_record_list_drop(s->record_list, record); + avahi_cache_stop_poof(i->cache, record, a); avahi_record_unref(record); } @@ -625,7 +624,7 @@ static void handle_query_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterfac int unique = 0; if (!(record = avahi_dns_packet_consume_record(p, &unique))) { - avahi_log_warn(__FILE__": Packet too short or invalid while reading probe record. (Maybe an UTF8 problem?)"); + avahi_log_warn(__FILE__": Packet too short or invalid while reading probe record. (Maybe a UTF-8 problem?)"); goto fail; } @@ -663,7 +662,7 @@ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInter /* char *txt; */ if (!(record = avahi_dns_packet_consume_record(p, &cache_flush))) { - avahi_log_warn(__FILE__": Packet too short or invalid while reading response record. (Maybe an UTF8 problem?)"); + avahi_log_warn(__FILE__": Packet too short or invalid while reading response record. (Maybe a UTF-8 problem?)"); break; } @@ -895,7 +894,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres if (!(i = avahi_interface_monitor_get_interface(s->monitor, iface, src_address->proto)) || !i->announcing) { - avahi_log_warn("Recieved packet from invalid interface."); + avahi_log_warn("Received packet from invalid interface."); return; } @@ -912,7 +911,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres from_local_iface = originates_from_local_iface(s, iface, src_address, port); if (avahi_dns_packet_check_valid_multicast(p) < 0) { - avahi_log_warn("Recieved invalid packet."); + avahi_log_warn("Received invalid packet."); return; } @@ -943,12 +942,12 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres } else { if (port != AVAHI_MDNS_PORT) { - avahi_log_warn("Recieved repsonse with invalid source port %u on interface '%s.%i'", port, i->hardware->name, i->protocol); + avahi_log_warn("Received response with invalid source port %u on interface '%s.%i'", port, i->hardware->name, i->protocol); return; } if (ttl != 255 && s->config.check_response_ttl) { - avahi_log_warn("Recieved response with invalid TTL %u on interface '%s.%i'.", ttl, i->hardware->name, i->protocol); + avahi_log_warn("Received response with invalid TTL %u on interface '%s.%i'.", ttl, i->hardware->name, i->protocol); return; } @@ -977,12 +976,12 @@ static void dispatch_legacy_unicast_packet(AvahiServer *s, AvahiDnsPacket *p) { assert(p); if (avahi_dns_packet_check_valid(p) < 0 || avahi_dns_packet_is_query(p)) { - avahi_log_warn("Recieved invalid packet."); + avahi_log_warn("Received invalid packet."); return; } if (!(slot = find_slot(s, avahi_dns_packet_get_field(p, AVAHI_DNS_FIELD_ID)))) { - avahi_log_warn("Recieved legacy unicast response with unknown id"); + avahi_log_warn("Received legacy unicast response with unknown id"); return; } @@ -1292,13 +1291,23 @@ int avahi_server_set_domain_name(AvahiServer *s, const char *domain_name) { } static int valid_server_config(const AvahiServerConfig *sc) { + AvahiStringList *l; + + assert(sc); + if (sc->n_wide_area_servers > AVAHI_WIDE_AREA_SERVERS_MAX) + return AVAHI_ERR_INVALID_CONFIG; + if (sc->host_name && !avahi_is_valid_host_name(sc->host_name)) return AVAHI_ERR_INVALID_HOST_NAME; if (sc->domain_name && !avahi_is_valid_domain_name(sc->domain_name)) return AVAHI_ERR_INVALID_DOMAIN_NAME; + for (l = sc->browse_domains; l; l = l->next) + if (!avahi_is_valid_domain_name((char*) l->text)) + return AVAHI_ERR_INVALID_DOMAIN_NAME; + return AVAHI_OK; } @@ -1739,3 +1748,19 @@ const AvahiServerConfig* avahi_server_get_config(AvahiServer *s) { return &s->config; } + +/** Set the browsing domains */ +int avahi_server_set_browse_domains(AvahiServer *s, AvahiStringList *domains) { + AvahiStringList *l; + + assert(s); + + for (l = s->config.browse_domains; l; l = l->next) + if (!avahi_is_valid_domain_name((char*) l->text)) + return avahi_server_set_errno(s, AVAHI_ERR_INVALID_DOMAIN_NAME); + + avahi_string_list_free(s->config.browse_domains); + s->config.browse_domains = avahi_string_list_copy(domains); + + return AVAHI_OK; +}