};
struct dcerpc_do_request_out_frag {
+ struct tevent_context *ev;
+ struct dcerpc_connection *conn;
struct tevent_req *req;
DATA_BLOB blob;
bool is_last;
struct iovec vector;
+ struct tevent_req *subreq_wait1;
+ struct tevent_req *subreq_wait2;
};
static void dcerpc_do_request_cleanup(struct tevent_req *req,
if (tevent_req_nomem(frag, req)) {
return;
}
-
+ frag->ev = state->ev;
+ frag->conn = state->conn;
frag->req = req;
state->out_frag = frag;
frag->vector.iov_base = frag->blob.data;
frag->vector.iov_len = frag->blob.length;
- subreq = tstream_writev_queue_send(frag, state->ev,
- state->conn->transport.stream,
- state->conn->transport.write_queue,
+ subreq = tstream_writev_queue_send(frag, frag->ev,
+ frag->conn->transport.stream,
+ frag->conn->transport.write_queue,
&frag->vector, 1);
if (tevent_req_nomem(subreq, req)) {
return;
return;
}
- status = dcerpc_connection_loop_restart(state->conn, state->ev);
+ status = dcerpc_connection_loop_restart(frag->conn, frag->ev);
if (tevent_req_nterror(req, status)) {
return;
}