Lines Matching refs:dp_req
32 struct dp_req {
50 struct dp_req *prev;
51 struct dp_req *next;
86 static int dp_req_destructor(struct dp_req *dp_req)
88 DLIST_REMOVE(dp_req->provider->requests.active, dp_req);
90 if (dp_req->provider->requests.num_active == 0) {
95 dp_req->provider->requests.num_active--;
97 DP_REQ_DEBUG(SSSDBG_TRACE_FUNC, dp_req->name, "Request removed.");
100 dp_req->provider->requests.num_active);
105 static errno_t dp_attach_req(struct dp_req *dp_req,
111 dp_req->num = provider->requests.index++;
112 dp_req->name = talloc_asprintf(dp_req, "%s #%u", name, dp_req->num);
113 if (dp_req->name == NULL) {
118 DLIST_ADD(provider->requests.active, dp_req);
121 talloc_set_destructor(dp_req, dp_req_destructor);
123 DP_REQ_DEBUG(SSSDBG_TRACE_FUNC, dp_req->name,
143 struct dp_req **_dp_req)
145 struct dp_req *dp_req;
152 dp_req = talloc_zero(mem_ctx, struct dp_req);
153 if (dp_req == NULL) {
157 dp_req->provider = provider;
158 dp_req->client = dp_cli;
159 dp_req->dp_flags = dp_flags;
160 dp_req->target = target;
161 dp_req->method = method;
162 dp_req->request_data = request_data;
163 dp_req->req = req;
165 ret = dp_attach_req(dp_req, provider, name, dp_flags);
169 talloc_free(dp_req);
176 talloc_steal(dp_req, dp_req->request_data);
177 *_dp_req = dp_req;
180 dp_req->domain = be_ctx->domain;
182 dp_req->domain = find_domain_by_name(be_ctx->domain, domainname, true);
183 if (dp_req->domain == NULL) {
189 ret = dp_find_method(provider, target, method, &dp_req->execute);
205 struct dp_req **_dp_req)
209 struct dp_req *dp_req;
216 method, dp_flags, request_data, req, &dp_req);
218 *_dp_req = dp_req;
224 *_dp_req = dp_req;
228 if (!check_method_data(dp_req->execute, dp_req->request_data)) {
242 dp_params = talloc_zero(dp_req, struct dp_req_params);
250 dp_params->domain = dp_req->domain;
251 dp_params->target = dp_req->target;
252 dp_params->method = dp_req->method;
254 send_fn = dp_req->execute->send_fn;
255 dp_req->handler_req = send_fn(dp_req, dp_req->execute->method_data,
256 dp_req->request_data, dp_params);
257 if (dp_req->handler_req == NULL) {
262 *_dp_req = dp_req;
271 struct dp_req *dp_req;
292 struct dp_req *dp_req;
302 method, dp_flags, request_data, req, &dp_req);
304 if (dp_req == NULL) {
313 PROBE(DP_REQ_SEND, domain, dp_req->name, target, method);
314 state->dp_req = dp_req;
316 request_name = talloc_strdup(mem_ctx, dp_req->name);
329 state->recv_fn = dp_req->execute->recv_fn;
330 state->output_data = talloc_zero_size(state, dp_req->execute->output_size);
336 talloc_set_name_const(state->output_data, dp_req->execute->output_dtype);
338 tevent_req_set_callback(dp_req->handler_req, dp_req_done, req);
364 /* subreq is the same as dp_req->handler_req */
366 state->dp_req->handler_req = NULL;
368 PROBE(DP_REQ_DONE, state->dp_req->name, state->dp_req->target,
369 state->dp_req->method, ret, sss_strerror(ret));
371 DP_REQ_DEBUG(SSSDBG_TRACE_FUNC, state->dp_req->name,
391 if (state->dp_req != NULL) {
392 DP_REQ_DEBUG(SSSDBG_TRACE_FUNC, state->dp_req->name,
395 /* dp_req may be NULL in case we error when filing request */
411 static void dp_terminate_request(struct dp_req *dp_req)
413 if (dp_req->handler_req == NULL) {
415 * of dp request did not yet received data/free dp_req. We just
422 DP_REQ_DEBUG(SSSDBG_TRACE_ALL, dp_req->name, "Terminating.");
424 talloc_zfree(dp_req->handler_req);
425 tevent_req_error(dp_req->req, ERR_TERMINATED);
431 struct dp_req *next;
432 struct dp_req *cur;