From f201af19250895b278568df91aad58cea247e543 Mon Sep 17 00:00:00 2001 From: Jim McDonough Date: Fri, 13 Dec 2002 21:56:34 +0000 Subject: Store printer guid in the dsspooler registry key so we don't have to query the directory server every time someone asks (This used to be commit dd81003bddc17522041e1cd2f0484e1760493e4a) --- source3/rpc_server/srv_spoolss_nt.c | 43 ++++++++----------------------------- 1 file changed, 9 insertions(+), 34 deletions(-) (limited to 'source3/rpc_server') diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 0e3d69924b..6dd4352cbc 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -4154,43 +4154,18 @@ static BOOL construct_printer_info_5(PRINTER_INFO_5 *printer, int snum) static BOOL construct_printer_info_7(PRINTER_INFO_7 *printer, int snum) { -#ifdef HAVE_ADS char *guid_str = NULL; GUID guid; - ADS_STRUCT *ads; - ADS_STATUS ads_rc; - void *res = NULL; - char *prt_dn; - const char *attrs[] = {"objectGUID", NULL}; - - printer->action = SPOOL_DS_UNPUBLISH; - - ads = ads_init(NULL, NULL, lp_ads_server()); - ads_rc = ads_connect(ads); - ads_rc = ads_find_printer_on_server(ads, &res, lp_servicename(snum), - global_myname()); - if (ADS_ERR_OK(ads_rc) && ads_count_replies(ads, res)) { - prt_dn = ads_get_dn(ads, res); - ads_msgfree(ads, res); - if (prt_dn && - ADS_ERR_OK(ads_search_dn(ads, &res, prt_dn, attrs))) { - ads_rc = ads_search_dn(ads, &res, prt_dn, attrs); - ads_memfree(ads, prt_dn); - ads_pull_guid(ads, res, &guid); - printer->action = SPOOL_DS_PUBLISH; - } - } - - ads_msgfree(ads, res); - asprintf(&guid_str, "{%s}", uuid_string_static(guid)); - strupper(guid_str); - init_unistr(&printer->guid, guid_str); - -#else - printer->action = SPOOL_DS_UNPUBLISH; - init_unistr(&printer->guid, ""); -#endif + if (is_printer_published(snum, &guid)) { + asprintf(&guid_str, "{%s}", uuid_string_static(guid)); + strupper(guid_str); + init_unistr(&printer->guid, guid_str); + printer->action = SPOOL_DS_PUBLISH; + } else { + init_unistr(&printer->guid, ""); + printer->action = SPOOL_DS_UNPUBLISH; + } return True; } -- cgit