-CHANGES.txt - 2009-07-07
+CHANGES.txt - 2009-07-14
------------------------
CHANGES IN CUPS V1.4.0
- Localization updates (STR #3223, STR #3246, STR #3248, STR #3250)
- - Documentation updates (STR #3225, STR #3230, STR #3242)
+ - Documentation updates (STR #3225, STR #3230, STR #3242, STR #3260)
+ - The USB backend returned different URIs for some printers than in
+ CUPS 1.3 (STR #3259)
+ - The scheduler did not do local job-hold-until processing for remote
+ queues (STR #3258)
+ - The scheduler did not try all possible SSL certificates on Mac OS X.
+ - The scheduler did not always remove a file descriptor when using the
+ kqueue interface (STR #3256)
- The scheduler did not protect against bad job control files in all
cases (STR #3253)
- The scheduler did not encode "+" in model names (STR #3254)
mfg = temp;
}
+ if (!strncasecmp(mdl, mfg, strlen(mfg)))
+ {
+ mdl += strlen(mfg);
+
+ while (isspace(*mdl & 255))
+ mdl ++;
+ }
+
/*
* Generate the device URI from the manufacturer, make_model, and
* serial number strings.
Comment[es.UTF-8]=Interfaz Web de CUPS
Name[et.UTF-8]=Trükkimise haldur
Comment[et.UTF-8]=CUPS-i veebiliides
+Name[eu.UTF-8]=Kudeatu inprimaketak
+Comment[eu.UTF-8]=CUPSen web interfazea
Name[fr.UTF-8]=Gestionnaire d'impression
Comment[fr.UTF-8]=Interface Web de CUPS
Name[he.UTF-8]=נהל הדפסות
HREF="#Limit"><CODE>Limit</CODE></A> section.</P>
-<H2 CLASS="title"><A NAME="DirtyCleanInterval">DirtyCleanInterval</A></H2>
+<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.4/Mac OS X 10.6</SPAN><A NAME="DirtyCleanInterval">DirtyCleanInterval</A></H2>
<H3>Examples</H3>
<P>The <CODE>DirtyCleanInterval</CODE> directive specifies the number of
seconds to wait before updating configuration and state files for printers,
-classes, subscriptions, and jobs. The default is 30 seconds.</P>
+classes, subscriptions, and jobs. The default is 30 seconds. A value of 0
+causes the update to occur as soon as possible, typically within a few
+milliseconds.</P>
<H2 CLASS="title"><A NAME="DocumentRoot">DocumentRoot</A></H2>
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH cupsd.conf 5 "CUPS" "19 April 2009" "Apple Inc."
+.TH cupsd.conf 5 "CUPS" "14 July 2009" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
.br
Denies access to the named host or address.
.TP 5
+DirtyCleanInterval seconds
+.br
+Specifies the delay for updating of configuration and state files. A value of 0
+causes the update to happen as soon as possible, typically within a few
+milliseconds.
+.TP 5
DocumentRoot directory
.br
Specifies the root directory for the internal web server documents.
* 'get_cdsa_certificate()' - Get a SSL/TLS certificate from the System keychain.
*/
-static CFArrayRef /* O - Array of certificates */
-get_cdsa_certificate(cupsd_client_t *con) /* I - Client connection */
+static CFArrayRef /* O - Array of certificates */
+get_cdsa_certificate(
+ cupsd_client_t *con) /* I - Client connection */
{
OSStatus err; /* Error info */
SecKeychainRef keychain; /* Keychain reference */
CSSM_DATA options; /* Policy options */
CSSM_APPLE_TP_SSL_OPTIONS
ssl_options; /* SSL Option for hostname */
+ char localname[1024];/* Local hostname */
if (SecPolicySearchCreate(CSSM_CERT_X_509v3, &CSSMOID_APPLE_TP_SSL,
err = SecIdentitySearchCreateWithPolicy(policy, NULL, CSSM_KEYUSE_SIGN,
keychain, FALSE, &search);
+ if (err && DNSSDHostName)
+ {
+ /*
+ * Search for the connection server name failed; try the DNS-SD .local
+ * hostname instead...
+ */
+
+ snprintf(localname, sizeof(localname), "%s.local", DNSSDHostName);
+
+ ssl_options.ServerName = localname;
+ ssl_options.ServerNameLen = strlen(localname);
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
+ "get_cdsa_certificate: Looking for certs for \"%s\"...",
+ localname);
+
+ if (SecPolicySetValue(policy, &options))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Cannot set policy value to use for searching");
+ CFRelease(keychain);
+ CFRelease(policy_search);
+ return (NULL);
+ }
+
+ err = SecIdentitySearchCreateWithPolicy(policy, NULL, CSSM_KEYUSE_SIGN,
+ keychain, FALSE, &search);
+ }
+
# else
/*
* Assume there is exactly one SecIdentity in the keychain...
attr = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD,
"job-hold-until", NULL, val);
}
- if (attr && strcmp(attr->values[0].string.text, "no-hold") &&
- !(printer->type & CUPS_PRINTER_REMOTE))
+ if (attr && strcmp(attr->values[0].string.text, "no-hold"))
{
/*
* Hold job until specified time...
attr->value_tag == IPP_TAG_BEGIN_COLLECTION) /* Not yet supported */
continue;
- if (!strncmp(attr->name, "time-", 5))
+ if (!strncmp(attr->name, "time-", 5) ||
+ !strcmp(attr->name, "job-hold-until"))
continue;
if (!strncmp(attr->name, "job-", 4) &&
{
cupsdLogMessage(CUPSD_LOG_EMERG, "kevent() returned %s",
strerror(errno));
- return;
+ goto cleanup;
}
}
{
cupsdLogMessage(CUPSD_LOG_EMERG, "kevent() returned %s",
strerror(errno));
- return;
+ goto cleanup;
}
}
-
#elif defined(HAVE_POLL)
/*
* Update the pollfds array...
FD_CLR(fd, &cupsd_current_output);
#endif /* HAVE_EPOLL */
+#ifdef HAVE_KQUEUE
+ cleanup:
+#endif /* HAVE_KQUEUE */
+
/*
* Remove the file descriptor from the active array and add to the
* inactive array (or release, if we don't need the inactive array...)