s3-rpc_server: Remove unneeded ncacn wrappers.
authorAndreas Schneider <asn@samba.org>
Fri, 25 Feb 2011 12:50:37 +0000 (13:50 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 8 Mar 2011 10:41:30 +0000 (11:41 +0100)
Signed-off-by: Günther Deschner <gd@samba.org>
source3/rpc_server/rpc_server.c

index db11bc1d1c84853db9f8314cd62c394e2f931fc8..71c714cfae2327e931390117b9c1dfe1a7d94f9d 100644 (file)
@@ -216,83 +216,6 @@ static int make_server_pipes_struct(TALLOC_CTX *mem_ctx,
        return 0;
 }
 
-/* Add some helper functions to wrap the common ncacn packet reading functions
- * until we can share more dcerpc code */
-struct dcerpc_ncacn_read_packet_state {
-       struct ncacn_packet *pkt;
-       DATA_BLOB buffer;
-};
-
-static void dcerpc_ncacn_read_packet_done(struct tevent_req *subreq);
-
-static struct tevent_req *dcerpc_ncacn_read_packet_send(TALLOC_CTX *mem_ctx,
-                                       struct tevent_context *ev,
-                                       struct tstream_context *tstream)
-{
-       struct dcerpc_ncacn_read_packet_state *state;
-       struct tevent_req *req, *subreq;
-
-       req = tevent_req_create(mem_ctx, &state,
-                               struct dcerpc_ncacn_read_packet_state);
-       if (!req) {
-               return NULL;
-       }
-       ZERO_STRUCTP(state);
-
-       subreq = dcerpc_read_ncacn_packet_send(state, ev, tstream);
-       if (!subreq) {
-               tevent_req_nterror(req, NT_STATUS_NO_MEMORY);
-               tevent_req_post(req, ev);
-               return req;
-       }
-       tevent_req_set_callback(subreq, dcerpc_ncacn_read_packet_done, req);
-
-       return req;
-}
-
-static void dcerpc_ncacn_read_packet_done(struct tevent_req *subreq)
-{
-       struct tevent_req *req =
-               tevent_req_callback_data(subreq, struct tevent_req);
-       struct dcerpc_ncacn_read_packet_state *state =
-               tevent_req_data(req, struct dcerpc_ncacn_read_packet_state);
-       NTSTATUS status;
-
-       status = dcerpc_read_ncacn_packet_recv(subreq, state,
-                                               &state->pkt,
-                                               &state->buffer);
-       TALLOC_FREE(subreq);
-       if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(3, ("Failed to receive dceprc packet!\n"));
-               tevent_req_nterror(req, status);
-               return;
-       }
-
-       tevent_req_done(req);
-}
-
-static NTSTATUS dcerpc_ncacn_read_packet_recv(struct tevent_req *req,
-                                               TALLOC_CTX *mem_ctx,
-                                               DATA_BLOB *buffer)
-{
-       struct dcerpc_ncacn_read_packet_state *state =
-               tevent_req_data(req, struct dcerpc_ncacn_read_packet_state);
-       NTSTATUS status;
-
-       if (tevent_req_is_nterror(req, &status)) {
-               tevent_req_received(req);
-               return status;
-       }
-
-       buffer->data = talloc_move(mem_ctx, &state->buffer.data);
-       buffer->length = state->buffer.length;
-
-       tevent_req_received(req);
-       return NT_STATUS_OK;
-}
-
-
-
 /* Start listening on the appropriate unix socket and setup all is needed to
  * dispatch requests to the pipes rpc implementation */
 
@@ -559,7 +482,7 @@ static void named_pipe_accept_done(struct tevent_req *subreq)
        }
 
        /* And now start receaving and processing packets */
