static ipp_pstate_t check_printer_state(http_t *http, const char *uri,
const char *resource,
const char *user, int version);
+static void debug_attributes(ipp_t *ipp);
static void *monitor_printer(_cups_monitor_t *monitor);
static ipp_t *new_request(ipp_op_t op, int version, const char *uri,
const char *user, const char *title,
fprintf(stderr, "DEBUG: Validate-Job: %s (%s)\n",
ippErrorString(ipp_status), cupsLastErrorString());
+ debug_attributes(response);
if ((job_auth = ippFindAttribute(response, "job-authorization-uri",
IPP_TAG_URI)) != NULL)
fprintf(stderr, "DEBUG: %s: %s (%s)\n",
(num_files > 1 || create_job) ? "Create-Job" : "Print-Job",
ippErrorString(ipp_status), cupsLastErrorString());
+ debug_attributes(response);
if (ipp_status > IPP_OK_CONFLICT)
{
"compression", NULL, compression);
fprintf(stderr, "DEBUG: Sending file %d using chunking...\n", i + 1);
+ fprintf(stderr, "DEBUG: IPP/%d.%d %s #%d\n", version / 10, version % 10, ippOpString(ippGetOperation(request)), ippGetRequestId(request));
+ debug_attributes(request);
+
http_status = cupsSendRequest(http, request, resource, 0);
if (http_status == HTTP_CONTINUE && request->state == IPP_DATA)
{
fprintf(stderr, "DEBUG: Error writing document data for "
"Send-Document: %s\n", strerror(httpError(http)));
- ippDelete(cupsGetResponse(http, resource));
+ response = cupsGetResponse(http, resource);
ippDelete(request);
fprintf(stderr, "DEBUG: Send-Document: %s (%s)\n",
ippErrorString(cupsLastError()), cupsLastErrorString());
+ debug_attributes(response);
+ ippDelete(response);
if (cupsLastError() > IPP_OK_CONFLICT && !job_canceled)
{
"requested-attributes", sizeof(jattrs) / sizeof(jattrs[0]),
NULL, jattrs);
+ fprintf(stderr, "DEBUG: IPP/%d.%d %s #%d\n", version / 10, version % 10, ippOpString(ippGetOperation(request)), ippGetRequestId(request));
+ debug_attributes(request);
+
/*
* Do the request...
*/
fprintf(stderr, "DEBUG: Get-Job-Attributes: %s (%s)\n",
ippErrorString(ipp_status), cupsLastErrorString());
+ debug_attributes(response);
if (ipp_status <= IPP_OK_CONFLICT)
password_tries = 0;
"requested-attributes",
(int)(sizeof(pattrs) / sizeof(pattrs[0])), NULL, pattrs);
+ fprintf(stderr, "DEBUG: IPP/%d.%d %s #%d\n", version / 10, version % 10, ippOpString(ippGetOperation(request)), ippGetRequestId(request));
+ debug_attributes(request);
+
if ((response = cupsDoRequest(http, request, resource)) != NULL)
{
report_printer_state(response);
fprintf(stderr, "DEBUG: Get-Printer-Attributes: %s (%s)\n",
ippErrorString(cupsLastError()), cupsLastErrorString());
+ debug_attributes(response);
/*
* Return the printer-state value...
}
+/*
+ * 'debug_attributes()' - Print out the request or response attributes as DEBUG
+ * messages...
+ */
+
+static void
+debug_attributes(ipp_t *ipp) /* I - Request or response message */
+{
+ ipp_tag_t group; /* Current group */
+ ipp_attribute_t *attr; /* Current attribute */
+ char buffer[1024]; /* Value buffer */
+
+
+ for (group = IPP_TAG_ZERO, attr = ippFirstAttribute(ipp);
+ attr;
+ attr = ippNextAttribute(ipp))
+ {
+ const char *name = ippGetName(attr);
+
+ if (!name)
+ {
+ group = IPP_TAG_ZERO;
+ continue;
+ }
+
+ if (group != ippGetGroupTag(attr))
+ {
+ group = ippGetGroupTag(attr);
+ fprintf(stderr, "DEBUG: ---- %s ----\n", ippTagString(group));
+ }
+
+ if (!strcmp(name, "job-password"))
+ strlcpy(buffer, "---", sizeof(buffer));
+ else
+ ippAttributeString(attr, buffer, sizeof(buffer));
+
+ fprintf(stderr, "DEBUG: %s %s%s %s\n", name,
+ ippGetCount(attr) > 1 ? "1setOf " : "",
+ ippTagString(ippGetValueTag(attr)), buffer);
+ }
+
+ fprintf(stderr, "DEBUG: ---- %s ----\n", ippTagString(IPP_TAG_END));
+}
+
+
/*
* 'monitor_printer()' - Monitor the printer state.
*/
{
ipp_t *request; /* Request data */
const char *keyword; /* PWG keyword */
- ipp_tag_t group; /* Current group */
- ipp_attribute_t *attr; /* Current attribute */
- char buffer[1024]; /* Value buffer */
/*
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "copies", copies);
}
- fprintf(stderr, "DEBUG: IPP/%d.%d %s #%d\n", version / 10, version % 10,
- ippOpString(ippGetOperation(request)), ippGetRequestId(request));
- for (group = IPP_TAG_ZERO, attr = ippFirstAttribute(request);
- attr;
- attr = ippNextAttribute(request))
- {
- const char *name = ippGetName(attr);
-
- if (!name)
- {
- group = IPP_TAG_ZERO;
- continue;
- }
-
- if (group != ippGetGroupTag(attr))
- {
- group = ippGetGroupTag(attr);
- fprintf(stderr, "DEBUG: ---- %s ----\n", ippTagString(group));
- }
-
- ippAttributeString(attr, buffer, sizeof(buffer));
- fprintf(stderr, "DEBUG: %s %s%s %s\n", name,
- ippGetCount(attr) > 1 ? "1setOf " : "",
- ippTagString(ippGetValueTag(attr)), buffer);
- }
-
- fprintf(stderr, "DEBUG: ---- %s ----\n", ippTagString(IPP_TAG_END));
+ fprintf(stderr, "DEBUG: IPP/%d.%d %s #%d\n", version / 10, version % 10, ippOpString(ippGetOperation(request)), ippGetRequestId(request));
+ debug_attributes(request);
return (request);
}