From: msweet Date: Wed, 3 Sep 2014 15:33:50 +0000 (+0000) Subject: The scheduler did not preserve listener sockets from launchd or systemd after a X-Git-Tag: v2.2b1~483 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e6adc4fa38e337b2857d1abdac79ba9b06e8944;p=thirdparty%2Fcups.git The scheduler did not preserve listener sockets from launchd or systemd after a restart () git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@12149 a1ca3aef-8c08-0410-bb20-df032aa958be --- diff --git a/CHANGES.txt b/CHANGES.txt index b7c0b26a0c..b7a2eb637d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,12 @@ -CHANGES.txt - 2.0rc1 - 2014-09-02 +CHANGES.txt - 2.0rc2 - 2014-09-03 --------------------------------- +CHANGES IN CUPS V2.0rc2 + + - The scheduler did not preserve listener sockets from launchd or + systemd after a restart () + + CHANGES IN CUPS V2.0rc1 - Documentation updates (STR #4464) diff --git a/scheduler/conf.c b/scheduler/conf.c index 905bbd11a3..305efb025f 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -2974,9 +2974,13 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ if (lis) { - httpAddrString(&lis->address, temp, sizeof(temp)); - cupsdLogMessage(CUPSD_LOG_WARN, - "Duplicate listen address \"%s\" ignored.", temp); + if (!lis->on_demand) + { + httpAddrString(&lis->address, temp, sizeof(temp)); + cupsdLogMessage(CUPSD_LOG_WARN, + "Duplicate listen address \"%s\" ignored.", temp); + } + continue; } diff --git a/scheduler/listen.c b/scheduler/listen.c index b23c5e27bf..fb8786d0e1 100644 --- a/scheduler/listen.c +++ b/scheduler/listen.c @@ -43,10 +43,17 @@ cupsdDeleteAllListeners(void) for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners); lis; lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) - free(lis); + if (!lis->on_demand) + { + cupsArrayRemove(Listeners, lis); + free(lis); + } - cupsArrayDelete(Listeners); - Listeners = NULL; + if (cupsArrayCount(Listeners) == 0) + { + cupsArrayDelete(Listeners); + Listeners = NULL; + } } @@ -275,15 +282,19 @@ cupsdStopListening(void) lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) { #if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD) - if (lis->fd != -1 && !lis->on_demand) + if (!lis->on_demand && lis->fd != -1) + { httpAddrClose(&(lis->address), lis->fd); + lis->fd = -1; + } #else if (lis->fd != -1) + { httpAddrClose(&(lis->address), lis->fd); + lis->fd = -1; + } #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */ - - lis->fd = -1; } }