s3-spoolss: Use existing handle in printer_driver_in_use().
authorAndreas Schneider <asn@samba.org>
Thu, 28 Jul 2011 09:34:08 +0000 (11:34 +0200)
committerAndreas Schneider <asn@cryptomilk.org>
Thu, 28 Jul 2011 13:08:42 +0000 (15:08 +0200)
source3/include/nt_printing.h
source3/printing/nt_printing.c
source3/rpc_server/spoolss/srv_spoolss_nt.c

index 69e9f7f80f2756c9fc76420e34a46fce8a22a9ed..0ac1995f5320b5225cfdd8770e052bfd50f1ff93 100644 (file)
@@ -147,8 +147,7 @@ bool is_printer_published(TALLOC_CTX *mem_ctx,
 WERROR check_published_printers(struct messaging_context *msg_ctx);
 
 bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
-                          const struct auth_session_info *server_info,
-                          struct messaging_context *msg_ctx,
+                          struct dcerpc_binding_handle *b,
                           const struct spoolss_DriverInfo8 *r);
 bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx,
                                 const struct auth_session_info *server_info,
index 7d1dd9e4d0cb35c092c445fe1a22e4194ffe69bc..4eb375dddd320ced43aa673e8ae3894bec73cd62 100644 (file)
@@ -1174,16 +1174,14 @@ WERROR move_driver_to_download_area(struct auth_session_info *session_info,
 ****************************************************************************/
 
 bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
-                          const struct auth_session_info *session_info,
-                          struct messaging_context *msg_ctx,
-                           const struct spoolss_DriverInfo8 *r)
+                          struct dcerpc_binding_handle *b,
+                          const struct spoolss_DriverInfo8 *r)
 {
        int snum;
        int n_services = lp_numservices();
        bool in_use = False;
        struct spoolss_PrinterInfo2 *pinfo2 = NULL;
        WERROR result;
-       struct dcerpc_binding_handle *b = NULL;
 
        if (!r) {
                return false;
@@ -1198,16 +1196,6 @@ bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
                        continue;
                }
 
-               if (b == NULL) {
-                       result = winreg_printer_binding_handle(mem_ctx,
-                                                              session_info,
-                                                              msg_ctx,
-                                                              &b);
-                       if (!W_ERROR_IS_OK(result)) {
-                               return false;
-                       }
-               }
-
                result = winreg_get_printer(mem_ctx, b,
                                            lp_servicename(snum),
                                            &pinfo2);
index afd78f1f5944b82b439d57f03d3ad741e9a1c6d9..79e62c4fd3f2aa3410c65fcf1c3c042fdfe4312a 100644 (file)
@@ -2142,8 +2142,7 @@ WERROR _spoolss_DeletePrinterDriver(struct pipes_struct *p,
        }
 
        if (printer_driver_in_use(tmp_ctx,
-                                 get_session_info_system(),
-                                 p->msg_ctx,
+                                 b,
                                  info)) {
                status = WERR_PRINTER_DRIVER_IN_USE;
                goto done;
@@ -2260,8 +2259,7 @@ WERROR _spoolss_DeletePrinterDriverEx(struct pipes_struct *p,
        }
 
        if (printer_driver_in_use(tmp_ctx,
-                                 get_session_info_system(),
-                                 p->msg_ctx,
+                                 b,
                                  info)) {
                status = WERR_PRINTER_DRIVER_IN_USE;
                goto done;