From 6c019cf0b947d41a3c450aef80f6de8c369ba556 Mon Sep 17 00:00:00 2001 From: V1krant Date: Fri, 13 Mar 2020 00:09:41 +0530 Subject: [PATCH] Modify code for NewBrowsePollQueuesShared directive --- utils/cups-browsed.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/utils/cups-browsed.c b/utils/cups-browsed.c index 59e96277c..49482c7a8 100644 --- a/utils/cups-browsed.c +++ b/utils/cups-browsed.c @@ -10646,6 +10646,9 @@ browse_poll_get_printers (browsepoll_t *context, http_t *conn) ipp_t *request, *response = NULL; ipp_attribute_t *attr; GList *printers = NULL; + int num_options = 0; + cups_option_t *options; + http_t *http; debug_printf ("cups-browsed [BrowsePoll %s:%d]: CUPS-Get-Printers\n", context->server, context->port); @@ -10713,11 +10716,33 @@ browse_poll_get_printers (browsepoll_t *context, http_t *conn) found_cups_printer (context->server, uri, location, info); printer = new_browsepoll_printer (uri, location, info); printers = g_list_insert (printers, printer, 0); + if (NewBrowsePollQueuesShared) { - int num_options = 0; + num_options = 0; + options = NULL; + request = ippNewRequest(CUPS_ADD_MODIFY_PRINTER); + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, + "printer-uri", NULL, uri); + + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, + "requesting-user-name", NULL, cupsUser()); + num_options = cupsAddOption("printer-is-shared", "true", - num_options, NULL); - debug_printf("Setting printer-is-shared bit.\n"); + num_options, &options); + debug_printf("Setting printer-is-shared bit\n"); + + cupsEncodeOptions2(request, num_options, options, IPP_TAG_OPERATION); + cupsEncodeOptions2(request, num_options, options, IPP_TAG_PRINTER); + + if ((http = http_connect_local ()) == NULL) + debug_printf("Unable to connect to CUPS!\n"); + else { + ippDelete(cupsDoRequest(http, request, "/admin/")); + cupsFreeOptions(num_options, options); + if (cupsLastError() > IPP_STATUS_OK_EVENTS_COMPLETE) + debug_printf("Unable to modify the printer-is-shared bit (%s)!\n", + cupsLastErrorString()); + } } }