Author: metze
Date: 2006-07-31 13:40:49 +0000 (Mon, 31 Jul 2006)
New Revision: 17340

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17340

Log:
initialize elements od dcesrc_call_state in one central place
and pass the messaging context to the call

metze
Modified:
   branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
   branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h


Changeset:
Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c        2006-07-31 
13:34:00 UTC (rev 17339)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.c        2006-07-31 
13:40:49 UTC (rev 17340)
@@ -745,10 +745,6 @@
        NTSTATUS status;
        struct dcesrv_connection_context *context;
 
-       call->fault_code        = 0;
-       call->state_flags       = call->conn->state_flags;
-       call->time              = timeval_current();
-
        /* if authenticated, and the mech we use can't do async replies, don't 
use them... */
        if (call->conn->auth_state.gensec_security && 
            !gensec_have_feature(call->conn->auth_state.gensec_security, 
GENSEC_FEATURE_ASYNC_REPLIES)) {
@@ -766,7 +762,6 @@
        pull->flags |= LIBNDR_FLAG_REF_ALLOC;
 
        call->context   = context;
-       call->event_ctx = context->conn->event_ctx;
        call->ndr_pull  = pull;
 
        if (call->pkt.pfc_flags & DCERPC_PFC_FLAG_ORPC) {
@@ -963,15 +958,16 @@
        struct dcesrv_call_state *call;
        DATA_BLOB blob;
 
-       call = talloc(dce_conn, struct dcesrv_call_state);
+       call = talloc_zero(dce_conn, struct dcesrv_call_state);
        if (!call) {
                talloc_free(dce_conn->partial_input.data);
                return NT_STATUS_NO_MEMORY;
        }
-       call->conn      = dce_conn;
-       call->replies   = NULL;
-       call->context   = NULL;
-       call->event_ctx = dce_conn->event_ctx;
+       call->conn              = dce_conn;
+       call->event_ctx         = dce_conn->event_ctx;
+       call->msg_ctx           = dce_conn->msg_ctx;
+       call->state_flags       = call->conn->state_flags;
+       call->time              = timeval_current();
 
        blob = dce_conn->partial_input;
        blob.length = dcerpc_get_frag_length(&blob);

Modified: branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h        2006-07-31 
13:34:00 UTC (rev 17339)
+++ branches/SAMBA_4_0/source/rpc_server/dcerpc_server.h        2006-07-31 
13:40:49 UTC (rev 17340)
@@ -99,10 +99,17 @@
        /* the backend can use this event context for async replies */
        struct event_context *event_ctx;
 
+       /* the message_context that will be used for async replies */
+       struct messaging_context *msg_ctx;
+
        /* this is the pointer to the allocated function struct */
        void *r;
 
-       /* that's the ndr push context used in dcesrv_request */
+       /*
+        * that's the ndr pull context used in dcesrv_request()
+        * needed by dcesrv_reply() to carry over information
+        * for full pointer support.
+        */
        struct ndr_pull *ndr_pull;
 
        DATA_BLOB input;

Reply via email to