]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3-rpc_client: prefer dcerpc_spoolss_X functions.
authorGünther Deschner <gd@samba.org>
Tue, 18 Jan 2011 17:37:52 +0000 (18:37 +0100)
committerGünther Deschner <gd@samba.org>
Fri, 21 Jan 2011 14:20:22 +0000 (15:20 +0100)
Guenther

source3/rpc_client/cli_spoolss.c

index ce21a768e5dbc50fbb93ba587fb6c46a9b9b7c75..fc154a3e19c468b9f632437bd069fb6fe5ad964c 100644 (file)
@@ -23,7 +23,7 @@
 */
 
 #include "includes.h"
-#include "../librpc/gen_ndr/cli_spoolss.h"
+#include "../librpc/gen_ndr/ndr_spoolss_c.h"
 #include "rpc_client/cli_spoolss.h"
 
 /**********************************************************************
@@ -41,6 +41,7 @@ WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli,
        struct spoolss_DevmodeContainer devmode_ctr;
        union spoolss_UserLevel userlevel;
        struct spoolss_UserLevel1 level1;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        ZERO_STRUCT(devmode_ctr);
 
@@ -55,7 +56,7 @@ WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli,
 
        userlevel.level1 = &level1;
 
-       status = rpccli_spoolss_OpenPrinterEx(cli, mem_ctx,
+       status = dcerpc_spoolss_OpenPrinterEx(b, mem_ctx,
                                              printername,
                                              NULL,
                                              devmode_ctr,
@@ -65,14 +66,14 @@ WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli,
                                              handle,
                                              &werror);
 
-       if (!W_ERROR_IS_OK(werror)) {
-               return werror;
-       }
-
        if (!NT_STATUS_IS_OK(status)) {
                return ntstatus_to_werror(status);
        }
 
+       if (!W_ERROR_IS_OK(werror)) {
+               return werror;
+       }
+
        return WERR_OK;
 }
 
@@ -92,13 +93,14 @@ WERROR rpccli_spoolss_getprinterdriver(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_GetPrinterDriver(cli, mem_ctx,
+       status = dcerpc_spoolss_GetPrinterDriver(b, mem_ctx,
                                                 handle,
                                                 architecture,
                                                 level,
@@ -107,12 +109,15 @@ WERROR rpccli_spoolss_getprinterdriver(struct rpc_pipe_client *cli,
                                                 info,
                                                 &needed,
                                                 &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_GetPrinterDriver(cli, mem_ctx,
+               status = dcerpc_spoolss_GetPrinterDriver(b, mem_ctx,
                                                         handle,
                                                         architecture,
                                                         level,
@@ -122,6 +127,9 @@ WERROR rpccli_spoolss_getprinterdriver(struct rpc_pipe_client *cli,
                                                         &needed,
                                                         &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -146,13 +154,14 @@ WERROR rpccli_spoolss_getprinterdriver2(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_GetPrinterDriver2(cli, mem_ctx,
+       status = dcerpc_spoolss_GetPrinterDriver2(b, mem_ctx,
                                                  handle,
                                                  architecture,
                                                  level,
@@ -165,12 +174,16 @@ WERROR rpccli_spoolss_getprinterdriver2(struct rpc_pipe_client *cli,
                                                  server_major_version,
                                                  server_minor_version,
                                                  &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
+
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_GetPrinterDriver2(cli, mem_ctx,
+               status = dcerpc_spoolss_GetPrinterDriver2(b, mem_ctx,
                                                          handle,
                                                          architecture,
                                                          level,
@@ -184,6 +197,9 @@ WERROR rpccli_spoolss_getprinterdriver2(struct rpc_pipe_client *cli,
                                                          server_minor_version,
                                                          &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -203,6 +219,7 @@ WERROR rpccli_spoolss_addprinterex(struct rpc_pipe_client *cli,
        struct spoolss_UserLevelCtr userlevel_ctr;
        struct spoolss_UserLevel1 level1;
        struct policy_handle handle;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        ZERO_STRUCT(devmode_ctr);
        ZERO_STRUCT(secdesc_ctr);
@@ -219,7 +236,7 @@ WERROR rpccli_spoolss_addprinterex(struct rpc_pipe_client *cli,
        userlevel_ctr.level = 1;
        userlevel_ctr.user_info.level1 = &level1;
 
-       status = rpccli_spoolss_AddPrinterEx(cli, mem_ctx,
+       status = dcerpc_spoolss_AddPrinterEx(b, mem_ctx,
                                             cli->srv_name_slash,
                                             info_ctr,
                                             &devmode_ctr,
@@ -227,6 +244,10 @@ WERROR rpccli_spoolss_addprinterex(struct rpc_pipe_client *cli,
                                             &userlevel_ctr,
                                             &handle,
                                             &result);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
+
        return result;
 }
 
@@ -245,13 +266,14 @@ WERROR rpccli_spoolss_getprinter(struct rpc_pipe_client *cli,
        WERROR werror;
        DATA_BLOB buffer;
        uint32_t needed;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_GetPrinter(cli, mem_ctx,
+       status = dcerpc_spoolss_GetPrinter(b, mem_ctx,
                                           handle,
                                           level,
                                           (offered > 0) ? &buffer : NULL,
@@ -259,6 +281,9 @@ WERROR rpccli_spoolss_getprinter(struct rpc_pipe_client *cli,
                                           info,
                                           &needed,
                                           &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
 
@@ -266,7 +291,7 @@ WERROR rpccli_spoolss_getprinter(struct rpc_pipe_client *cli,
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_GetPrinter(cli, mem_ctx,
+               status = dcerpc_spoolss_GetPrinter(b, mem_ctx,
                                                   handle,
                                                   level,
                                                   &buffer,
@@ -275,6 +300,9 @@ WERROR rpccli_spoolss_getprinter(struct rpc_pipe_client *cli,
                                                   &needed,
                                                   &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -295,13 +323,14 @@ WERROR rpccli_spoolss_getjob(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_GetJob(cli, mem_ctx,
+       status = dcerpc_spoolss_GetJob(b, mem_ctx,
                                       handle,
                                       job_id,
                                       level,
@@ -310,13 +339,16 @@ WERROR rpccli_spoolss_getjob(struct rpc_pipe_client *cli,
                                       info,
                                       &needed,
                                       &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_GetJob(cli, mem_ctx,
+               status = dcerpc_spoolss_GetJob(b, mem_ctx,
                                               handle,
                                               job_id,
                                               level,
@@ -326,6 +358,9 @@ WERROR rpccli_spoolss_getjob(struct rpc_pipe_client *cli,
                                               &needed,
                                               &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -346,13 +381,14 @@ WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumForms(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumForms(b, mem_ctx,
                                          handle,
                                          level,
                                          (offered > 0) ? &buffer : NULL,
@@ -361,13 +397,16 @@ WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli,
                                          info,
                                          &needed,
                                          &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumForms(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumForms(b, mem_ctx,
                                                  handle,
                                                  level,
                                                  (offered > 0) ? &buffer : NULL,
@@ -377,6 +416,9 @@ WERROR rpccli_spoolss_enumforms(struct rpc_pipe_client *cli,
                                                  &needed,
                                                  &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -398,13 +440,14 @@ WERROR rpccli_spoolss_enumprintprocessors(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumPrintProcessors(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPrintProcessors(b, mem_ctx,
                                                    servername,
                                                    environment,
                                                    level,
@@ -414,13 +457,16 @@ WERROR rpccli_spoolss_enumprintprocessors(struct rpc_pipe_client *cli,
                                                    info,
                                                    &needed,
                                                    &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumPrintProcessors(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPrintProcessors(b, mem_ctx,
                                                            servername,
                                                            environment,
                                                            level,
@@ -431,6 +477,9 @@ WERROR rpccli_spoolss_enumprintprocessors(struct rpc_pipe_client *cli,
                                                            &needed,
                                                            &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -452,13 +501,14 @@ WERROR rpccli_spoolss_enumprintprocessordatatypes(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumPrintProcDataTypes(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPrintProcDataTypes(b, mem_ctx,
                                                       servername,
                                                       print_processor_name,
                                                       level,
@@ -468,13 +518,16 @@ WERROR rpccli_spoolss_enumprintprocessordatatypes(struct rpc_pipe_client *cli,
                                                       info,
                                                       &needed,
                                                       &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumPrintProcDataTypes(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPrintProcDataTypes(b, mem_ctx,
                                                               servername,
                                                               print_processor_name,
                                                               level,
@@ -485,6 +538,9 @@ WERROR rpccli_spoolss_enumprintprocessordatatypes(struct rpc_pipe_client *cli,
                                                               &needed,
                                                               &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -505,13 +561,14 @@ WERROR rpccli_spoolss_enumports(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumPorts(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPorts(b, mem_ctx,
                                          servername,
                                          level,
                                          (offered > 0) ? &buffer : NULL,
@@ -520,13 +577,16 @@ WERROR rpccli_spoolss_enumports(struct rpc_pipe_client *cli,
                                          info,
                                          &needed,
                                          &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumPorts(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPorts(b, mem_ctx,
                                                  servername,
                                                  level,
                                                  (offered > 0) ? &buffer : NULL,
@@ -536,6 +596,9 @@ WERROR rpccli_spoolss_enumports(struct rpc_pipe_client *cli,
                                                  &needed,
                                                  &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -556,13 +619,14 @@ WERROR rpccli_spoolss_enummonitors(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumMonitors(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumMonitors(b, mem_ctx,
                                             servername,
                                             level,
                                             (offered > 0) ? &buffer : NULL,
@@ -571,13 +635,16 @@ WERROR rpccli_spoolss_enummonitors(struct rpc_pipe_client *cli,
                                             info,
                                             &needed,
                                             &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumMonitors(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumMonitors(b, mem_ctx,
                                                     servername,
                                                     level,
                                                     (offered > 0) ? &buffer : NULL,
@@ -587,6 +654,9 @@ WERROR rpccli_spoolss_enummonitors(struct rpc_pipe_client *cli,
                                                     &needed,
                                                     &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -609,13 +679,14 @@ WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumJobs(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumJobs(b, mem_ctx,
                                         handle,
                                         firstjob,
                                         numjobs,
@@ -626,13 +697,16 @@ WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli,
                                         info,
                                         &needed,
                                         &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumJobs(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumJobs(b, mem_ctx,
                                                 handle,
                                                 firstjob,
                                                 numjobs,
@@ -644,6 +718,9 @@ WERROR rpccli_spoolss_enumjobs(struct rpc_pipe_client *cli,
                                                 &needed,
                                                 &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -665,13 +742,14 @@ WERROR rpccli_spoolss_enumprinterdrivers(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumPrinterDrivers(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPrinterDrivers(b, mem_ctx,
                                                   server,
                                                   environment,
                                                   level,
@@ -681,13 +759,16 @@ WERROR rpccli_spoolss_enumprinterdrivers(struct rpc_pipe_client *cli,
                                                   info,
                                                   &needed,
                                                   &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumPrinterDrivers(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPrinterDrivers(b, mem_ctx,
                                                   server,
                                                   environment,
                                                   level,
@@ -698,6 +779,9 @@ WERROR rpccli_spoolss_enumprinterdrivers(struct rpc_pipe_client *cli,
                                                   &needed,
                                                   &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -719,13 +803,14 @@ WERROR rpccli_spoolss_enumprinters(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        DATA_BLOB buffer;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        if (offered > 0) {
                buffer = data_blob_talloc_zero(mem_ctx, offered);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
        }
 
-       status = rpccli_spoolss_EnumPrinters(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPrinters(b, mem_ctx,
                                             flags,
                                             server,
                                             level,
@@ -735,13 +820,16 @@ WERROR rpccli_spoolss_enumprinters(struct rpc_pipe_client *cli,
                                             info,
                                             &needed,
                                             &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                buffer = data_blob_talloc_zero(mem_ctx, needed);
                W_ERROR_HAVE_NO_MEMORY(buffer.data);
 
-               status = rpccli_spoolss_EnumPrinters(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPrinters(b, mem_ctx,
                                                     flags,
                                                     server,
                                                     level,
@@ -752,6 +840,9 @@ WERROR rpccli_spoolss_enumprinters(struct rpc_pipe_client *cli,
                                                     &needed,
                                                     &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }
@@ -773,11 +864,12 @@ WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
        WERROR werror;
        uint32_t needed;
        uint8_t *data;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
        data = talloc_zero_array(mem_ctx, uint8_t, offered);
        W_ERROR_HAVE_NO_MEMORY(data);
 
-       status = rpccli_spoolss_GetPrinterData(cli, mem_ctx,
+       status = dcerpc_spoolss_GetPrinterData(b, mem_ctx,
                                               handle,
                                               value_name,
                                               type,
@@ -785,13 +877,16 @@ WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
                                               offered,
                                               &needed,
                                               &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) {
                offered = needed;
                data = talloc_zero_array(mem_ctx, uint8_t, offered);
                W_ERROR_HAVE_NO_MEMORY(data);
 
-               status = rpccli_spoolss_GetPrinterData(cli, mem_ctx,
+               status = dcerpc_spoolss_GetPrinterData(b, mem_ctx,
                                                       handle,
                                                       value_name,
                                                       type,
@@ -800,6 +895,9 @@ WERROR rpccli_spoolss_getprinterdata(struct rpc_pipe_client *cli,
                                                       &needed,
                                                       &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        *data_p = data;
        *needed_p = needed;
@@ -823,8 +921,9 @@ WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli,
        uint32_t needed;
        union spoolss_KeyNames _key_buffer;
        uint32_t _ndr_size;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
-       status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPrinterKey(b, mem_ctx,
                                               handle,
                                               key_name,
                                               &_ndr_size,
@@ -832,10 +931,13 @@ WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli,
                                               offered,
                                               &needed,
                                               &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) {
                offered = needed;
-               status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPrinterKey(b, mem_ctx,
                                                       handle,
                                                       key_name,
                                                       &_ndr_size,
@@ -844,6 +946,9 @@ WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli,
                                                       &needed,
                                                       &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        *key_buffer = _key_buffer.string_array;
 
@@ -865,8 +970,9 @@ WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli,
        NTSTATUS status;
        WERROR werror;
        uint32_t needed;
+       struct dcerpc_binding_handle *b = cli->binding_handle;
 
-       status = rpccli_spoolss_EnumPrinterDataEx(cli, mem_ctx,
+       status = dcerpc_spoolss_EnumPrinterDataEx(b, mem_ctx,
                                                  handle,
                                                  key_name,
                                                  offered,
@@ -874,11 +980,14 @@ WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli,
                                                  info,
                                                  &needed,
                                                  &werror);
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) {
                offered = needed;
 
-               status = rpccli_spoolss_EnumPrinterDataEx(cli, mem_ctx,
+               status = dcerpc_spoolss_EnumPrinterDataEx(b, mem_ctx,
                                                          handle,
                                                          key_name,
                                                          offered,
@@ -887,6 +996,9 @@ WERROR rpccli_spoolss_enumprinterdataex(struct rpc_pipe_client *cli,
                                                          &needed,
                                                          &werror);
        }
+       if (!NT_STATUS_IS_OK(status)) {
+               return ntstatus_to_werror(status);
+       }
 
        return werror;
 }