struct tevent_req *subreq;
DATA_BLOB response;
struct ndr_pull *pull;
+ uint32_t pull_missing;
struct dcerpc_pipe_handle *ph;
struct dcerpc_pipe_handle_connection *pc;
dcerpc_binding_handle_call_params_cleanup(req);
return;
}
+ state->pull_missing -= MIN(state->pull_missing, state->response.length);
+ data_blob_free(&state->response);
}
if (state->out_pipe_idx != UINT32_MAX) {
return;
}
+ if (call_state->pull_missing > 0) {
+ return;
+ }
+
/*
* setup a shallow copy subcontext, which we might destroy
*/
NDR_SCALARS|NDR_BUFFERS,
state->chunk_ptr);
if (ndr_err == NDR_ERR_INCOMPLETE_BUFFER) {
+ call_state->pull_missing = pipe_pull->relative_highest_offset;
TALLOC_FREE(pipe_pull);
talloc_free_children(state->chunk_mem);
return;