From: Michael R Sweet Date: Fri, 9 Apr 2021 14:20:04 +0000 (-0400) Subject: Retry Validate-Job once, if needed (Issue #132) X-Git-Tag: v2.4b1~148 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e6999b1f74457b7fd6057a31f1d3606de19a05b;p=thirdparty%2Fcups.git Retry Validate-Job once, if needed (Issue #132) --- diff --git a/CHANGES.md b/CHANGES.md index e8ce786c98..d668fba6e5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -33,6 +33,7 @@ CUPS v2.4rc1 (Pending) negotiation failed (Apple #5907) - `httpUpdate` did not reset the socket file descriptor when the TLS negotiation failed (Apple #5915) +- The IPP backend now retries Validate-Job requests (Issue #132) - Documentation fixes (Issue #92, Issue #163) - Localization updates (Issue #123, Issue #129, Issue #134, Issue #146, Issue #164) diff --git a/backend/ipp.c b/backend/ipp.c index 63353a66df..020ab7fd4a 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -1,7 +1,8 @@ /* * IPP backend for CUPS. * - * Copyright © 2007-2019 by Apple Inc. + * Copyright © 2021 by OpenPrinting + * Copyright © 2007-2021 by Apple Inc. * Copyright © 1997-2007 by Easy Software Products, all rights reserved. * * Licensed under Apache License v2.0. See the file "LICENSE" for more @@ -256,6 +257,7 @@ main(int argc, /* I - Number of command-line args */ get_job_attrs = 0, /* Does printer support Get-Job-Attributes? */ send_document = 0, /* Does printer support Send-Document? */ validate_job = 0, /* Does printer support Validate-Job? */ + validate_retried = 0, /* Was Validate-Job request retried? */ copies, /* Number of copies for job */ copies_remaining; /* Number of copies remaining */ const char *content_type, /* CONTENT_TYPE environment variable */ @@ -1559,7 +1561,17 @@ main(int argc, /* I - Number of command-line args */ ipp_status == IPP_STATUS_ERROR_BAD_REQUEST) break; else if (job_auth == NULL && ipp_status > IPP_STATUS_ERROR_BAD_REQUEST) + { + if (!validate_retried) + { + // Retry Validate-Job operation once, to work around known printer bug... + validate_retried = 1; + sleep(10); + continue; + } + goto cleanup; + } } /*