Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 887164 Details for
Bug 1088918
Make cups.service Type=notify
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
updated cups-systemd-socket.patch
cups-systemd-socket.patch (text/plain), 12.36 KB, created by
Jiri Popelka
on 2014-04-17 12:40:55 UTC
(
hide
)
Description:
updated cups-systemd-socket.patch
Filename:
MIME Type:
Creator:
Jiri Popelka
Created:
2014-04-17 12:40:55 UTC
Size:
12.36 KB
patch
obsolete
>diff -up cups-1.7.2/config.h.in.systemd-socket cups-1.7.2/config.h.in >--- cups-1.7.2/config.h.in.systemd-socket 2014-02-27 16:57:59.000000000 +0100 >+++ cups-1.7.2/config.h.in 2014-04-17 14:05:04.104472016 +0200 >@@ -451,6 +451,13 @@ > > > /* >+ * Do we have systemd support? >+ */ >+ >+#undef HAVE_SYSTEMD >+ >+ >+/* > * Various scripting languages... > */ > >diff -up cups-1.7.2/config-scripts/cups-systemd.m4.systemd-socket cups-1.7.2/config-scripts/cups-systemd.m4 >--- cups-1.7.2/config-scripts/cups-systemd.m4.systemd-socket 2014-04-17 14:05:04.104472016 +0200 >+++ cups-1.7.2/config-scripts/cups-systemd.m4 2014-04-17 14:05:04.104472016 +0200 >@@ -0,0 +1,36 @@ >+dnl >+dnl "$Id$" >+dnl >+dnl systemd stuff for CUPS. >+ >+dnl Find whether systemd is available >+ >+SDLIBS="" >+AC_ARG_WITH([systemdsystemunitdir], >+ AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]), >+ [], [with_systemdsystemunitdir=$($PKGCONFIG --variable=systemdsystemunitdir systemd)]) >+if test "x$with_systemdsystemunitdir" != xno; then >+ AC_MSG_CHECKING(for libsystemd-daemon) >+ if $PKGCONFIG --exists libsystemd-daemon; then >+ AC_MSG_RESULT(yes) >+ SDCFLAGS=`$PKGCONFIG --cflags libsystemd-daemon` >+ SDLIBS=`$PKGCONFIG --libs libsystemd-daemon` >+ AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir]) >+ AC_DEFINE(HAVE_SYSTEMD) >+ else >+ AC_MSG_RESULT(no) >+ fi >+fi >+ >+if test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ; then >+ SYSTEMD_UNITS="cups.service cups.socket cups.path" >+else >+ SYSTEMD_UNITS="" >+fi >+ >+AC_SUBST(SYSTEMD_UNITS) >+AC_SUBST(SDLIBS) >+ >+dnl >+dnl "$Id$" >+dnl >diff -up cups-1.7.2/configure.in.systemd-socket cups-1.7.2/configure.in >--- cups-1.7.2/configure.in.systemd-socket 2013-07-08 23:15:13.000000000 +0200 >+++ cups-1.7.2/configure.in 2014-04-17 14:05:04.104472016 +0200 >@@ -33,6 +33,7 @@ sinclude(config-scripts/cups-pam.m4) > sinclude(config-scripts/cups-largefile.m4) > sinclude(config-scripts/cups-dnssd.m4) > sinclude(config-scripts/cups-launchd.m4) >+sinclude(config-scripts/cups-systemd.m4) > sinclude(config-scripts/cups-defaults.m4) > sinclude(config-scripts/cups-scripting.m4) > >@@ -67,6 +68,9 @@ AC_OUTPUT(Makedefs > conf/snmp.conf > cups-config > data/testprint >+ data/cups.service >+ data/cups.socket >+ data/cups.path > desktop/cups.desktop > doc/help/ref-cups-files-conf.html > doc/help/ref-cupsd-conf.html >diff -up cups-1.7.2/cups/usersys.c.systemd-socket cups-1.7.2/cups/usersys.c >--- cups-1.7.2/cups/usersys.c.systemd-socket 2014-03-05 22:22:12.000000000 +0100 >+++ cups-1.7.2/cups/usersys.c 2014-04-17 14:05:04.105472002 +0200 >@@ -1050,7 +1050,7 @@ cups_read_client_conf( > struct stat sockinfo; /* Domain socket information */ > > if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) && >- (sockinfo.st_mode & S_IRWXO) == S_IRWXO) >+ (sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH)) > cups_server = CUPS_DEFAULT_DOMAINSOCKET; > else > #endif /* CUPS_DEFAULT_DOMAINSOCKET */ >diff -up cups-1.7.2/data/cups.path.in.systemd-socket cups-1.7.2/data/cups.path.in >--- cups-1.7.2/data/cups.path.in.systemd-socket 2014-04-17 14:05:04.105472002 +0200 >+++ cups-1.7.2/data/cups.path.in 2014-04-17 14:05:04.105472002 +0200 >@@ -0,0 +1,8 @@ >+[Unit] >+Description=CUPS Printer Service Spool >+ >+[Path] >+PathExistsGlob=@CUPS_REQUESTS@/d* >+ >+[Install] >+WantedBy=multi-user.target >diff -up cups-1.7.2/data/cups.service.in.systemd-socket cups-1.7.2/data/cups.service.in >--- cups-1.7.2/data/cups.service.in.systemd-socket 2014-04-17 14:05:04.105472002 +0200 >+++ cups-1.7.2/data/cups.service.in 2014-04-17 14:05:04.105472002 +0200 >@@ -0,0 +1,11 @@ >+[Unit] >+Description=CUPS Printing Service >+ >+[Service] >+Type=notify >+ExecStart=@sbindir@/cupsd -f >+PrivateTmp=true >+ >+[Install] >+Also=cups.socket cups.path >+WantedBy=printer.target >diff -up cups-1.7.2/data/cups.socket.in.systemd-socket cups-1.7.2/data/cups.socket.in >--- cups-1.7.2/data/cups.socket.in.systemd-socket 2014-04-17 14:05:04.105472002 +0200 >+++ cups-1.7.2/data/cups.socket.in 2014-04-17 14:05:04.105472002 +0200 >@@ -0,0 +1,8 @@ >+[Unit] >+Description=CUPS Printing Service Sockets >+ >+[Socket] >+ListenStream=@CUPS_DEFAULT_DOMAINSOCKET@ >+ >+[Install] >+WantedBy=sockets.target >diff -up cups-1.7.2/data/Makefile.systemd-socket cups-1.7.2/data/Makefile >--- cups-1.7.2/data/Makefile.systemd-socket 2013-05-29 13:51:34.000000000 +0200 >+++ cups-1.7.2/data/Makefile 2014-04-17 14:05:04.106471988 +0200 >@@ -100,6 +100,12 @@ install-data: > $(INSTALL_DATA) $$file $(DATADIR)/ppdc; \ > done > $(INSTALL_DIR) -m 755 $(DATADIR)/profiles >+ if test "x$(SYSTEMD_UNITS)" != "x" ; then \ >+ $(INSTALL_DIR) -m 755 $(SYSTEMDUNITDIR); \ >+ for file in $(SYSTEMD_UNITS); do \ >+ $(INSTALL_DATA) $$file $(SYSTEMDUNITDIR); \ >+ done; \ >+ fi > > > # >@@ -143,6 +149,9 @@ uninstall: > -$(RMDIR) $(DATADIR)/data > -$(RMDIR) $(DATADIR)/banners > -$(RMDIR) $(DATADIR) >+ for file in $(SYSTEMD_UNITS); do \ >+ $(RM) $(SYSTEMDUNITDIR)/$$file; \ >+ done > > > # >diff -up cups-1.7.2/Makedefs.in.systemd-socket cups-1.7.2/Makedefs.in >--- cups-1.7.2/Makedefs.in.systemd-socket 2014-04-17 14:05:04.092472182 +0200 >+++ cups-1.7.2/Makedefs.in 2014-04-17 14:05:04.106471988 +0200 >@@ -134,6 +134,7 @@ CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ > CXXLIBS = @CXXLIBS@ > DBUS_NOTIFIER = @DBUS_NOTIFIER@ > DBUS_NOTIFIERLIBS = @DBUS_NOTIFIERLIBS@ >+SYSTEMD_UNITS = @SYSTEMD_UNITS@ > DNSSD_BACKEND = @DNSSD_BACKEND@ > DSOFLAGS = -L../cups @DSOFLAGS@ > DSOLIBS = @DSOLIBS@ $(COMMONLIBS) >@@ -141,6 +142,7 @@ DNSSDLIBS = @DNSSDLIBS@ > IPPFIND_BIN = @IPPFIND_BIN@ > IPPFIND_MAN = @IPPFIND_MAN@ > LAUNCHDLIBS = @LAUNCHDLIBS@ >+SDLIBS = @SDLIBS@ > LDFLAGS = -L../cgi-bin -L../cups -L../filter -L../ppdc \ > -L../scheduler @LDARCHFLAGS@ \ > @LDFLAGS@ @RELROFLAGS@ @PIEFLAGS@ $(OPTIM) >@@ -232,6 +234,7 @@ PAMFILE = @PAMFILE@ > > DEFAULT_LAUNCHD_CONF = @DEFAULT_LAUNCHD_CONF@ > DBUSDIR = @DBUSDIR@ >+SYSTEMDUNITDIR = $(BUILDROOT)@systemdsystemunitdir@ > > > # >diff -up cups-1.7.2/scheduler/client.h.systemd-socket cups-1.7.2/scheduler/client.h >--- cups-1.7.2/scheduler/client.h.systemd-socket 2013-08-02 00:23:18.000000000 +0200 >+++ cups-1.7.2/scheduler/client.h 2014-04-17 14:05:04.106471988 +0200 >@@ -79,6 +79,9 @@ typedef struct > int fd; /* File descriptor for this server */ > http_addr_t address; /* Bind address of socket */ > http_encryption_t encryption; /* To encrypt or not to encrypt... */ >+#ifdef HAVE_SYSTEMD >+ int is_systemd; /* Is this a systemd socket? */ >+#endif /* HAVE_SYSTEMD */ > } cupsd_listener_t; > > >diff -up cups-1.7.2/scheduler/listen.c.systemd-socket cups-1.7.2/scheduler/listen.c >--- cups-1.7.2/scheduler/listen.c.systemd-socket 2013-05-29 13:51:34.000000000 +0200 >+++ cups-1.7.2/scheduler/listen.c 2014-04-17 14:05:04.107471974 +0200 >@@ -401,7 +401,11 @@ cupsdStopListening(void) > lis; > lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) > { >- if (lis->fd != -1) >+ if (lis->fd != -1 >+#ifdef HAVE_SYSTEMD >+ && !lis->is_systemd >+#endif /* HAVE_SYSTEMD */ >+ ) > { > #ifdef WIN32 > closesocket(lis->fd); >diff -up cups-1.7.2/scheduler/main.c.systemd-socket cups-1.7.2/scheduler/main.c >--- cups-1.7.2/scheduler/main.c.systemd-socket 2014-04-17 14:05:04.052472738 +0200 >+++ cups-1.7.2/scheduler/main.c 2014-04-17 14:09:39.102634667 +0200 >@@ -39,6 +39,10 @@ > # endif /* !LAUNCH_JOBKEY_SERVICEIPC */ > #endif /* HAVE_LAUNCH_H */ > >+#ifdef HAVE_SYSTEMD >+#include <systemd/sd-daemon.h> >+#endif /* HAVE_SYSTEMD */ >+ > #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO) > # include <malloc.h> > #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */ >@@ -64,6 +68,9 @@ > static void launchd_checkin(void); > static void launchd_checkout(void); > #endif /* HAVE_LAUNCHD */ >+#ifdef HAVE_SYSTEMD >+static void systemd_checkin(void); >+#endif /* HAVE_SYSTEMD */ > static void parent_handler(int sig); > static void process_children(void); > static void sigchld_handler(int sig); >@@ -563,6 +570,13 @@ main(int argc, /* I - Number of comm > } > #endif /* HAVE_LAUNCHD */ > >+#ifdef HAVE_SYSTEMD >+ /* >+ * If we were started by systemd get the listen sockets file descriptors... >+ */ >+ systemd_checkin(); >+#endif /* HAVE_SYSTEMD */ >+ > /* > * Startup the server... > */ >@@ -654,6 +668,12 @@ main(int argc, /* I - Number of comm > "Scheduler started via launchd."); > else > #endif /* HAVE_LAUNCHD */ >+#ifdef HAVE_SYSTEMD >+ sd_notifyf(0, "READY=1\n" >+ "STATUS=Scheduler is running...\n" >+ "MAINPID=%lu", >+ (unsigned long) getpid()); >+#endif /* HAVE_SYSTEMD */ > if (fg) > cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, > "Scheduler started in foreground."); >@@ -751,6 +771,15 @@ main(int argc, /* I - Number of comm > } > #endif /* HAVE_LAUNCHD */ > >+#ifdef HAVE_SYSTEMD >+ /* >+ * If we were started by systemd get the listen sockets file >+ * descriptors... >+ */ >+ >+ systemd_checkin(); >+#endif /* HAVE_SYSTEMD */ >+ > /* > * Startup the server... > */ >@@ -1500,6 +1529,102 @@ launchd_checkout(void) > } > #endif /* HAVE_LAUNCHD */ > >+#ifdef HAVE_SYSTEMD >+static void >+systemd_checkin(void) >+{ >+ int n, fd; >+ >+ n = sd_listen_fds(0); >+ if (n < 0) >+ { >+ cupsdLogMessage(CUPSD_LOG_ERROR, >+ "systemd_checkin: Failed to acquire sockets from systemd - %s", >+ strerror(-n)); >+ exit(EXIT_FAILURE); >+ return; >+ } >+ >+ if (n == 0) >+ return; >+ >+ for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd ++) >+ { >+ http_addr_t addr; >+ socklen_t addrlen = sizeof (addr); >+ int r; >+ cupsd_listener_t *lis; >+ char s[256]; >+ >+ r = sd_is_socket(fd, AF_UNSPEC, SOCK_STREAM, 1); >+ if (r < 0) >+ { >+ cupsdLogMessage(CUPSD_LOG_ERROR, >+ "systemd_checkin: Unable to verify socket type - %s", >+ strerror(-r)); >+ continue; >+ } >+ >+ if (!r) >+ { >+ cupsdLogMessage(CUPSD_LOG_ERROR, >+ "systemd_checkin: Socket not of the right type"); >+ continue; >+ } >+ >+ if (getsockname(fd, (struct sockaddr*) &addr, &addrlen)) >+ { >+ cupsdLogMessage(CUPSD_LOG_ERROR, >+ "systemd_checkin: Unable to get local address - %s", >+ strerror(errno)); >+ continue; >+ } >+ >+ /* >+ * Try to match the systemd socket address to one of the listeners... >+ */ >+ >+ for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners); >+ lis; >+ lis = (cupsd_listener_t *)cupsArrayNext(Listeners)) >+ if (httpAddrEqual(&lis->address, &addr)) >+ break; >+ >+ if (lis) >+ { >+ cupsdLogMessage(CUPSD_LOG_DEBUG, >+ "systemd_checkin: Matched existing listener %s with fd %d...", >+ httpAddrString(&(lis->address), s, sizeof(s)), fd); >+ } >+ else >+ { >+ cupsdLogMessage(CUPSD_LOG_DEBUG, >+ "systemd_checkin: Adding new listener %s with fd %d...", >+ httpAddrString(&addr, s, sizeof(s)), fd); >+ >+ if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL) >+ { >+ cupsdLogMessage(CUPSD_LOG_ERROR, >+ "systemd_checkin: Unable to allocate listener - " >+ "%s.", strerror(errno)); >+ exit(EXIT_FAILURE); >+ } >+ >+ cupsArrayAdd(Listeners, lis); >+ >+ memcpy(&lis->address, &addr, sizeof(lis->address)); >+ } >+ >+ lis->fd = fd; >+ lis->is_systemd = 1; >+ >+# ifdef HAVE_SSL >+ if (_httpAddrPort(&(lis->address)) == 443) >+ lis->encryption = HTTP_ENCRYPT_ALWAYS; >+# endif /* HAVE_SSL */ >+ } >+} >+#endif /* HAVE_SYSTEMD */ > > /* > * 'parent_handler()' - Catch USR1/CHLD signals... >diff -up cups-1.7.2/scheduler/Makefile.systemd-socket cups-1.7.2/scheduler/Makefile >--- cups-1.7.2/scheduler/Makefile.systemd-socket 2013-05-29 13:51:34.000000000 +0200 >+++ cups-1.7.2/scheduler/Makefile 2014-04-17 14:05:04.108471960 +0200 >@@ -381,7 +381,7 @@ cupsd: $(CUPSDOBJS) $(LIBCUPSMIME) ../cu > $(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) -L. -lcupsmime \ > $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ > $(LIBPAPER) $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBS) \ >- $(LIBGSSAPI) $(LIBWRAP) >+ $(LIBGSSAPI) $(LIBWRAP) $(SDLIBS) > > cupsd-static: $(CUPSDOBJS) libcupsmime.a ../cups/$(LIBCUPSSTATIC) > echo Linking $@... >@@ -389,7 +389,7 @@ cupsd-static: $(CUPSDOBJS) libcupsmime.a > $(LIBZ) $(SSLLIBS) $(LIBSLP) $(LIBLDAP) $(PAMLIBS) \ > ../cups/$(LIBCUPSSTATIC) $(COMMONLIBS) $(LIBZ) $(LIBPAPER) \ > $(LIBMALLOC) $(SERVERLIBS) $(DNSSDLIBS) $(LIBGSSAPI) \ >- $(LIBWRAP) >+ $(LIBWRAP) $(SDLIBS) > > tls.o: tls-darwin.c tls-gnutls.c tls-openssl.c >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 1088918
: 887164