static void dcerpc_binding_handle_call_params_in_done(struct tevent_req *subreq);
static void dcerpc_binding_handle_call_params_next_pipe(struct tevent_req *req);
static void dcerpc_binding_handle_call_params_done(struct tevent_req *subreq);
+static void dcerpc_binding_handle_call_params_response(struct tevent_req *req);
static void dcerpc_binding_handle_call_params_pipe_setup(struct tevent_req *call_req);
static void dcerpc_binding_handle_call_params_pipe_notify(struct dcerpc_pipe_handle *p);
}
if (state->in_flags & LIBNDR_FLAG_INCOMPLETE_BUFFER) {
+ tevent_req_defer_callback(req, ev);
dcerpc_binding_handle_call_params_pipe_setup(req);
if (!tevent_req_is_in_progress(req)) {
return tevent_req_post(req, ev);
return;
}
state->out_pipe_idx = UINT32_MAX;
+
+ if (state->pull == NULL) {
+ return;
+ }
+
+ if (state->pull->flags & LIBNDR_FLAG_INCOMPLETE_BUFFER) {
+ return;
+ }
+
+ dcerpc_binding_handle_call_params_response(req);
}
static void dcerpc_binding_handle_call_params_done(struct tevent_req *subreq)
return;
}
+ dcerpc_binding_handle_call_params_response(req);
+}
+
+static void dcerpc_binding_handle_call_params_response(struct tevent_req *req)
+{
+ struct dcerpc_binding_handle_call_params_state *state =
+ tevent_req_data(req,
+ struct dcerpc_binding_handle_call_params_state);
+ struct dcerpc_binding_handle *h = state->h;
+ NTSTATUS error;
+ enum ndr_err_code ndr_err;
+
state->pull->current_mem_ctx = state->params->r_mem;
/* pull the structure from the blob */
state->ev = ev;
state->p = p;
+ tevent_req_defer_callback(req, state->ev);
+
talloc_set_destructor(state,
dcerpc_binding_handle_call_params_push_state_destructor);
return;
}
- tevent_req_defer_callback(req, state->ev);
tevent_req_done(req);
dcerpc_binding_handle_call_params_next_pipe(pp->call_req);
}
state->chunk_mem = chunk_mem;
state->chunk_ptr = chunk_ptr;
+ tevent_req_defer_callback(req, state->ev);
+
dcerpc_binding_handle_call_params_pull_notify(req);
if (!tevent_req_is_in_progress(req)) {
return tevent_req_post(req, ev);
return;
}
- tevent_req_defer_callback(req, state->ev);
tevent_req_done(req);
dcerpc_binding_handle_call_params_next_pipe(pp->call_req);