]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch
samba: update to 4.13.0
[ipfire-2.x.git] / src / patches / samba / samba-3.6.99-nt_printer_unpublish_fix.patch
diff --git a/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch b/src/patches/samba/samba-3.6.99-nt_printer_unpublish_fix.patch
deleted file mode 100644 (file)
index 641e62b..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-From cd3082b03487eaeddb0105807b5ad39b47aa65f1 Mon Sep 17 00:00:00 2001
-From: Andreas Schneider <asn@samba.org>
-Date: Tue, 8 Nov 2016 12:20:41 +0100
-Subject: [PATCH] s3-spoolss: Remove printer from registry if it is unpublished
-
-BUG: https://bugzilla.samba.org/show_bug.cgi?id=11665
-
-Signed-off-by: Andreas Schneider <asn@samba.org>
-Reviewed-by: Guenther Deschner <gd@samba.org>
----
- source3/rpc_server/spoolss/srv_spoolss_nt.c | 34 ++++++++++++++++++++++++-----
- 1 file changed, 29 insertions(+), 5 deletions(-)
-
-diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c
-index 556cd4f..f1ab3fb 100644
---- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
-+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
-@@ -4194,6 +4194,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
-                                     int snum)
- {
-       struct auth_serversupplied_info *session_info;
-+      struct spoolss_PrinterInfo2 *pinfo2 = NULL;
-       char *printer;
-       NTSTATUS status;
-       WERROR werr;
-@@ -4218,7 +4219,7 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
-       }
-       if (is_printer_published(tmp_ctx, session_info, msg_ctx,
--                               servername, printer, NULL)) {
-+                               servername, printer, &pinfo2)) {
-               struct GUID guid;
-               werr = nt_printer_guid_get(tmp_ctx, session_info, msg_ctx,
-                                          printer, &guid);
-@@ -4230,10 +4231,33 @@ static WERROR construct_printer_info7(TALLOC_CTX *mem_ctx,
-                       werr = nt_printer_guid_retrieve(tmp_ctx, printer,
-                                                       &guid);
-                       if (!W_ERROR_IS_OK(werr)) {
--                              DEBUG(1, ("Failed to retrieve GUID for "
--                                        "printer [%s] from AD - "
--                                        "Is the the printer still "
--                                        "published ?\n", printer));
-+                              DEBUG(3, ("Failed to retrieve GUID for "
-+                                        "printer [%s] from AD - %s\n",
-+                                        printer,
-+                                        win_errstr(werr)));
-+                              if (W_ERROR_EQUAL(werr, WERR_FILE_NOT_FOUND)) {
-+                                      /*
-+                                       * If we did not find it in AD, then it
-+                                       * is unpublished and we should reflect
-+                                       * this in the registry and return
-+                                       * success.
-+                                       */
-+                                      DEBUG(1, ("Unpublish printer [%s]\n",
-+                                                pinfo2->sharename));
-+                                      nt_printer_publish(tmp_ctx,
-+                                                         session_info,
-+                                                         msg_ctx,
-+                                                         pinfo2,
-+                                                         DSPRINT_UNPUBLISH);
-+                                      r->guid = talloc_strdup(mem_ctx, "");
-+                                      r->action = DSPRINT_UNPUBLISH;
-+
-+                                      if (r->guid == NULL) {
-+                                              werr = WERR_NOT_ENOUGH_MEMORY;
-+                                      } else {
-+                                              werr = WERR_OK;
-+                                      }
-+                              }
-                               goto out_tmp_free;
-                       }
--- 
-2.10.1
-