TALLOC_FREE(conn->io_trigger);
conn->io_trigger_pending = false;
- conn->transport.recv_data = NULL;
-
dcerpc_shutdown_pipe(conn, status);
/* all pending requests get the error */
{
struct ncacn_packet pkt;
+ if (conn->dead) {
+ return;
+ }
+
if (NT_STATUS_IS_OK(status) && blob->length == 0) {
status = NT_STATUS_UNEXPECTED_NETWORK_ERROR;
}
return tevent_req_post(req, ev);
}
- p->conn->transport.recv_data = dcerpc_recv_data;
-
/*
* we allocate a dcerpc_request so we can be in the same
* request queue as normal requests
{
struct rpc_request *req;
- p->conn->transport.recv_data = dcerpc_recv_data;
-
req = talloc_zero(mem_ctx, struct rpc_request);
if (req == NULL) {
return NULL;
return tevent_req_post(req, ev);
}
- p->conn->transport.recv_data = dcerpc_recv_data;
-
/*
* we allocate a dcerpc_request so we can be in the same
* request queue as normal requests
status = NT_STATUS_END_OF_FILE;
}
- if (c->transport.recv_data) {
- c->transport.recv_data(c, NULL, status);
- }
+ dcerpc_recv_data(c, NULL, status);
}
}
}
- if (p->transport.recv_data) {
- p->transport.recv_data(p, &blob, NT_STATUS_OK);
- }
+ dcerpc_recv_data(p, &blob, NT_STATUS_OK);
}
struct dcerpc_send_request_state {
enum dcerpc_transport_t transport;
void *private_data;
- /* a callback to the dcerpc code when a full fragment
- has been received */
- void (*recv_data)(struct dcecli_connection *, DATA_BLOB *, NTSTATUS status);
-
struct tstream_context *stream;
/** to serialize write events */
struct tevent_queue *write_queue;