The branch, master has been updated
       via  e9d4f15... s4:torture/rpc/autoidl.c: check for NT_STATUS_RPC_* 
instead of p->last_fault_code
       via  51f7b13... s4:torture/rpc/dsgetinfo.c: check for 
NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE instead of DCERPC_FAULT_INVALID_TAG
       via  c85884e... s4:torture/rpc/spoolss.c: check for NT_STATUS_RPC_* 
instead of p->last_fault_code
       via  9846485... s4:torture/rpc/scanner.c: check for NT_STATUS_RPC_* 
instead of p->last_fault_code
       via  2aba845... s4:torture/rpc/samr.c: check for 
NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
       via  6f4218a... s4:torture/rpc/drsuapi.c: check for 
NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE instead of DCERPC_FAULT_INVALID_TAG
       via  1864cd8... s4:torture/rpc/countcalls.c: check for 
NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
       via  0cc24f2... s4:torture/rpc/alter_context: check for 
NT_STATUS_RPC_PROTOCOL_ERROR instead of DCERPC_NCA_S_PROTO_ERROR
       via  cf9d425... s4:torture/rpc/dssync.c: check for 
NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead of DCERPC_FAULT_OP_RNG_ERROR
       via  de94672... s4:torture/rpc/alter_context.c: check for 
NT_STATUS_RPC_BAD_STUB_DATA instead of NT_STATUS_NET_WRITE_FAULT
       via  bb4a958... s4:torture/rpc/handles.c: check for 
NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of DCERPC_FAULT_CONTEXT_MISMATCH
       via  34a6350... s4:torture/rpc/lsa.c: test for 
NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of NT_STATUS_NET_WRITE_FAULT
       via  61e53c0... s4:librpc/rpc/pyrpc.c: map NT_STATUS_NET_WRITE_FAULT to 
the matching NT_STATUS_RPC_* code
       via  a8e81c2... pidl:Samba4/NDR/Client: map NT_STATUS_NET_WRITE_FAULT to 
the matching NT_STATUS_RPC_* code
       via  fed16f4... librpc/rpc: add dcerpc_fault_to_nt_status()
       via  c0736c7... s4:torture/rpc: don't look at p->last_fault_code for 
debugging anymore
       via  1293712... s4:util/net/drs: don't look at p->last_fault_code for 
debugging anymore
       via  146ce6e... s4:libnet/libnet_join: don't look at p->last_fault_code 
for debugging anymore
      from  7f6cdad... s4:winbind: use WINBINDD_SOCKET_NAME instead of 
WINBINDD_SAMBA3_SOCKET

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


- Log -----------------------------------------------------------------
commit e9d4f1578cdbd03ddc63d22822483add20e753d4
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:11:50 2010 +0200

    s4:torture/rpc/autoidl.c: check for NT_STATUS_RPC_* instead of 
p->last_fault_code
    
    metze

commit 51f7b1382b91053ae96b2cd14dae17ad6eea0df4
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Apr 13 21:48:36 2010 +0200

    s4:torture/rpc/dsgetinfo.c: check for NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE 
instead of DCERPC_FAULT_INVALID_TAG
    
    metze

commit c85884ecc889945721303818d6fa18081403b3c2
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:14:29 2010 +0200

    s4:torture/rpc/spoolss.c: check for NT_STATUS_RPC_* instead of 
p->last_fault_code
    
    metze

commit 98464853f4c508ac26cd0f446dc1365b4c7668c7
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:13:55 2010 +0200

    s4:torture/rpc/scanner.c: check for NT_STATUS_RPC_* instead of 
p->last_fault_code
    
    metze

commit 2aba84581616ebf58d3793c1213e2d8c652a2752
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:13:27 2010 +0200

    s4:torture/rpc/samr.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE instead 
of DCERPC_FAULT_OP_RNG_ERROR
    
    metze

commit 6f4218a4aa097c3b89224bd3cba2d9d2649f28d5
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:12:30 2010 +0200

    s4:torture/rpc/drsuapi.c: check for NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE 
instead of DCERPC_FAULT_INVALID_TAG
    
    metze

commit 1864cd8fa79cf109460516973c67e785fd0a7644
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:12:10 2010 +0200

    s4:torture/rpc/countcalls.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE 
instead of DCERPC_FAULT_OP_RNG_ERROR
    
    metze