-       subreq = dcerpc_ncacn_read_packet_send(npc, npc->ev, npc->tstream);
+       subreq = dcerpc_read_ncacn_packet_send(npc, npc->ev, npc->tstream);
        if (!subreq) {
                DEBUG(2, ("Failed to start receving packets\n"));
                goto fail;
@@ -581,6 +504,7 @@ static void named_pipe_packet_process(struct tevent_req *subreq)
                tevent_req_callback_data(subreq, struct named_pipe_client);
        struct _output_data *out = &npc->p->out_data;
        DATA_BLOB recv_buffer = data_blob_null;
+       struct ncacn_packet *pkt;
        NTSTATUS status;
        ssize_t data_left;
        ssize_t data_used;
@@ -588,7 +512,7 @@ static void named_pipe_packet_process(struct tevent_req *subreq)
        uint32_t to_send;
        bool ok;
 
-       status = dcerpc_ncacn_read_packet_recv(subreq, npc, &recv_buffer);
+       status = dcerpc_read_ncacn_packet_recv(subreq, npc, &pkt, &recv_buffer);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
                goto fail;
@@ -612,6 +536,7 @@ static void named_pipe_packet_process(struct tevent_req *subreq)
 
        /* Do not leak this buffer, npc is a long lived context */
        talloc_free(recv_buffer.data);
+       talloc_free(pkt);
 
        /* this is needed because of the way DCERPC Binds work in
         * the RPC marshalling code */
@@ -673,7 +598,7 @@ static void named_pipe_packet_process(struct tevent_req *subreq)
         * data */
        if (npc->count == 0) {
                /* Wait for the next packet */
-               subreq = dcerpc_ncacn_read_packet_send(npc, npc->ev, npc->tstream);
+               subreq = dcerpc_read_ncacn_packet_send(npc, npc->ev, npc->tstream);
                if (!subreq) {
                        DEBUG(2, ("Failed to start receving packets\n"));
                        status = NT_STATUS_NO_MEMORY;
@@ -729,7 +654,7 @@ static void named_pipe_packet_done(struct tevent_req *subreq)
        data_blob_free(&npc->p->out_data.rdata);
 
        /* Wait for the next packet */
-       subreq = dcerpc_ncacn_read_packet_send(npc, npc->ev, npc->tstream);
+       subreq = dcerpc_read_ncacn_packet_send(npc, npc->ev, npc->tstream);
        if (!subreq) {
                DEBUG(2, ("Failed to start receving packets\n"));
                sys_errno = ENOMEM;
@@ -1243,7 +1168,7 @@ static void dcerpc_ncacn_accept(struct tevent_context *ev_ctx,
                return;
        }
 
-       subreq = dcerpc_ncacn_read_packet_send(ncacn_conn,
+       subreq = dcerpc_read_ncacn_packet_send(ncacn_conn,
                                               ncacn_conn->ev_ctx,
                                               ncacn_conn->tstream);
        if (subreq == NULL) {
@@ -1266,6 +1191,7 @@ static void dcerpc_ncacn_packet_process(struct tevent_req *subreq)
 
        struct _output_data *out = &ncacn_conn->p->out_data;
        DATA_BLOB recv_buffer = data_blob_null;
+       struct ncacn_packet *pkt;
        ssize_t data_left;
        ssize_t data_used;
        uint32_t to_send;
@@ -1273,7 +1199,7 @@ static void dcerpc_ncacn_packet_process(struct tevent_req *subreq)
        NTSTATUS status;
        bool ok;
 
-       status = dcerpc_ncacn_read_packet_recv(subreq, ncacn_conn, &recv_buffer);
+       status = dcerpc_read_ncacn_packet_recv(subreq, ncacn_conn, &pkt, &recv_buffer);
        TALLOC_FREE(subreq);
        if (!NT_STATUS_IS_OK(status)) {
                goto fail;
@@ -1296,6 +1222,7 @@ static void dcerpc_ncacn_packet_process(struct tevent_req *subreq)
 
        /* Do not leak this buffer */
        talloc_free(recv_buffer.data);
+       talloc_free(pkt);
 
        /*
         * This is needed because of the way DCERPC binds work in the RPC
@@ -1363,7 +1290,7 @@ static void dcerpc_ncacn_packet_process(struct tevent_req *subreq)
         */
        if (ncacn_conn->count == 0) {
                /* Wait for the next packet */
-               subreq = dcerpc_ncacn_read_packet_send(ncacn_conn,
+               subreq = dcerpc_read_ncacn_packet_send(ncacn_conn,
                                                       ncacn_conn->ev_ctx,
                                                       ncacn_conn->tstream);
                if (subreq == NULL) {
@@ -1425,7 +1352,7 @@ static void dcerpc_ncacn_packet_done(struct tevent_req *subreq)
        data_blob_free(&ncacn_conn->p->out_data.rdata);
 
        /* Wait for the next packet */
-       subreq = dcerpc_ncacn_read_packet_send(ncacn_conn,
+       subreq = dcerpc_read_ncacn_packet_send(ncacn_conn,
                                               ncacn_conn->ev_ctx,
                                               ncacn_conn->tstream);
        if (subreq == NULL) {