diff options
Diffstat (limited to 'source3/rpc_server')
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 43 |
1 files changed, 9 insertions, 34 deletions
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; } |