commit 0cc24f2f9b36241afd4240c5d312052f5010d014
Author: Stefan Metzmacher <me...@samba.org>
Date:   Sat Apr 10 11:04:04 2010 +0200

    s4:torture/rpc/alter_context: check for NT_STATUS_RPC_PROTOCOL_ERROR 
instead of DCERPC_NCA_S_PROTO_ERROR
    
    metze

commit cf9d425e3d9646c6b4ea1b57a39cca23dfd26ab7
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Mar 29 22:58:53 2010 +0200

    s4:torture/rpc/dssync.c: check for NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE 
instead of DCERPC_FAULT_OP_RNG_ERROR
    
    metze

commit de94672fe083e7a335846353c61b5c0aa08ac0b1
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Mar 29 22:45:05 2010 +0200

    s4:torture/rpc/alter_context.c: check for NT_STATUS_RPC_BAD_STUB_DATA 
instead of NT_STATUS_NET_WRITE_FAULT
    
    metze

commit bb4a958c6df8bdccc5e7f8ac332bac5784924a8a
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Mar 29 22:36:22 2010 +0200

    s4:torture/rpc/handles.c: check for NT_STATUS_RPC_SS_CONTEXT_MISMATCH 
instead of DCERPC_FAULT_CONTEXT_MISMATCH
    
    metze

commit 34a6350715ddeea88dbbd13b17858b0890d85630
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Mar 29 22:36:07 2010 +0200

    s4:torture/rpc/lsa.c: test for NT_STATUS_RPC_SS_CONTEXT_MISMATCH instead of 
NT_STATUS_NET_WRITE_FAULT
    
    metze

commit 61e53c078203ddb11c7f9f04492ade7d95d21f02
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Apr 12 14:10:24 2010 +0200

    s4:librpc/rpc/pyrpc.c: map NT_STATUS_NET_WRITE_FAULT to the matching 
NT_STATUS_RPC_* code
    
    metze

commit a8e81c25ebe7a673c2c6e046dd6a0a829c4af409
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Mar 29 22:35:37 2010 +0200

    pidl:Samba4/NDR/Client: map NT_STATUS_NET_WRITE_FAULT to the matching 
NT_STATUS_RPC_* code
    
    metze

commit fed16f4015f8209dc4705fc1464fc45a093d9349
Author: Stefan Metzmacher <me...@samba.org>
Date:   Sat Mar 20 11:31:55 2010 +0100

    librpc/rpc: add dcerpc_fault_to_nt_status()
    
    For now this only handles fault codes with we've seen yet
    and for which we have explicit torture checks.
    
    metze

commit c0736c70d6ab442055f998e7b1308a0536f99a95
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Apr 13 09:38:03 2010 +0200

    s4:torture/rpc: don't look at p->last_fault_code for debugging anymore
    
    metze

commit 1293712b7d098aca12d7d2e043dc8ee87fb02aec
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Apr 13 09:14:14 2010 +0200

    s4:util/net/drs: don't look at p->last_fault_code for debugging anymore
    
    metze

commit 146ce6ead122f6f4ab18998c91d1bbdd1c63d336
Author: Stefan Metzmacher <me...@samba.org>
Date:   Tue Apr 13 09:12:52 2010 +0200

    s4:libnet/libnet_join: don't look at p->last_fault_code for debugging 
anymore
    
    metze

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

Summary of changes:
 librpc/rpc/dcerpc_error.c                 |   24 ++++++++++
 pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm  |    8 +++
 source4/libnet/libnet_join.c              |   69 ++++++++--------------------
 source4/librpc/rpc/dcerpc.h               |    1 +
 source4/librpc/rpc/pyrpc.c                |   10 +---
 source4/torture/rpc/alter_context.c       |    6 +--
 source4/torture/rpc/autoidl.c             |   18 ++++----
 source4/torture/rpc/countcalls.c          |    8 +---
 source4/torture/rpc/drsuapi.c             |    2 +-
 source4/torture/rpc/drsuapi.h             |    3 -
 source4/torture/rpc/drsuapi_cracknames.c  |   27 -----------
 source4/torture/rpc/dsgetinfo.c           |    5 +--
 source4/torture/rpc/dssync.c              |   14 +-----
 source4/torture/rpc/handles.c             |   54 ++++++-----------------
 source4/torture/rpc/lsa.c                 |    2 +-
 source4/torture/rpc/samr.c                |    3 +-
 source4/torture/rpc/scanner.c             |   10 ++---
 source4/torture/rpc/spoolss.c             |    8 +---
 source4/torture/rpc/testjoin.c            |    3 -
 source4/utils/net/drs/net_drs.c           |    3 -
 source4/utils/net/drs/net_drs_kcc.c       |    3 -
 source4/utils/net/drs/net_drs_replicate.c |    3 -
 source4/utils/net/drs/net_drs_showrepl.c  |    3 -
 23 files changed, 94 insertions(+), 193 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/rpc/dcerpc_error.c b/librpc/rpc/dcerpc_error.c
