]> git.pld-linux.org Git - packages/cups.git/commitdiff
- fixed bug: 'Unable to open "/dev/null" - Too many open files' (fixed in CUPS svn)
authorKarol Krenski <charles@pld-linux.org>
Mon, 5 Jun 2006 13:20:49 +0000 (13:20 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    cups-str1736.patch -> 1.1

cups-str1736.patch [new file with mode: 0644]

diff --git a/cups-str1736.patch b/cups-str1736.patch
new file mode 100644 (file)
index 0000000..b2cc0c5
--- /dev/null
@@ -0,0 +1,169 @@
+--- cups-1.2.1/scheduler/client.c.orig 2006-05-22 17:34:01.000000000 +0200
++++ cups-1.2.1/scheduler/client.c      2006-06-05 14:54:53.436660500 +0200
+@@ -1882,24 +1882,27 @@
+   if (con->filename)
++  {
+     fd = open(con->filename, O_RDONLY);
+-  else
+-    fd = open("/dev/null", O_RDONLY);
+-  if (fd < 0)
+-  {
+-    cupsdLogMessage(CUPSD_LOG_ERROR,
+-                    "cupsdSendCommand: %d Unable to open \"%s\" for reading: %s",
+-                    con->http.fd, con->filename ? con->filename : "/dev/null",
+-                  strerror(errno));
+-    return (0);
+-  }
++    if (fd < 0)
++    {
++      cupsdLogMessage(CUPSD_LOG_ERROR,
++                    "cupsdSendCommand: %d Unable to open \"%s\" for reading: %s",
++                    con->http.fd, con->filename ? con->filename : "/dev/null",
++                    strerror(errno));
++      return (0);
++    }
+-  fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
++    fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC);
++  }
++  else
++    fd = -1;
+   con->pipe_pid = pipe_command(con, fd, &(con->file), command, options, root);
+-  close(fd);
++  if (fd >= 0)
++    close(fd);
+   cupsdLogMessage(CUPSD_LOG_INFO, "Started \"%s\" (pid=%d)", command,
+                   con->pipe_pid);
+--- cups-1.2.1/scheduler/job.c.orig    2006-05-18 23:00:56.000000000 +0200
++++ cups-1.2.1/scheduler/job.c 2006-06-05 14:44:04.660114500 +0200
+@@ -3090,28 +3090,6 @@
+   job->status = 0;
+   memset(job->filters, 0, sizeof(job->filters));
+-  filterfds[1][0] = open("/dev/null", O_RDONLY);
+-
+-  if (filterfds[1][0] < 0)
+-  {
+-    cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to open \"/dev/null\" - %s.",
+-                    strerror(errno));
+-    snprintf(printer->state_message, sizeof(printer->state_message),
+-             "Unable to open \"/dev/null\" - %s.", strerror(errno));
+-
+-    cupsdAddPrinterHistory(printer);
+-
+-    cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
+-                  "Job canceled because the server could not open /dev/null.");
+-
+-    goto abort_job;
+-  }
+-
+-  fcntl(filterfds[1][0], F_SETFD, fcntl(filterfds[1][0], F_GETFD) | FD_CLOEXEC);
+-
+-  cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job: filterfds[%d] = [ %d %d ]",
+-                  1, filterfds[1][0], filterfds[1][1]);
+-
+   for (i = 0, slot = 0, filter = (mime_filter_t *)cupsArrayFirst(filters);
+        filter;
+        i ++, filter = (mime_filter_t *)cupsArrayNext(filters))
+@@ -3165,36 +3143,43 @@
+       else
+       {
+         job->print_pipes[0] = -1;
+-        if (!strncmp(printer->device_uri, "file:/dev/", 10) &&
+-            strcmp(printer->device_uri, "file:/dev/null"))
+-          job->print_pipes[1] = open(printer->device_uri + 5,
+-                                     O_WRONLY | O_EXCL);
+-        else if (!strncmp(printer->device_uri, "file:///dev/", 12) &&
+-                 strcmp(printer->device_uri, "file:///dev/null"))
+-          job->print_pipes[1] = open(printer->device_uri + 7,
+-                                     O_WRONLY | O_EXCL);
++        if (!strcmp(printer->device_uri, "file:/dev/null") ||
++            !strcmp(printer->device_uri, "file:///dev/null"))
++          job->print_pipes[1] = -1;
+         else
+-          job->print_pipes[1] = open(printer->device_uri + 5,
+-                                     O_WRONLY | O_CREAT | O_TRUNC, 0600);
+-
+-        if (job->print_pipes[1] < 0)
+         {
+-            cupsdLogMessage(CUPSD_LOG_ERROR,
+-                          "Unable to open output file \"%s\" - %s.",
+-                          printer->device_uri, strerror(errno));
+-            snprintf(printer->state_message, sizeof(printer->state_message),
+-                   "Unable to open output file \"%s\" - %s.",
+-                   printer->device_uri, strerror(errno));
++          if (!strncmp(printer->device_uri, "file:/dev/", 10))
++            job->print_pipes[1] = open(printer->device_uri + 5,
++                                       O_WRONLY | O_EXCL);
++          else if (!strncmp(printer->device_uri, "file:///dev/", 12))
++            job->print_pipes[1] = open(printer->device_uri + 7,
++                                       O_WRONLY | O_EXCL);
++          else if (!strncmp(printer->device_uri, "file:///", 8))
++            job->print_pipes[1] = open(printer->device_uri + 7,
++                                       O_WRONLY | O_CREAT | O_TRUNC, 0600);
++          else
++            job->print_pipes[1] = open(printer->device_uri + 5,
++                                       O_WRONLY | O_CREAT | O_TRUNC, 0600);
+-          cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
+-                        "Job canceled because the server could not open the "
+-                        "output file.");
++          if (job->print_pipes[1] < 0)
++          {
++              cupsdLogMessage(CUPSD_LOG_ERROR,
++                            "Unable to open output file \"%s\" - %s.",
++                            printer->device_uri, strerror(errno));
++              snprintf(printer->state_message, sizeof(printer->state_message),
++                     "Unable to open output file \"%s\" - %s.",
++                     printer->device_uri, strerror(errno));
+-            goto abort_job;
+-        }
++            cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
++                          "Job canceled because the server could not open the "
++                          "output file.");
+-        fcntl(job->print_pipes[1], F_SETFD,
+-              fcntl(job->print_pipes[1], F_GETFD) | FD_CLOEXEC);
++              goto abort_job;
++          }
++
++          fcntl(job->print_pipes[1], F_SETFD,
++                fcntl(job->print_pipes[1], F_GETFD) | FD_CLOEXEC);
++          }
+       }
+       cupsdLogMessage(CUPSD_LOG_DEBUG2,
+@@ -3274,25 +3259,7 @@
+       argv[0] = sani_uri;
+       filterfds[slot][0] = -1;
+-      filterfds[slot][1] = open("/dev/null", O_WRONLY);
+-
+-      if (filterfds[slot][1] < 0)
+-      {
+-      cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to open \"/dev/null\" - %s.",
+-                      strerror(errno));
+-      snprintf(printer->state_message, sizeof(printer->state_message),
+-               "Unable to open \"/dev/null\" - %s.", strerror(errno));
+-
+-      cupsdAddPrinterHistory(printer);
+-
+-      cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
+-                      "Job canceled because the server could not open a file.");
+-
+-        goto abort_job;
+-      }
+-
+-      fcntl(filterfds[slot][1], F_SETFD,
+-            fcntl(filterfds[slot][1], F_GETFD) | FD_CLOEXEC);
++      filterfds[slot][1] = -1;
+       cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job: backend=\"%s\"",
+                       command);
This page took 0.091732 seconds and 4 git commands to generate.