summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2002-12-13 21:54:09 +0000
committerJim McDonough <jmcd@samba.org>2002-12-13 21:54:09 +0000
commit5f9348d4fcff534e6efb129fcab5d81ac4f9ba6e (patch)
tree9283be02750ff532db517a43c95e53d44cd97a54 /source3/rpc_server
parent72e16f233d31c893ae6886a7560fc2fa0fc1f921 (diff)
downloadsamba-5f9348d4fcff534e6efb129fcab5d81ac4f9ba6e.tar.gz
samba-5f9348d4fcff534e6efb129fcab5d81ac4f9ba6e.tar.bz2
samba-5f9348d4fcff534e6efb129fcab5d81ac4f9ba6e.zip
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 f0fc4e30f6284565de404a20450a587cd3fe00a5)
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c43
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;
}