From 7f0a396e3b4f02aea24d6e6d8d6123c5aa737248 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Sun, 7 May 2006 19:55:14 +0000 Subject: r15504: Revert -r 15500 and -r 15503 until I'm awake, and can get my head around the mess that is composite functions... Async might be all the rage, but it's bloody painful to debug. Andrew Bartlett (This used to be commit 756e1dad7ce54b83f8170db3434bfcfc4afe7e65) --- source4/librpc/rpc/dcerpc.c | 60 +++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 40 deletions(-) (limited to 'source4/librpc/rpc/dcerpc.c') diff --git a/source4/librpc/rpc/dcerpc.c b/source4/librpc/rpc/dcerpc.c index adf67a7ba1..cd33d3d14b 100644 --- a/source4/librpc/rpc/dcerpc.c +++ b/source4/librpc/rpc/dcerpc.c @@ -489,20 +489,6 @@ static NTSTATUS dcerpc_map_reason(uint16_t reason) return NT_STATUS_UNSUCCESSFUL; } -/* - map a fault reason to a NTSTATUS -*/ -static NTSTATUS dcerpc_map_fault(uint32_t status) -{ - switch (status) { - case DCERPC_FAULT_OP_RNG_ERROR: - return NT_STATUS_ILLEGAL_FUNCTION; - case DCERPC_FAULT_ACCESS_DENIED: - return NT_STATUS_ACCESS_DENIED; - } - return NT_STATUS_NET_WRITE_FAULT; -} - /* mark the dcerpc connection dead. All outstanding requests get an error */ @@ -569,19 +555,27 @@ static void dcerpc_recv_data(struct dcerpc_connection *conn, DATA_BLOB *blob, NT dcerpc_connection_dead(conn, status); } - if (conn->bind_private) { - talloc_steal(conn->bind_private, blob->data); - dcerpc_bind_recv_data(conn, &pkt); - return; - } - if (conn->alter_private) { - talloc_steal(conn->alter_private, blob->data); - dcerpc_alter_recv_data(conn, &pkt); - return; - } + switch (pkt.ptype) { + case DCERPC_PKT_BIND_NAK: + case DCERPC_PKT_BIND_ACK: + if (conn->bind_private) { + talloc_steal(conn->bind_private, blob->data); + dcerpc_bind_recv_data(conn, &pkt); + } + break; - /* assume its an ordinary request */ - dcerpc_request_recv_data(conn, blob, &pkt); + case DCERPC_PKT_ALTER_RESP: + if (conn->alter_private) { + talloc_steal(conn->alter_private, blob->data); + dcerpc_alter_recv_data(conn, &pkt); + } + break; + + default: + /* assume its an ordinary request */ + dcerpc_request_recv_data(conn, blob, &pkt); + break; + } } @@ -597,13 +591,6 @@ static void dcerpc_bind_recv_data(struct dcerpc_connection *conn, struct ncacn_p /* mark the connection as not waiting for a bind reply */ conn->bind_private = NULL; - if (pkt->ptype == DCERPC_PKT_FAULT) { - DEBUG(2,("dcerpc: bind faulted: reason %s\n", - dcerpc_errstr(c, pkt->u.fault.status))); - composite_error(c, dcerpc_map_fault(pkt->u.fault.status)); - return; - } - if (pkt->ptype == DCERPC_PKT_BIND_NAK) { DEBUG(2,("dcerpc: bind_nak reason %d\n", pkt->u.bind_nak.reject_reason)); @@ -1541,13 +1528,6 @@ static void dcerpc_alter_recv_data(struct dcerpc_connection *conn, struct ncacn_ /* mark the connection as not waiting for a alter context reply */ conn->alter_private = NULL; - if (pkt->ptype == DCERPC_PKT_FAULT) { - DEBUG(2,("dcerpc: alter context faulted: reason %s\n", - dcerpc_errstr(c, pkt->u.fault.status))); - composite_error(c, dcerpc_map_fault(pkt->u.fault.status)); - return; - } - if (pkt->ptype == DCERPC_PKT_ALTER_RESP && pkt->u.alter_resp.num_results == 1 && pkt->u.alter_resp.ctx_list[0].result != 0) { -- cgit