X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-daemon%2Fmain.c;h=8bd856eee68a84a8bb5175e2fd7354eb39e357bb;hb=d7b03753f10d93d278091d39b95adf3b18a2770c;hp=d1a3b3e773d8efad276d164f457e2b3bd2ef16e1;hpb=53ac2245c30daf71413dc52b07676bdd823729b4;p=catta diff --git a/avahi-daemon/main.c b/avahi-daemon/main.c index d1a3b3e..8bd856e 100644 --- a/avahi-daemon/main.c +++ b/avahi-daemon/main.c @@ -332,6 +332,7 @@ static void update_browse_domains(void) { l = filter_duplicate_domains(l); avahi_server_set_browse_domains(avahi_server, l); + avahi_string_list_free(l); } static void server_callback(AvahiServer *s, AvahiServerState state, void *userdata) { @@ -550,6 +551,26 @@ static int parse_unsigned(const char *s, unsigned *u) { return 0; } +static int parse_usec(const char *s, AvahiUsec *u) { + char *e = NULL; + unsigned long long ull; + AvahiUsec k; + + errno = 0; + ull = strtoull(s, &e, 0); + + if (!e || *e || errno != 0) + return -1; + + k = (AvahiUsec) ull; + + if ((unsigned long long) k != ull) + return -1; + + *u = k; + return 0; +} + static int load_config_file(DaemonConfig *c) { int r = -1; AvahiIniFile *f; @@ -641,6 +662,26 @@ static int load_config_file(DaemonConfig *c) { c->server_config.deny_interfaces = avahi_string_list_add(c->server_config.deny_interfaces, *t); avahi_strfreev(e); + } else if (strcasecmp(p->key, "ratelimit-interval-usec") == 0) { + AvahiUsec k; + + if (parse_usec(p->value, &k) < 0) { + avahi_log_error("Invalid ratelimit-interval-usec setting %s", p->value); + goto finish; + } + + c->server_config.ratelimit_interval = k; + + } else if (strcasecmp(p->key, "ratelimit-burst") == 0) { + unsigned k; + + if (parse_unsigned(p->value, &k) < 0) { + avahi_log_error("Invalid ratelimit-burst setting %s", p->value); + goto finish; + } + + c->server_config.ratelimit_burst = k; + } else if (strcasecmp(p->key, "cache-entries-max") == 0) { unsigned k; @@ -1524,10 +1565,8 @@ int main(int argc, char *argv[]) { daemon_log_use = DAEMON_LOG_SYSLOG; if (sd_listen_fds(0) <= 0) - if (daemon_close_all(-1) < 0) { - avahi_log_error("Failed to close remaining file descriptors: %s", strerror(errno)); - goto finish; - } + if (daemon_close_all(-1) < 0) + avahi_log_warn("Failed to close all remaining file descriptors: %s", strerror(errno)); if (make_runtime_dir() < 0) goto finish;