index 69cd08b..713e32e 100644
--- a/librpc/rpc/dcerpc_error.c
+++ b/librpc/rpc/dcerpc_error.c
@@ -95,3 +95,27 @@ _PUBLIC_ const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, 
uint32_t fault_code)
 
        return win_errstr(werr);
 }
+
+_PUBLIC_ NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code)
+{
+       /* TODO: add more mappings */
+       switch (fault_code) {
+       case DCERPC_FAULT_OP_RNG_ERROR:
+               return NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE;
+       case DCERPC_FAULT_UNK_IF:
+               return NT_STATUS_RPC_UNKNOWN_IF;
+       case DCERPC_FAULT_NDR:
+               return NT_STATUS_RPC_BAD_STUB_DATA;
+       case DCERPC_FAULT_INVALID_TAG:
+               return NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE;
+       case DCERPC_FAULT_CONTEXT_MISMATCH:
+               return NT_STATUS_RPC_SS_CONTEXT_MISMATCH;
+       case DCERPC_FAULT_OTHER:
+               return NT_STATUS_RPC_CALL_FAILED;
+       case DCERPC_FAULT_ACCESS_DENIED:
+               return NT_STATUS_ACCESS_DENIED;
+       }
+
+       return NT_STATUS_RPC_PROTOCOL_ERROR;
+}
+
diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm 
b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
index 43fe611..189eb9e 100644
--- a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
+++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm
@@ -60,6 +60,10 @@ sub ParseFunctionOldRecv($$$)
 
        status = dcerpc_ndr_request_recv(rreq);
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+               status = dcerpc_fault_to_nt_status(p->last_fault_code);
+       }
+
        if (NT_STATUS_IS_OK(status) && (p->conn->flags & 
DCERPC_DEBUG_PRINT_OUT)) {
                NDR_PRINT_OUT_DEBUG($name, r);
        }
@@ -290,6 +294,10 @@ sub ParseFunction_r_Sync($$$)
        status = dcerpc_ndr_request(p, NULL, &ndr_table_$interface->{NAME},
                                    NDR_$uname, mem_ctx, r);
 
+       if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+               status = dcerpc_fault_to_nt_status(p->last_fault_code);
+       }
+
        if (NT_STATUS_IS_OK(status) && (p->conn->flags & 
DCERPC_DEBUG_PRINT_OUT)) {
                NDR_PRINT_OUT_DEBUG($name, r);
        }
