<dd style="margin-left: 5.0em"><dt><b>KeepAlive No</b>
<dd style="margin-left: 5.0em">Specifies whether to support HTTP keep-alive connections.
The default is "Yes".
-<dt><a name="KeepAliveTimeout"></a><b>KeepAliveTimeout </b><i>seconds</i>
-<dd style="margin-left: 5.0em">Specifies how long an idle client connection remains open.
-The default is "30".
<dt><a name="LimitIPP"></a><b><Limit </b><i>operation </i>...<b>> </b>... <b></Limit></b>
<dd style="margin-left: 5.0em">Specifies the IPP operations that are being limited inside a Policy section. IPP operation names are listed below in the section "IPP OPERATION NAMES".
<dt><a name="Limit"></a><b><Limit </b><i>method </i>...<b>> </b>... <b></Limit></b>
<dt><b>WITH-DISTINCT-VALUES</b>
<dd style="margin-left: 5.0em">Requires that all values of the <b>EXPECT</b> attribute are unique.
Comparisons are case-sensitive.
-Only charset, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
+Only charset, collection, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
<dt><b>WITH-HOSTNAME "</b><i>literal string</i><b>"</b>
<dd style="margin-left: 5.0em"><dt><b>WITH-HOSTNAME "/</b><i>regular expression</i><b>/"</b>
<dd style="margin-left: 5.0em">Requires that at least one URI value contains a matching hostname.
\fBWITH\-DISTINCT\-VALUES\fR
Requires that all values of the \fBEXPECT\fR attribute are unique.
Comparisons are case-sensitive.
-Only charset, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
+Only charset, collection, enum, integer, keyword, mimeMediaType, naturalLanguage, rangeOfInteger, resolution, uriScheme attributes support this predicate.
.TP 5
\fBWITH\-HOSTNAME "\fIliteral string\fB"\fR
.TP 5
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
+ case IPP_TAG_BEGIN_COLLECTION :
break;
default :
case IPP_TAG_MIMETYPE :
value = ippGetString(attr, i, NULL);
break;
+ case IPP_TAG_BEGIN_COLLECTION :
+ {
+ ipp_t *col = ippGetCollection(attr, i);
+ // Collection value
+ ipp_attribute_t *member; // Member attribute
+ char *bufptr, // Pointer into buffer
+ *bufend, // End of buffer
+ prefix; // Prefix character
+
+ for (prefix = '{', bufptr = buffer, bufend = buffer + sizeof(buffer) - 2, member = ippFirstAttribute(col); member && bufptr < bufend; member = ippNextAttribute(col))
+ {
+ *bufptr++ = prefix;
+ prefix = ' ';
+
+ ippAttributeString(member, bufptr, (size_t)(bufend - bufptr));
+ bufptr += strlen(bufptr);
+ }
+
+ *bufptr++ = '}';
+ *bufptr = '\0';
+ value = buffer;
+ }
+ break;
default : // Should never happen
value = "unsupported";
break;