The branch, master has been updated
       via  a97fef3 s3-spoolss: Use existing handle in 
printer_driver_files_in_use().
       via  5fa9fe3 s3-spoolss: Use existing handle in printer_driver_in_use().
      from  553124a s3: In the async echo test, write 65k

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a97fef36bccb856c9a6b7e1630f20dd3c394442e
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Jul 28 11:36:50 2011 +0200

    s3-spoolss: Use existing handle in printer_driver_files_in_use().
    
    Autobuild-User: Andreas Schneider <a...@cryptomilk.org>
    Autobuild-Date: Thu Jul 28 16:20:11 CEST 2011 on sn-devel-104

commit 5fa9fe39ea30c210bfb2ab10cfc796ec4b521f78
Author: Andreas Schneider <a...@samba.org>
Date:   Thu Jul 28 11:34:08 2011 +0200

    s3-spoolss: Use existing handle in printer_driver_in_use().

-----------------------------------------------------------------------

Summary of changes:
 source3/include/nt_printing.h               |    6 +---
 source3/printing/nt_printing.c              |   28 ++------------------------
 source3/rpc_server/spoolss/srv_spoolss_nt.c |   12 +++-------
 3 files changed, 9 insertions(+), 37 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h
index 69e9f7f..1f13a1a 100644
--- a/source3/include/nt_printing.h
+++ b/source3/include/nt_printing.h
@@ -147,12 +147,10 @@ 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,
-                                struct messaging_context *msg_ctx,
+                                struct dcerpc_binding_handle *b,
                                 struct spoolss_DriverInfo8 *r);
 bool delete_driver_files(const struct auth_session_info *server_info,
                         const struct spoolss_DriverInfo8 *r);
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index 7d1dd9e..2ceb540 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -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);
@@ -1413,8 +1401,7 @@ static bool trim_overlap_drv_files(TALLOC_CTX *mem_ctx,
 ****************************************************************************/
 
 bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx,
-                                const struct auth_session_info *session_info,
-                                struct messaging_context *msg_ctx,
+                                struct dcerpc_binding_handle *b,
                                 struct spoolss_DriverInfo8 *info)
 {
        int                             i;
@@ -1424,7 +1411,6 @@ bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx,
        uint32_t num_drivers;
        const char **drivers;
        WERROR result;
-       struct dcerpc_binding_handle *b;
 
        if ( !info )
                return False;
@@ -1437,14 +1423,6 @@ bool printer_driver_files_in_use(TALLOC_CTX *mem_ctx,
 
        /* get the list of drivers */
 
-       result = winreg_printer_binding_handle(mem_ctx,
-                                              session_info,
-                                              msg_ctx,
-                                              &b);
-       if (!W_ERROR_IS_OK(result)) {
-               return false;
-       }
-
        result = winreg_get_driver_list(mem_ctx, b,
                                        info->architecture, version,
                                        &num_drivers, &drivers);
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c 
b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index afd78f1..b2200af 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -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;
@@ -2286,8 +2284,7 @@ WERROR _spoolss_DeletePrinterDriverEx(struct pipes_struct 
*p,
        if (delete_files &&
            (r->in.delete_flags & DPD_DELETE_ALL_FILES) &&
            printer_driver_files_in_use(tmp_ctx,
-                                       get_session_info_system(),
-                                       p->msg_ctx,
+                                       b,
                                        info)) {
                /* no idea of the correct error here */
                status = WERR_ACCESS_DENIED;
@@ -2306,8 +2303,7 @@ WERROR _spoolss_DeletePrinterDriverEx(struct pipes_struct 
*p,
                        if (delete_files &&
                            (r->in.delete_flags & DPD_DELETE_ALL_FILES) &&
                            printer_driver_files_in_use(info,
-                                                       
get_session_info_system(),
-                                                       p->msg_ctx,
+                                                       b,
                                                        info_win2k)) {
                                /* no idea of the correct error here */
                                talloc_free(info_win2k);


-- 
Samba Shared Repository

Reply via email to