diff --git a/source4/libnet/libnet_join.c b/source4/libnet/libnet_join.c
index f5cbda0..748a791 100644
--- a/source4/libnet/libnet_join.c
+++ b/source4/libnet/libnet_join.c
@@ -135,21 +135,12 @@ static NTSTATUS libnet_JoinADSDomain(struct 
libnet_context *ctx, struct libnet_J
 
        status = dcerpc_drsuapi_DsBind_r(drsuapi_pipe->binding_handle, tmp_ctx, 
&r_drsuapi_bind);
        if (!NT_STATUS_IS_OK(status)) {
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       r->out.error_string
-                               = talloc_asprintf(r,
-                                                 "dcerpc_drsuapi_DsBind failed 
- %s", 
-                                                 dcerpc_errstr(tmp_ctx, 
drsuapi_pipe->last_fault_code));
-                       talloc_free(tmp_ctx);
-                       return status;
-               } else {
-                       r->out.error_string
-                               = talloc_asprintf(r,
-                                                 "dcerpc_drsuapi_DsBind failed 
- %s", 
-                                                 nt_errstr(status));
-                       talloc_free(tmp_ctx);
-                       return status;
-               }
+               r->out.error_string
+                       = talloc_asprintf(r,
+                                         "dcerpc_drsuapi_DsBind failed - %s",
+                                         nt_errstr(status));
+               talloc_free(tmp_ctx);
+               return status;
        } else if (!W_ERROR_IS_OK(r_drsuapi_bind.out.result)) {
                r->out.error_string
                                = talloc_asprintf(r,
@@ -193,23 +184,13 @@ static NTSTATUS libnet_JoinADSDomain(struct 
libnet_context *ctx, struct libnet_J
 
        status = dcerpc_drsuapi_DsCrackNames_r(drsuapi_pipe->binding_handle, 
tmp_ctx, &r_crack_names);
        if (!NT_STATUS_IS_OK(status)) {
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       r->out.error_string
-                               = talloc_asprintf(r,
-                                                 "dcerpc_drsuapi_DsCrackNames 
for [%s] failed - %s", 
-                                                 names[0].str,
-                                                 dcerpc_errstr(tmp_ctx, 
drsuapi_pipe->last_fault_code));
-                       talloc_free(tmp_ctx);
-                       return status;
-               } else {
-                       r->out.error_string
-                               = talloc_asprintf(r,
-                                                 "dcerpc_drsuapi_DsCrackNames 
for [%s] failed - %s", 
-                                                 names[0].str,
-                                                 nt_errstr(status));
-                       talloc_free(tmp_ctx);
-                       return status;
-               }
+               r->out.error_string
+                       = talloc_asprintf(r,
+                                         "dcerpc_drsuapi_DsCrackNames for [%s] 
failed - %s",
+                                         names[0].str,
+                                         nt_errstr(status));
+               talloc_free(tmp_ctx);
+               return status;
        } else if (!W_ERROR_IS_OK(r_crack_names.out.result)) {
                r->out.error_string
                                = talloc_asprintf(r,
@@ -354,23 +335,13 @@ static NTSTATUS libnet_JoinADSDomain(struct 
libnet_context *ctx, struct libnet_J
 
        status = dcerpc_drsuapi_DsCrackNames_r(drsuapi_pipe->binding_handle, 
tmp_ctx, &r_crack_names);
        if (!NT_STATUS_IS_OK(status)) {
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       r->out.error_string
-                               = talloc_asprintf(r,
-                                                 "dcerpc_drsuapi_DsCrackNames 
for [%s] failed - %s", 
-                                                 r->in.domain_name, 
-                                                 dcerpc_errstr(tmp_ctx, 
drsuapi_pipe->last_fault_code));
-                       talloc_free(tmp_ctx);
-                       return status;
-               } else {
-                       r->out.error_string
-                               = talloc_asprintf(r,
-                                                 "dcerpc_drsuapi_DsCrackNames 
for [%s] failed - %s", 
-                                                 r->in.domain_name, 
-                                                 nt_errstr(status));
-                       talloc_free(tmp_ctx);
-                       return status;
-               }
+               r->out.error_string
+                       = talloc_asprintf(r,
+                                         "dcerpc_drsuapi_DsCrackNames for [%s] 
failed - %s",
+                                         r->in.domain_name,
+                                         nt_errstr(status));
+               talloc_free(tmp_ctx);
+               return status;
        } else if (!W_ERROR_IS_OK(r_crack_names.out.result)) {
                r->out.error_string
                        = talloc_asprintf(r,
diff --git a/source4/librpc/rpc/dcerpc.h b/source4/librpc/rpc/dcerpc.h
index 22988e6..69de8c5 100644
--- a/source4/librpc/rpc/dcerpc.h
+++ b/source4/librpc/rpc/dcerpc.h
@@ -303,6 +303,7 @@ NTSTATUS dcerpc_pipe_connect_b(TALLOC_CTX *parent_ctx,
                               struct tevent_context *ev,
                               struct loadparm_context *lp_ctx);
 const char *dcerpc_errstr(TALLOC_CTX *mem_ctx, uint32_t fault_code);
+NTSTATUS dcerpc_fault_to_nt_status(uint32_t fault_code);
 
 NTSTATUS dcerpc_pipe_auth(TALLOC_CTX *mem_ctx,
                          struct dcerpc_pipe **p, 
diff --git a/source4/librpc/rpc/pyrpc.c b/source4/librpc/rpc/pyrpc.c
index 718c749..10f1d4b 100644
--- a/source4/librpc/rpc/pyrpc.c
+++ b/source4/librpc/rpc/pyrpc.c
@@ -207,14 +207,10 @@ static PyMemberDef dcerpc_interface_members[] = {
 
 static void PyErr_SetDCERPCStatus(struct dcerpc_pipe *p, NTSTATUS status)
 {
-       if (p != NULL && NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-               const char *errstr = dcerpc_errstr(NULL, p->last_fault_code);
-               PyErr_SetObject(PyExc_RuntimeError, 
-                       Py_BuildValue("(i,s)", p->last_fault_code,
-                                     errstr));
-       } else {
-               PyErr_SetNTSTATUS(status);
+       if (p && NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+               status = dcerpc_fault_to_nt_status(p->last_fault_code);
        }
+       PyErr_SetNTSTATUS(status);
 }
 
 static PyObject *py_iface_request(PyObject *self, PyObject *args, PyObject 
*kwargs)
diff --git a/source4/torture/rpc/alter_context.c 
b/source4/torture/rpc/alter_context.c
index 6401643..cbfe034 100644
--- a/source4/torture/rpc/alter_context.c
+++ b/source4/torture/rpc/alter_context.c
@@ -87,9 +87,7 @@ bool torture_rpc_alter_context(struct torture_context 
*torture)
 
        torture_comment(torture, "Testing change of primary context\n");
        status = dcerpc_alter_context(p, torture, &p2->syntax, 
&p2->transfer_syntax);
-       if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-               torture_assert_int_equal(torture, p->last_fault_code, 
DCERPC_NCA_S_PROTO_ERROR,
-                                        "dcerpc_alter_context should generate 
a proto error");
+       if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROTOCOL_ERROR)) {
 
                ret &= test_lsa_OpenPolicy2_ex(p->binding_handle, torture, 
&handle,
                                               NT_STATUS_PIPE_DISCONNECTED);
@@ -98,7 +96,7 @@ bool torture_rpc_alter_context(struct torture_context 
*torture)
        torture_assert_ntstatus_ok(torture, status, "dcerpc_alter_context 
failed");
 
        torture_comment(torture, "Testing DSSETUP pipe operations - should 
fault\n");
-       ret &= test_DsRoleGetPrimaryDomainInformation_ext(torture, p, 
NT_STATUS_NET_WRITE_FAULT);
+       ret &= test_DsRoleGetPrimaryDomainInformation_ext(torture, p, 
NT_STATUS_RPC_BAD_STUB_DATA);
 
        ret &= test_lsa_OpenPolicy2(p->binding_handle, torture, &handle);
 
diff --git a/source4/torture/rpc/autoidl.c b/source4/torture/rpc/autoidl.c
index abb09d4..77bb761 100644
--- a/source4/torture/rpc/autoidl.c
+++ b/source4/torture/rpc/autoidl.c
@@ -131,7 +131,7 @@ static void try_expand(struct torture_context *tctx, const 
struct ndr_interface_
 
                status = dcerpc_request(p, NULL, opnum, tctx, &stub_in, 
&stub_out);
 
-               if (!NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+               if (NT_STATUS_IS_OK(status)) {
                        print_depth(depth);
                        printf("expand by %d gives %s\n", n, nt_errstr(status));
                        if (n >= 4) {
@@ -142,10 +142,10 @@ static void try_expand(struct torture_context *tctx, 
const struct ndr_interface_
                } else {
 #if 0
                        print_depth(depth);
-                       printf("expand by %d gives fault %s\n", n, 
dcerpc_errstr(tctx, p->last_fault_code));
+                       printf("expand by %d gives fault %s\n", n, 
nt_errstr(status));
 #endif
                }
-               if (p->last_fault_code == 5) {
+               if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
                        reopen(tctx, &p, iface);
                }
        }
@@ -172,11 +172,11 @@ static void test_ptr_scan(struct torture_context *tctx, 
const struct ndr_interfa
                SIVAL(stub_in.data, ofs, 1);
                status = dcerpc_request(p, NULL, opnum, tctx, &stub_in, 
&stub_out);
 
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
+               if (!NT_STATUS_IS_OK(status)) {
                        print_depth(depth);
                        printf("possible ptr at ofs %d - fault %s\n", 
-                              ofs-min_ofs, dcerpc_errstr(tctx, 
p->last_fault_code));
-                       if (p->last_fault_code == 5) {
+                              ofs-min_ofs, nt_errstr(status));
+                       if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
                                reopen(tctx, &p, iface);
                        }
                        if (depth == 0) {
@@ -236,9 +236,9 @@ static void test_scan_call(struct torture_context *tctx, 
const struct ndr_interf
                        return;
                }
 
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       printf("opnum %d  size %d fault %s\n", opnum, i, 
dcerpc_errstr(tctx, p->last_fault_code));
-                       if (p->last_fault_code == 5) {
+               if (!NT_STATUS_IS_OK(status)) {
+                       printf("opnum %d  size %d fault %s\n", opnum, i, 
nt_errstr(status));
+                       if (NT_STATUS_EQUAL(status, NT_STATUS_ACCESS_DENIED)) {
                                reopen(tctx, &p, iface);
                        }
                        continue;
diff --git a/source4/torture/rpc/countcalls.c b/source4/torture/rpc/countcalls.c
index e49ba6f..5857af6 100644
--- a/source4/torture/rpc/countcalls.c
+++ b/source4/torture/rpc/countcalls.c
@@ -59,13 +59,7 @@ bool count_calls(struct torture_context *tctx,
 
        for (i=0;i<500;i++) {
                status = dcerpc_request(p, NULL, i, p, &stub_in, &stub_out);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT) &&
-                   p->last_fault_code == DCERPC_FAULT_OP_RNG_ERROR) {
-                       i--;
-                       break;
-               }
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT) &&
-                   p->last_fault_code == DCERPC_FAULT_OP_RNG_ERROR) {
+               if (NT_STATUS_EQUAL(status, 
NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE)) {
                        i--;
                        break;
                }
diff --git a/source4/torture/rpc/drsuapi.c b/source4/torture/rpc/drsuapi.c
index a76ecab..105af1c 100644
--- a/source4/torture/rpc/drsuapi.c
+++ b/source4/torture/rpc/drsuapi.c
@@ -378,7 +378,7 @@ static bool test_DsReplicaGetInfo(struct torture_context 
*tctx,
 
                status = dcerpc_drsuapi_DsReplicaGetInfo_r(p->binding_handle, 
tctx, &r);
                torture_drsuapi_assert_call(tctx, p, status, &r, 
"dcerpc_drsuapi_DsReplicaGetInfo");
-               if (!NT_STATUS_IS_OK(status) && p->last_fault_code == 
DCERPC_FAULT_INVALID_TAG) {
+               if (NT_STATUS_EQUAL(status, 
NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE)) {
                        torture_comment(tctx,
                                        "DsReplicaGetInfo level %d and/or 
infotype %d not supported by server\n",
                                        array[i].level, array[i].infotype);
diff --git a/source4/torture/rpc/drsuapi.h b/source4/torture/rpc/drsuapi.h
index ba4c057..6ce3009 100644
--- a/source4/torture/rpc/drsuapi.h
+++ b/source4/torture/rpc/drsuapi.h
@@ -56,9 +56,6 @@ struct DsPrivate {
                NTSTATUS __nt = _ntstat; \
                if (!NT_STATUS_IS_OK(__nt)) { \
                        const char *errstr = nt_errstr(__nt); \
-                       if (NT_STATUS_EQUAL(__nt, NT_STATUS_NET_WRITE_FAULT)) { 
\
-                               errstr = dcerpc_errstr(_tctx, 
_p->last_fault_code); \
-                       } \
                        torture_fail(tctx, talloc_asprintf(_tctx, "%s failed - 
%s", _msg, errstr)); \
                } \
                torture_assert_werr_equal(_tctx, (_pr)->out.result, 
_werr_expected, _msg); \
diff --git a/source4/torture/rpc/drsuapi_cracknames.c 
b/source4/torture/rpc/drsuapi_cracknames.c
index 58ce4f7..5eae0ad 100644
--- a/source4/torture/rpc/drsuapi_cracknames.c
+++ b/source4/torture/rpc/drsuapi_cracknames.c
@@ -90,9 +90,6 @@ static bool test_DsCrackNamesMatrix(struct torture_context 
*tctx,
                status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, 
mem_ctx, &r);
                if (!NT_STATUS_IS_OK(status)) {
                        const char *errstr = nt_errstr(status);
-                       if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) 
{
-                               errstr = dcerpc_errstr(mem_ctx, 
p->last_fault_code);
-                       }
                        err_msg = talloc_asprintf(mem_ctx,
                                        "testing DsCrackNames (matrix prep) 
with name '%s' from format: %d desired format:%d failed - %s",
                                        names[0].str, 
r.in.req->req1.format_offered, r.in.req->req1.format_desired, errstr);
@@ -175,9 +172,6 @@ static bool test_DsCrackNamesMatrix(struct torture_context 
*tctx,
                        status = 
dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
                        if (!NT_STATUS_IS_OK(status)) {
                                const char *errstr = nt_errstr(status);
-                               if (NT_STATUS_EQUAL(status, 
NT_STATUS_NET_WRITE_FAULT)) {
-                                       errstr = dcerpc_errstr(mem_ctx, 
p->last_fault_code);
-                               }
                                err_msg = talloc_asprintf(mem_ctx,
                                                "testing DsCrackNames (matrix) 
with name '%s' from format: %d desired format:%d failed - %s",
                                                names[0].str, 
r.in.req->req1.format_offered, r.in.req->req1.format_desired, errstr);
@@ -285,9 +279,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-               }
                err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames 
failed - %s", errstr);
                torture_fail(tctx, err_msg);
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -310,9 +301,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-               }
                err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames 
failed - %s", errstr);
                torture_fail(tctx, err_msg);
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -336,9 +324,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-               }
                err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames 
failed - %s", errstr);
                torture_fail(tctx, err_msg);
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -384,9 +369,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-               }
                err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames 
failed - %s", errstr);
                torture_fail(tctx, err_msg);
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -410,9 +392,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-               }
                err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames 
failed - %s", errstr);
                torture_fail(tctx, err_msg);
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -436,9 +415,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(mem_ctx, p->last_fault_code);
-               }
                err_msg = talloc_asprintf(mem_ctx, "dcerpc_drsuapi_DsCrackNames 
failed - %s", errstr);
                torture_fail(tctx, err_msg);
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -956,9 +932,6 @@ bool test_DsCrackNames(struct torture_context *tctx,
                        status = 
dcerpc_drsuapi_DsCrackNames_r(p->binding_handle, mem_ctx, &r);
                        if (!NT_STATUS_IS_OK(status)) {
                                const char *errstr = nt_errstr(status);
-                               if (NT_STATUS_EQUAL(status, 
NT_STATUS_NET_WRITE_FAULT)) {
-                                       errstr = dcerpc_errstr(mem_ctx, 
p->last_fault_code);
-                               }
                                err_msg = talloc_asprintf(mem_ctx, 
"dcerpc_drsuapi_DsCrackNames failed - %s", errstr);
                                torture_fail(tctx, err_msg);
                        } else if (!W_ERROR_IS_OK(r.out.result)) {
diff --git a/source4/torture/rpc/dsgetinfo.c b/source4/torture/rpc/dsgetinfo.c
index 0184905..7d21022 100644
--- a/source4/torture/rpc/dsgetinfo.c
+++ b/source4/torture/rpc/dsgetinfo.c
@@ -170,9 +170,6 @@ static bool _test_DsBind(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsBind_r(b->drs_handle, ctx, &b->req);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(ctx, 
b->drs_pipe->last_fault_code);
-               }
                printf("dcerpc_drsuapi_DsBind failed - %s\n", errstr);
                ret = false;
        } else if (!W_ERROR_IS_OK(b->req.out.result)) {
@@ -345,7 +342,7 @@ static bool test_getinfo(struct torture_context *tctx,
                r.out.info_type         = &info_type;
 
                status = dcerpc_drsuapi_DsReplicaGetInfo_r(b, tctx, &r);
-               if (!NT_STATUS_IS_OK(status) && p->last_fault_code == 
DCERPC_FAULT_INVALID_TAG) {
+               if (NT_STATUS_EQUAL(status, 
NT_STATUS_RPC_ENUM_VALUE_OUT_OF_RANGE)) {
                        torture_comment(tctx,
                                        "DsReplicaGetInfo level %d and/or 
infotype %d not supported by server\n",
                                        array[i].level, array[i].infotype);
diff --git a/source4/torture/rpc/dssync.c b/source4/torture/rpc/dssync.c
index c791086..2e5edfd 100644
--- a/source4/torture/rpc/dssync.c
+++ b/source4/torture/rpc/dssync.c
@@ -209,9 +209,6 @@ static bool _test_DsBind(struct torture_context *tctx,
        status = dcerpc_drsuapi_DsBind_r(b->drs_handle, ctx, &b->req);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(ctx, 
b->drs_pipe->last_fault_code);
-               }
                printf("dcerpc_drsuapi_DsBind failed - %s\n", errstr);
                ret = false;
        } else if (!W_ERROR_IS_OK(b->req.out.result)) {
@@ -349,9 +346,6 @@ static bool test_GetInfo(struct torture_context *tctx, 
struct DsSyncTest *ctx)
        status = dcerpc_drsuapi_DsCrackNames_r(ctx->admin.drsuapi.drs_handle, 
ctx, &r);
        if (!NT_STATUS_IS_OK(status)) {
                const char *errstr = nt_errstr(status);
-               if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) {
-                       errstr = dcerpc_errstr(ctx, 
ctx->admin.drsuapi.drs_pipe->last_fault_code);
-               }
                printf("dcerpc_drsuapi_DsCrackNames failed - %s\n", errstr);
                return false;
        } else if (!W_ERROR_IS_OK(r.out.result)) {
@@ -1023,12 +1017,8 @@ static bool test_FetchNT4Data(struct torture_context 
*tctx,
                        torture_skip(tctx, "DsGetNT4ChangeLog not supported by 
target server");
                } else if (!NT_STATUS_IS_OK(status)) {
                        const char *errstr = nt_errstr(status);
-                       if (NT_STATUS_EQUAL(status, NT_STATUS_NET_WRITE_FAULT)) 
{
-                               struct dcerpc_pipe *p = 
ctx->new_dc.drsuapi.drs_pipe;
-                               if (p->last_fault_code == 
DCERPC_FAULT_OP_RNG_ERROR) {
-                                       torture_skip(tctx, "DsGetNT4ChangeLog 
not supported by target server");
-                               }
-                               errstr = dcerpc_errstr(ctx, p->last_fault_code);
+                       if (NT_STATUS_EQUAL(status, 
NT_STATUS_RPC_PROCNUM_OUT_OF_RANGE)) {
+                               torture_skip(tctx, "DsGetNT4ChangeLog not 
supported by target server");
                        }
                        torture_fail(tctx,
                                     talloc_asprintf(tctx, 
"dcerpc_drsuapi_DsGetNT4ChangeLog failed - %s\n",
diff --git a/source4/torture/rpc/handles.c b/source4/torture/rpc/handles.c
index 7476292..b99c267 100644
--- a/source4/torture/rpc/handles.c
+++ b/source4/torture/rpc/handles.c
@@ -82,9 +82,7 @@ static bool test_handles_lsa(struct torture_context *torture)
        c.out.handle = &handle2;
 
        status = dcerpc_lsa_Close_r(b2, mem_ctx, &c);
-       torture_assert_ntstatus_equal(torture, status, 
NT_STATUS_NET_WRITE_FAULT, 
-                                     "closing policy handle on p2");
-       torture_assert_int_equal(torture, p2->last_fault_code, 
DCERPC_FAULT_CONTEXT_MISMATCH, 
+       torture_assert_ntstatus_equal(torture, status, 
NT_STATUS_RPC_SS_CONTEXT_MISMATCH,
                                      "closing policy handle on p2");
 
        torture_assert_ntstatus_ok(torture, dcerpc_lsa_Close_r(b1, mem_ctx, &c),
@@ -92,11 +90,9 @@ static bool test_handles_lsa(struct torture_context *torture)
        torture_assert_ntstatus_ok(torture, c.out.result, "closing policy 
handle on p1");
 
        status = dcerpc_lsa_Close_r(b1, mem_ctx, &c);
-       torture_assert_ntstatus_equal(torture, status, 
NT_STATUS_NET_WRITE_FAULT, 
-                                     "closing policy handle on p1 again");
-       torture_assert_int_equal(torture, p1->last_fault_code, 
DCERPC_FAULT_CONTEXT_MISMATCH, 
+       torture_assert_ntstatus_equal(torture, status, 
NT_STATUS_RPC_SS_CONTEXT_MISMATCH,
                                      "closing policy handle on p1 again");
-       
+
        talloc_free(mem_ctx);
 
        return true;
@@ -214,21 +210,15 @@ static bool test_handles_lsa_shared(struct 
torture_context *torture)
 
        status = dcerpc_lsa_Close_r(b1, mem_ctx, &c);
 
-       torture_assert_ntstatus_equal(torture, status, 
NT_STATUS_NET_WRITE_FAULT, 


-- 
Samba Shared Repository

Reply via email to