Here is the fix for this bug (will be in the next 1.6.x and 1.7 releases), which undoes a change that happened right before CUPS 1.1.14 (a little over 11 years ago) to always have a default printer:
Index: cups/dest.c =================================================================== --- cups/dest.c (revision 11060) +++ cups/dest.c (revision 11061) @@ -3,7 +3,7 @@ * * User-defined destination (and option) support for CUPS. * - * Copyright 2007-2012 by Apple Inc. + * Copyright 2007-2013 by Apple Inc. * Copyright 1997-2007 by Easy Software Products. * * These coded instructions, statements, and computer programs are the @@ -1657,7 +1657,6 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */ cups_dest_t **dests) /* O - Destinations */ { - int i; /* Looping var */ int num_dests; /* Number of destinations */ cups_dest_t *dest; /* Destination pointer */ const char *home; /* HOME environment variable */ @@ -1780,21 +1779,16 @@ * Have a default; see if it is real... */ - dest = cupsGetDest(dest->name, NULL, num_reals, reals); - } + if (!cupsGetDest(dest->name, NULL, num_reals, reals)) + { + /* + * Remove the non-real printer from the list, since we don't want jobs + * going to an unexpected printer... (<rdar://problem/14216472>) + */ - /* - * If dest is NULL, then no default (that exists) is set, so we - * need to set a default if one exists... - */ - - if (!dest && *dests && defprinter) - { - for (i = 0; i < num_dests; i ++) - (*dests)[i].is_default = 0; - - if ((dest = cupsGetDest(name, instance, num_dests, *dests)) != NULL) - dest->is_default = 1; + num_dests = cupsRemoveDest(dest->name, dest->instance, num_dests, + dests); + } } /* _________________________________________________________ Michael Sweet, Senior Printing System Engineer, PWG Chair -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org