]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - scheduler/dirsvc.c
Load cups into easysw/current.
[thirdparty/cups.git] / scheduler / dirsvc.c
index c2e19a97039d70d6675f675d663d86f746e511e9..cb751549bc698d57b668e4fb2efe7cbb09a13d00 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $"
+ * "$Id: dirsvc.c 5889 2006-08-24 21:44:35Z mike $"
  *
  *   Directory services routines for the Common UNIX Printing System (CUPS).
  *
@@ -513,6 +513,23 @@ cupsdLoadRemoteCache(void)
 }
 
 
+/*
+ * 'cupsdRestartPolling()' - Restart polling servers as needed.
+ */
+
+void
+cupsdRestartPolling(void)
+{
+  int                  i;              /* Looping var */
+  cupsd_dirsvc_poll_t  *pollp;         /* Current polling server */
+
+
+  for (i = 0, pollp = Polled; i < NumPolled; i ++, pollp ++)
+    if (pollp->pid)
+      kill(pollp->pid, SIGHUP);
+}
+
+
 /*
  * 'cupsdSaveRemoteCache()' - Save the remote printer cache.
  */
@@ -1468,7 +1485,7 @@ cupsdUpdateCUPSBrowse(void)
     if (cupsdCheckAuth(address, srcname, len, 1, &(Relays[i].from)))
       if (sendto(BrowseSocket, packet, bytes, 0,
                  (struct sockaddr *)&(Relays[i].to),
-                sizeof(http_addr_t)) <= 0)
+                httpAddrLength(&(Relays[i].to))) <= 0)
       {
        cupsdLogMessage(CUPSD_LOG_ERROR,
                        "cupsdUpdateCUPSBrowse: sendto failed for relay %d - %s.",
@@ -1609,7 +1626,7 @@ cupsdUpdatePolling(void)
     if (!strchr(PollStatusBuffer->buffer, '\n'))
       break;
 
-  if (ptr == NULL)
+  if (ptr == NULL && !PollStatusBuffer->bufused)
   {
    /*
     * All polling processes have died; stop polling...
@@ -1923,6 +1940,9 @@ process_browse_data(
     else
       return;
 
+    if (hptr && !*hptr)
+      *hptr = '.';                     /* Resource FQDN */
+
     if ((p = cupsdFindClass(name)) == NULL && BrowseShortNames)
     {
       if ((p = cupsdFindClass(resource + 9)) != NULL)
@@ -2026,6 +2046,9 @@ process_browse_data(
     else
       return;
 
+    if (hptr && !*hptr)
+      *hptr = '.';                     /* Resource FQDN */
+
     if ((p = cupsdFindPrinter(name)) == NULL && BrowseShortNames)
     {
       if ((p = cupsdFindPrinter(resource + 10)) != NULL)
@@ -2566,7 +2589,7 @@ send_cups_browse(cupsd_printer_t *p)      /* I - Printer to send */
 
          sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(iface->broadcast),
-                sizeof(struct sockaddr_in));
+                httpAddrLength(&(iface->broadcast)));
         }
       }
       else if ((iface = cupsdNetIFFind(b->iface)) != NULL)
@@ -2607,7 +2630,7 @@ send_cups_browse(cupsd_printer_t *p)      /* I - Printer to send */
 
          sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(iface->broadcast),
-                sizeof(struct sockaddr_in));
+                httpAddrLength(&(iface->broadcast)));
         }
       }
     }
@@ -2628,7 +2651,7 @@ send_cups_browse(cupsd_printer_t *p)      /* I - Printer to send */
 
       if (sendto(BrowseSocket, packet, bytes, 0,
                 (struct sockaddr *)&(b->to),
-                sizeof(struct sockaddr_in)) <= 0)
+                httpAddrLength(&(b->to))) <= 0)
       {
        /*
         * Unable to send browse packet, so remove this address from the
@@ -3158,5 +3181,5 @@ slp_url_callback(
 
 
 /*
- * End of "$Id: dirsvc.c 5724 2006-07-12 19:42:35Z mike $".
+ * End of "$Id: dirsvc.c 5889 2006-08-24 21:44:35Z mike $".
  */