[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#916765: cups-browsed: Aborts when restarted with "BrowseFilter pdl postscript"



Package: cups-browsed
Version: 1.21.6-2
Severity: normal
Tags: upstream



cups-browsed.conf and a log are attached.

Whilst taking another look at #908573 the service fails to restart
when the only uncommented line for BrowseFilter has "pdl postscript".
journalctl shows

Dec 18 11:21:22 test systemd[1]: Started Make remote CUPS printers available locally.
Dec 18 11:21:22 test cups-browsed[1029]: double free or corruption (fasttop)
Dec 18 11:21:22 test systemd[1]: cups-browsed.service: Main process exited, code=killed, status=6/ABRT
Dec 18 11:21:22 test systemd[1]: cups-browsed.service: Failed with result 'signal'.

I am fairly sure that I tested this BrowseFilter line when doing #908573
and it was working.

Regards,

Brian.
Tue Dec 18 11:21:22 2018 main() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 cups-browsed: Creating http connection to local CUPS daemon: /var/run/cups/cups.sock:631
Tue Dec 18 11:21:22 2018 update_netifs() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 network interface lo: Local host name/address: 127.0.0.1
Tue Dec 18 11:21:22 2018 network interface lo: Local host name/address: localhost
Tue Dec 18 11:21:22 2018 network interface eth1: Local host name/address: 192.168.7.66
Tue Dec 18 11:21:22 2018 network interface eth1: Local host name/address: test.lan
Tue Dec 18 11:21:22 2018 Network interface eth1 at 192.168.7.66 for legacy CUPS browsing/broadcasting
Tue Dec 18 11:21:22 2018 network interface lo: Local host name/address: ::1
Tue Dec 18 11:21:22 2018 network interface eth1: Local host name/address: fe80::219:d1ff:fe4d:2a70
Tue Dec 18 11:21:22 2018 cups-browsed [BrowsePoll /var/run/cups/cups.sock:0]: IPP-Create-Subscription
Tue Dec 18 11:21:22 2018 cups-browsed [BrowsePoll /var/run/cups/cups.sock:0]: subscription ID=626
Tue Dec 18 11:21:22 2018 cups-browsed (/var/run/cups/cups.sock): cupsEnumDests
Tue Dec 18 11:21:22 2018 Could not determine system default printer!
Tue Dec 18 11:21:22 2018 find_previous_queue() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 find_previous_queue() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Using signal handler SIGACTION
Tue Dec 18 11:21:22 2018 Avahi server connection got available, setting up service browsers.
Tue Dec 18 11:21:22 2018 listening
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'realq @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'LaserJet-300 @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'xxx @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-booklet @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-A4 @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'CustomisedPrinting @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'ENVY4500' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'Scanner on desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'CustomisedPrinting @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-A4 @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-booklet @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'LaserJet-300 @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'realq @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'xxx @ desktop' of type '_ipp._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Unable to find interface name for interface -1: No such device or address
Tue Dec 18 11:21:22 2018 Avahi Browser: CACHE_EXHAUSTED
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'CustomisedPrinting @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-A4 @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-booklet @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'LaserJet-300 @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'realq @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'xxx @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'realq @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'xxx @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'LaserJet-300 @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-booklet @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'josiecopierbackroom-duplex-A4 @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Avahi Browser: NEW: service 'CustomisedPrinting @ desktop' of type '_ipps._tcp' in domain 'local' on interface 'eth1'
Tue Dec 18 11:21:22 2018 browse_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 Unable to find interface name for interface -1: No such device or address
Tue Dec 18 11:21:22 2018 Avahi Browser: CACHE_EXHAUSTED
Tue Dec 18 11:21:22 2018 resolve_callback() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 update_netifs() in THREAD -1232143808
Tue Dec 18 11:21:22 2018 network interface lo: Local host name/address: 127.0.0.1
Tue Dec 18 11:21:22 2018 network interface lo: Local host name/address: localhost
Tue Dec 18 11:21:22 2018 network interface eth1: Local host name/address: 192.168.7.66
Tue Dec 18 11:21:22 2018 network interface eth1: Local host name/address: test.lan
Tue Dec 18 11:21:22 2018 Network interface eth1 at 192.168.7.66 for legacy CUPS browsing/broadcasting
Tue Dec 18 11:21:22 2018 network interface lo: Local host name/address: ::1
Tue Dec 18 11:21:22 2018 network interface eth1: Local host name/address: fe80::219:d1ff:fe4d:2a70
Tue Dec 18 11:21:22 2018 Avahi Resolver: Service 'realq @ desktop' of type '_ipp._tcp' in domain 'local' with host name 'desktop.local' and port 631 on interface 'eth1' (IPv6).
Tue Dec 18 11:21:22 2018 Avahi-Resolver: Instance: realq
Tue Dec 18 11:21:22 2018 Found CUPS queue/class: realq on host desktop.local.
Tue Dec 18 11:21:22 2018 cups-browsed [BrowsePoll /var/run/cups/cups.sock:0]: IPP-Get-Notifications
Tue Dec 18 11:21:22 2018 cups-browsed [BrowsePoll /var/run/cups/cups.sock:0]: no events
Tue Dec 18 11:21:22 2018 Matching printer "realq_desktop" with properties Host = "desktop.local", Port = 631, Service Name = "realq @ desktop", Domain = "local" with the BrowseFilter lines in cups-browsed.conf
Tue Dec 18 11:21:22 2018 Matching with line "BrowseFilter pdl postscript"Tue Dec 18 11:21:22 2018 , TXT record entry: pdl = application/octet-stream,application/pdf,application/postscript,image/jpeg,image/png,image/pwg-raster,image/urf
# All configuration options described here can also be supplied on the
# command line of cups-browsed via the "-o" option. In case of
# contradicting settings the setting defined in the configuration file
# will get used.

# Unknown directives are ignored, also unknown values.


# Where should cups-browsed save information about the print queues it had
# generated when shutting down, like whether one of these queues was the
# default printer, or default option settings of the queues?

# CacheDir /var/cache/cups


# Where should cups-browsed create its debug log file (if "DebugLogging file"
# is set)?

 LogDir /var/log/cups


# How should debug logging be done? Into the file
# /var/log/cups/cups-browsed_log ('file'), to stderr ('stderr'), or
# not at all ('none')?

 DebugLogging file
# DebugLogging stderr
# DebugLogging file stderr
# DebugLogging none


# Which protocols will we use to discover printers on the network?
# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.

BrowseRemoteProtocols dnssd cups


# Which protocols will we use to broadcast shared local printers to the network?
# Can use DNSSD and/or CUPS, or 'none' for neither.
# Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore
# DNSSD in this directive).

# BrowseLocalProtocols none


# Settings of this directive apply to both BrowseRemoteProtocols and
# BrowseLocalProtocols.
# Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither.

# BrowseProtocols none


# Only browse remote printers (via DNS-SD or CUPS browsing) from
# selected servers using the "BrowseAllow", "BrowseDeny", and
# "BrowseOrder" directives

# This serves for restricting the choice of printers in print dialogs
# to trusted servers or to reduce the number of listed printers in the
# print dialogs to a more user-friendly amount in large networks with
# very many shared printers.

# This only filters the selection of remote printers for which
# cups-browsed creates local queues. If the print dialog uses other
# mechanisms to list remote printers as for example direct DNS-SD
# access, cups-browsed has no influence. cups-browsed also does not
# prevent the user from manually accessing non-listed printers.

# "BrowseAllow": Accept printers from these hosts or networks. If
# there are only "BrowseAllow" lines and no "BrowseOrder" and/or
# "BrowseDeny" lines, only servers matching at last one "BrowseAllow"
# line are accepted.

# "BrowseDeny": Deny printers from these hosts or networks. If there
# are only "BrowseDeny" lines and no "BrowseOrder" and/or
# "BrowseAllow" lines, all servers NOT matching any of the
# "BrowseDeny" lines are accepted.

# "BrowseOrder": Determine the order in which "BrowseAllow" and
# "BrowseDeny" lines are applied. With "BrowseOrder Deny,Allow" in the
# beginning all servers are accepted, then the "BrowseDeny" lines are
# applied to exclude unwished servers or networks and after that the
# "BrowseAllow" lines to re-include servers or networks. With
# "BrowseOrder Allow,Deny" we start with denying all servers, then
# applying the "BrowseAllow" lines and afterwards the "BrowseDeny"
# lines.

# Default for "BrowseOrder" is "Deny.Allow" if there are both
# "BrowseAllow" and "BrowseDeny" lines.

# If there are no "Browse..." lines at all, all servers are accepted.

# BrowseAllow All
# BrowseAllow cups.example.com
# BrowseAllow 192.168.1.12
# BrowseAllow 192.168.1.0/24
# BrowseAllow 192.168.1.0/255.255.255.0

# BrowseDeny All
# BrowseDeny printserver.example.com
# BrowseDeny 192.168.1.13
# BrowseDeny 192.168.3.0/24
# BrowseDeny 192.168.3.0/255.255.255.0

# BrowseOrder Deny,Allow
# BrowseOrder Allow,Deny


# The interval between browsing/broadcasting cycles, local and/or
# remote, can be adjusted with the BrowseInterval directive.

# BrowseInterval 60


# Browsing-related operations such as adding or removing printer queues
# and broadcasting are each allowed to take up to a given amount of time.
# It can be configured, in seconds, with the BrowseTimeout directive.
# Especially queues discovered by CUPS broadcasts will be removed after
# this timeout if no further broadcast from the server happens.

# BrowseTimeout 300


# Filtering of remote printers by other properties than IP addresses
# of their servers

# Often the desired selection of printers cannot be reached by only
# taking into account the IP addresses of the servers. For these cases
# there is the BrowseFilter directive to filter by most of the known
# properties of the printer.

# By default there is no BrowseFilter line meaning that no filtering
# is applied.

# To do filtering one can supply one or more BrowseFilter directives
# like this:

# BrowseFilter [NOT] [EXACT] <FIELD> [<VALUE>]

# The BrowseFilter directive always starts with the word
# "BrowseFilter" and it must at least contain the name of the data
# field (<FIELD>) of the printer's properties to which it should
# apply.

# Available field names are:

#   name:    Name of the local print queue to be created
#   host:    Host name of the remote print server
#   port:    Port through which the printer is accessed on the server
#   service: DNS/SD service name of the remote printer
#   domain:  Domain of the remote print server

# Also all field names in the TXT records of DNS-SD-advertised printers
# are valid, like "color", "duplex", "pdl", ... If the field name of
# the filter rule does not exist for the printer, the rule is skipped.

# The optional <VALUE> field is either the exact value (when the
# option EXACT is supplied) or a regular expression (Run "man 7 regex"
# in a terminal window) to be matched with the data field.

# If no <VALUE> filed is supplied, rules with field names of the TXT
# record are considered for boolean matching (true/false) of boolean
# field (like duplex, which can have the values "T" for true and "F"
# for false).

# If the option NOT is supplied, the filter rule is fulfilled if the
# regular expression or the exact value DOES NOT match the content of
# the data field. In a boolean rule (without <VALUE>) the rule matches
# false.

# Regular expressions are always considered case-insensitive and
# extended POSIX regular expressions. Field names and options (NOT,
# EXACT) are all evaluated case-insensitive. If there is an error in a
# regular expression, the BrowseFilter line gets ignored.

# Especially to note is that supplying any simple string consisting of
# only letters, numbers, spaces, and some basic special characters as
# a regular expression matches if it is contained somewhere in the
# data field.

# If there is more than one BrowseFilter directive, ALL the directives
# need to be fulfilled for the remote printer to be accepted. If one
# is not fulfilled, the printer will get ignored.

# Examples:

# Rules for standard data items which are supplied with any remote
# printer advertised via DNS-SD:

# Print queue name must contain "hum_res_", this matches
# "hum_res_mono" or "hum_res_color" but also "old_hum_res_mono":

# BrowseFilter name hum_res_

# This matches if the remote host name contains "printserver", like
# "printserver.local", "printserver2.example.com", "newprintserver":

# BrowseFilter host printserver

# This matches all ports with 631 int its number, for example 631,
# 8631, 10631,...:

# BrowseFilter port 631

# This rule matches if the DNS-SD service name contains "@ printserver":

# Browsefilter service @ printserver

# Matches all domains with "local" in their names, not only "local" but
# also things like "printlocally.com":

# BrowseFilter domain local

# Examples for rules applying to items of the TXT record:

# This rule selects PostScript printers, as the "PDL" field in the TXT
# record contains "postscript" then. This includes also remote CUPS
# queues which accept PostScript, independent of whether the physical
# printer behind the CUPS queue accepts PostScript or not.


BrowseFilter pdl postscript

# Color printers usually contain a "Color" entry set to "T" (for true)
# in the TXT record. This rule selects them:

# BrowseFilter color

# This is a similar rule to select only duplex (automatic double-sided
# printing) printers:

#BrowseFilter duplex

# Rules with the NOT option:

# This rule EXCLUDES printers from all hosts containing "financial" in
# their names, nice to get rid of the 100s of printers of the
# financial department:

# BrowseFilter NOT host financial

# Get only monochrome printers ("Color" set to "F", meaning false, in
# the TXT record):

# BrowseFilter NOT color

# Rules with more advanced use of regular expressions:

# Only queue names which BEGIN WITH "hum_res_" are accepted now, so we
# still get "hum_res_mono" or "hum_res_color" but not
# "old_hum_res_mono" any more:

# BrowseFilter name ^hum_res_

# Server names is accepted if it contains "print_server" OR
# "graphics_dep_server":

# BrowseFilter host print_server|graphics_dep_server

# "printserver1", "printserver2", and "printserver3", nothing else:

# BrowseFilter host ^printserver[1-3]$

# Printers understanding at least one of PostScript, PCL, or PDF:

# BrowseFilter pdl postscript|pcl|pdf

# Examples for the EXACT option:

# Only printers from "printserver.local" are accepted:

# BrowseFilter EXACT host printserver.local

# Printers from all servers except "prinserver2.local" are accepted:

# BrowseFilter NOT EXACT host prinserver2.local


# Use BrowsePoll to poll a particular CUPS server

# BrowsePoll cups.example.com
# BrowsePoll cups.example.com:631
# BrowsePoll cups.example.com:631/version=1.1


# LDAP browsing configuration
# The default value for all options is an empty string. Example configuration:

# BrowseLDAPBindDN cn=cups-browsed,dc=domain,dc=tld
# BrowseLDAPCACertFile /path/to/server/certificate.pem
# BrowseLDAPDN ou=printers,dc=domain,dc=tld
# BrowseLDAPFilter (printerLocation=/Office 1/*)
# BrowseLDAPPassword s3cret
# BrowseLDAPServer ldaps://ldap.domain.tld


# Use DomainSocket to access the local CUPS daemon via another than the
# default domain socket. "None" or "Off" lets cups-browsed not use CUPS'
# domain socket.

# DomainSocket /var/run/cups/cups.sock
# DomainSocket None
# DomainSocket Off


# Set HTTP timeout (in seconds) for requests sent to local/remote
# resources Note that too short timeouts can make services getting
# missed when they are present and operations be unneccessarily
# repeated and too long timeouts can make operations take too long
# when the server does not respond.

# HttpLocalTimeout 5
# HttpRemoteTimeout 10

# Set how many retries (N) should cups-browsed do for creating print
# queues for remote printers which receive timeouts during print queue
# creation.  The printers which are not successfuly set up even after
# N retries, are skipped until the next restart of the service.  Note
# that too many retries can cause high CPU load.

# HttpMaxRetries 5

# Set OnlyUnsupportedByCUPS to "Yes" will make cups-browsed not create
# local queues for remote printers for which CUPS creates queues by
# itself.  These printers are printers advertised via DNS-SD and doing
# CUPS-supported (currently PWG Raster and Apple Raster) driverless
# printing, including remote CUPS queues. Queues for other printers
# (like for legacy PostScript/PCL printers) are always created
# (depending on the other configuration settings of cups-browsed).

# With OnlyUnsupportedByCUPS set to "No", cups-browsed creates queues
# for all printers which it supports, including printers for which
# CUPS would create queues by itself. Temporary queues created by CUPS
# will get overwritten. This way it is assured that any extra
# functionality of cups-browsed will apply to these queues. As queues
# created by cups-browsed are permanent CUPS queues this setting is
# also recommended if applications/print dialogs which do not support
# temporary CUPS queues are installed. This setting is the default.

# OnlyUnsupportedByCUPS Yes


# With UseCUPSGeneratedPPDs set to "Yes" cups-browsed creates queues
# for IPP printers with PPDs generated by the PPD generator of CUPS
# and not with the one of cups-browsed. So any new development in
# CUPS' PPD generator gets available. As CUPS' PPD generator is not
# directly accessible, we need to make CUPS generate a temporary print
# queue with the desired PPD. Therefore we can only use these PPDs
# when our queue replaces a temporary CUPS queue, meaning that the
# queue is for a printer on which CUPS supports driverless printing
# (IPP 2.x, PDLs: PDF, PWG Raster, and/or Apple Raster) and that its
# name is the same as CUPS uses for the temporary queue
# ("LocalQueueNamingIPPPrinter DNS-SD" must be set). The directive
# applies only to IPP printers, not to remote CUPS queues, to not
# break clustering. Setting this directive to "No" lets cups-browsed
# generate the PPD file. Default setting is "Yes".

# UseCUPSGeneratedPPDs No


# With the directives LocalQueueNamingRemoteCUPS and
# LocalQueueNamingIPPPrinter you can determine how the names for local
# queues generated by cups-browsed are generated, separately for
# remote CUPS printers and IPP printers.

# DNS-SD (the default in both cases) bases the naming on the service
# name of the printer's advertised DNS-SD record. This is exactly the
# same naming scheme as CUPS uses for its temporary queues, so the
# local queue from cups-browsed prevents CUPS from listing and
# creating an additional queue. As DNS-SD service names have to be
# unique, queue names of printers from different servers will also be
# unique and so there is no automatic clustering for load-balanced
# printing.

# MakeModel bases the queue name on the printer's manufacturer and
# model names. This scheme cups-browsed used formerly for IPP
# printers.

# RemoteName is only available for remote CUPS queues and uses the
# name of the queue on the remote CUPS server as the local queue's
# name. This makes printers on different CUPS servers with equal queue
# names automatically forming a load-balancing cluster as CUPS did
# formerly (CUPS 1.5.x and older) with CUPS-broadcasted remote
# printers. This scheme cups-browsed used formerly for remote CUPS
# printers.

# LocalQueueNamingRemoteCUPS DNS-SD
# LocalQueueNamingRemoteCUPS MakeModel
# LocalQueueNamingRemoteCUPS RemoteName
# LocalQueueNamingIPPPrinter DNS-SD
# LocalQueueNamingIPPPrinter MakeModel


# Set IPBasedDeviceURIs to "Yes" if cups-browsed should create its
# local queues with device URIs with the IP addresses instead of the
# host names of the remote servers. This mode is there for any
# problems with host name resolution in the network, especially also
# if avahi-daemon is only run for printer discovery and already
# stopped while still printing. By default this mode is turned off,
# meaning that we use URIs with host names.

# If you prefer IPv4 or IPv6 IP addresses in the URIs, you can set
# IPBasedDeviceURIs to "IPv4" to only get IPv4 IP addresses or
# IPBasedDeviceURIs to "IPv6" to only get IPv6 IP addresses.

# IPBasedDeviceURIs No
# IPBasedDeviceURIs Yes
# IPBasedDeviceURIs IPv4
# IPBasedDeviceURIs IPv6


# Set CreateRemoteRawPrinterQueues to "Yes" to let cups-browsed also
# create local queues pointing to remote raw CUPS queues. Normally,
# only queues pointing to remote queues with PPD/driver are created
# as we do not use drivers on the client side, but in some cases
# accessing a remote raw queue can make sense, for example if the
# queue forwards the jobs by a special backend like Tea4CUPS.

# CreateRemoteRawPrinterQueues Yes


# cups-browsed by default creates local print queues for each shared
# CUPS print queue which it discovers on remote machines in the local
# network(s). Set CreateRemoteCUPSPrinterQueues to "No" if you do not
# want cups-browsed to do this. For example you can set cups-browsed
# to only create queues for IPP network printers setting
# CreateIPPPrinterQueues not to "No" and CreateRemoteCUPSPrinterQueues
# to "No".

# CreateRemoteCUPSPrinterQueues No


# Set CreateIPPPrinterQueues to "All" to let cups-browsed discover IPP
# network printers (native printers, not CUPS queues) with known page
# description languages (PWG Raster, PDF, PostScript, PCL XL, PCL
# 5c/e) in the local network and auto-create print queues for them.

# Set CreateIPPPrinterQueues to "Everywhere" to let cups-browsed
# discover IPP Everywhere printers in the local network (native
# printers, not CUPS queues) and auto-create print queues for them.

# Set CreateIPPPrinterQueues to "AppleRaster" to let cups-browsed
# discover Apple Raster printers in the local network (native
# printers, not CUPS queues) and auto-create print queues for them.

# Set CreateIPPPrinterQueues to "Driverless" to let cups-browsed
# discover printers designed for driverless use (currently IPP
# Everywhere and Apple Raster) in the local network (native printers,
# not CUPS queues) and auto-create print queues for them.

# Set CreateIPPPrinterQueues to "LocalOnly" to auto-create print
# queues only for local printers made available as IPP printers. These
# are for example IPP-over-USB printers, made available via
# ippusbxd. This is the default.

# Set CreateIPPPrinterQueues to "No" to not auto-create print queues
# for IPP network printers.

# If queues with PPD file are created (see IPPPrinterQueueType
# directive below) the PPDs are auto-generated by cups-browsed based
# on properties of the printer polled via IPP. In case of missing
# information, info from the Bonjour record is used asd as last mean
# default values.

# If queues without PPD (see IPPPrinterQueueType directive below) are
# created clients have to IPP-poll the capabilities of the printer and
# send option settings as standard IPP attributes. Then we do not poll
# the capabilities by ourselves to not wake up the printer from
# power-saving mode when creating the queues. Jobs have to be sent in
# one of PDF, PWG Raster, or JPEG format. Other formats are not
# accepted.

# This functionality is primarily for mobile devices running
# CUPS to not need a printer setup tool nor a collection of printer
# drivers and PPDs.

# CreateIPPPrinterQueues No
# CreateIPPPrinterQueues LocalOnly
# CreateIPPPrinterQueues Everywhere
# CreateIPPPrinterQueues AppleRaster
# CreateIPPPrinterQueues Everywhere AppleRaster
# CreateIPPPrinterQueues Driverless
# CreateIPPPrinterQueues All


# If cups-browsed is automatically creating print queues for native
# IPP network printers ("CreateIPPPrinterQueues Yes"), the type of
# queue to be created can be selected by the "IPPPrinterQueueType"
# directive. The "PPD" (default) setting makes queues with PPD file
# being created. With "Interface" or "NoPPD" the queue is created with
# a System V interface script (Not supported with CUPS 2.2.x or
# later). "Auto" is for backward compatibility and also lets queues
# with PPD get created.

# IPPPrinterQueueType PPD
# IPPPrinterQueueType NoPPD
# IPPPrinterQueueType Interface
# IPPPrinterQueueType Auto


# The NewIPPPrinterQueuesShared directive determines whether a print
# queue for a newly discovered IPP network printer (not remote CUPS
# queue) will be shared to the local network or not. This is only
# valid for newly discovered printers. For printers discovered in an
# earlier cups-browsed session, cups-browsed will remember whether the
# printer was shared, so changes by the user get conserved. Default is
# not to share newly discovered IPP printers.

# NewIPPPrinterQueuesShared Yes


# If there is more than one remote CUPS printer whose local queue
# would get the same name and AutoClustering is set to "Yes" (the
# default) only one local queue is created which makes up a
# load-balancing cluster of the remote printers which would get this
# queue name (implicit class). This means that when several jobs are
# sent to this queue they get distributed between the printers, using
# the method chosen by the LoadBalancing directive.

# Note that the forming of clusters depends on the naming scheme for
# local queues created by cups-browsed. If you have set
# LocalQueueNamingRemoteCUPS to "DNSSD" you will not get automatic
# clustering as the DNS-SD service names are always unique. With
# LocalQueueNamingRemoteCUPS set to "RemoteName" local queues are
# named as the CUPS queues on the remote servers are named and so
# equally named queues on different servers get clustered (this is how
# CUPS did it in version 1.5.x or older). LocalQueueNamingRemoteCUPS
# set to "MakeModel" makes remote printers of the same model get
# clustered. Note that then a cluster can contain more than one queue
# of the same server.

# With AutoClustering set to "No", for each remote CUPS printer an
# individual local queue is created, and to avoid name clashes when
# using the LocalQueueNamingRemoteCUPS settings "RemoteName" or
# "MakeModel" "@<server name>" is added to the local queue name.

# Only remote CUPS printers get clustered, not IPP network printers or
# IPP-over-USB printers.

# AutoClustering Yes
# AutoClustering No


# Load-balancing printer cluster formation can also be manually
# controlled by defining explicitly which remote CUPS printers should
# get clustered together.

# This is done by the "Cluster" directive:

# Cluster <QUEUENAME>: <EXPRESSION1> <EXPRESSION2> ...
# Cluster <QUEUENAME>

# If no expressions are given, <QUEUENAME> is used as the first and
# only expression for this cluster.

# Discovered printers are matched against all the expressions of all
# defined clusters. The first expression which matches the discovered
# printer determines to which cluster it belongs. Note that this way a
# printer can only belong to one cluster. Once matched, further
# cluster definitions will not checked any more.

# With the first printer matching a cluster's expression a local queue
# with the name <QUEUENAME> is created. If more printers are
# discovered and match this cluster, they join the cluster. Printing
# to this queue prints to all these printers in a load-balancing
# manner, according to to the setting of the LoadBalancing directive.

# Each expression must be a string of characters without spaces. If
# spaces are needed, replace them by underscores ('_').

# An expression can be matched in three ways:

# 1. By the name of the CUPS queue on the remote server
# 2. By make and model name of the remote printer
# 3. By the DNS-SD service name of the remote printer

# Note that the matching is done case-insensitively and any group of
# non-alphanumerical characters is replaced by a single underscore.

# So if an expression is "HP_DeskJet_2540" and the remote server
# reports "hp Deskjet-2540" the printer gets matched to this cluster.

# If "AutoClustering" is not set to "No" both your manual cluster
# definitions will be followed and automatic clustering of
# equally-named remote queues will be performed. If a printer matches
# in both categories the match to the manually defined cluster has
# priority. Automatic clustering of equally-named remote printers is
# not performed if there is a manually defined cluster with this name
# (at least as the printers do not match this cluster).

# Examples:

# To cluster all remote CUPS queues named "laserprinter" in your local
# network but not cluster any other equally-named remote CUPS printers
# use (Local queue will get named "laserprinter"):

# AutoClustering No
# Cluster laserprinter

# To cluster all remote CUPS queues of HP LaserJet 4050 printers in a
# local queue named "LJ4050":

# Cluster LJ4050: HP_LaserJet_4050

# As DNS-SD service names are unique in a network you can create a
# cluster from exactly specified printers (spaces replaced by
# underscors):

# Cluster hrdep: oldlaser_@_hr-server1 newlaser_@_hr-server2


# The LoadBalancing directive switches between two methods of handling
# load balancing between equally-named remote queues which are
# represented by one local print queue making up a cluster of them
# (implicit class).

# The two methods are:

# Queuing of jobs on the client (LoadBalancing QueueOnClient):

# Here we queue up the jobs on the client and regularly check the
# clustered remote print queues. If we find an idle queue, we pass
# on a job to it.

# This is also the method which CUPS uses for classes. Advantage is a
# more even distribution of the job workload on the servers
# (especially if the printing speed of the servers is very different),
# and if a server fails, there are not several jobs stuck or
# lost. Disadvantage is that if one takes the client (laptop, mobile
# phone, ...) out of the local network, printing stops with the jobs
# waiting in the local queue.

# Queuing of jobs on the servers (LoadBalancing QueueOnServers):

# Here we check the number of jobs on each of the clustered remote
# printers and send an incoming job immediately to the remote printer
# with the lowest amount of jobs in its queue. This way no jobs queue
# up locally, all jobs which are waiting are waiting on one of the
# remote servers.

# Not having jobs waiting locally has the advantage that we can take
# the local machine from the network and all jobs get printed.
# Disadvantage is that if a server with a full queue of jobs goes
# away, the jobs go away, too.

# Default is queuing the jobs on the client as this is what CUPS does
# with classes.

# LoadBalancing QueueOnClient
# LoadBalancing QueueOnServers


# With the DefaultOptions directive one or more option settings can be
# defined to be applied to every print queue newly created by
# cups-browsed. Each option is supplied as one supplies options with
# the "-o" command line argument to the "lpadmin" command (Run "man
# lpadmin" for more details). More than one option can be supplied
# separating the options by spaces. By default no option settings are
# pre-defined.

# Note that print queues which cups-browsed already created before
# remember their previous settings and so these settings do not get
# applied.

# DefaultOptions Option1=Value1 Option2=Value2 Option3 noOption4


# The AutoShutdown directive specifies whether cups-browsed should
# automatically terminate when it has no local raw queues set up
# pointing to any discovered remote printers or no jobs on such queues
# depending on AutoShutdownOn setting (auto shutdown mode). Setting it
# to "On" activates the auto-shutdown mode, setting it to "Off"
# deactiivates it (the default). The special mode "avahi" turns auto
# shutdown off while avahi-daemon is running and on when avahi-daemon
# stops. This allows running cups-browsed on-demand when avahi-daemon
# is run on-demand.

# AutoShutdown Off
# AutoShutdown On
# AutoShutdown avahi


# The AutoShutdownOn directive determines what event cups-browsed
# considers as inactivity in auto shutdown mode. "NoQueues" (the
# default) means that auto shutdown is initiated when there are no
# queues for discovered remote printers generated by cups-browsed any
# more. "NoJobs" means that all queues generated by cups-browsed are
# without jobs.

# AutoShutdownOn NoQueues
# AutoShutdownOn NoJobs


# The AutoShutdownTimeout directive specifies after how many seconds
# without local raw queues set up pointing to any discovered remote
# printers or jobs on these queues cups-browsed should actually shut
# down in auto shutdown mode. Default is 30 seconds, 0 means immediate
# shutdown.

# AutoShutdownTimeout 30

Reply to: