Lines Matching refs:requestmgr
82 dns_requestmgr_t *requestmgr;
109 mgr_destroy(dns_requestmgr_t *requestmgr);
111 mgr_shutdown(dns_requestmgr_t *requestmgr);
113 mgr_gethash(dns_requestmgr_t *requestmgr);
115 send_shutdown_events(dns_requestmgr_t *requestmgr);
151 dns_requestmgr_t *requestmgr;
172 requestmgr = isc_mem_get(mctx, sizeof(*requestmgr));
174 isc_mutex_init(&requestmgr->lock);
177 isc_mutex_init(&requestmgr->locks[i]);
179 requestmgr->timermgr = timermgr;
180 requestmgr->socketmgr = socketmgr;
181 requestmgr->taskmgr = taskmgr;
182 requestmgr->dispatchmgr = dispatchmgr;
183 requestmgr->dispatchv4 = NULL;
185 dns_dispatch_attach(dispatchv4, &requestmgr->dispatchv4);
187 requestmgr->dispatchv6 = NULL;
189 dns_dispatch_attach(dispatchv6, &requestmgr->dispatchv6);
191 requestmgr->mctx = NULL;
192 isc_mem_attach(mctx, &requestmgr->mctx);
193 requestmgr->eref = 1; /* implicit attach */
194 requestmgr->iref = 0;
195 ISC_LIST_INIT(requestmgr->whenshutdown);
196 ISC_LIST_INIT(requestmgr->requests);
197 requestmgr->exiting = false;
198 requestmgr->hash = 0;
199 requestmgr->magic = REQUESTMGR_MAGIC;
201 req_log(ISC_LOG_DEBUG(3), "dns_requestmgr_create: %p", requestmgr);
203 *requestmgrp = requestmgr;
208 dns_requestmgr_whenshutdown(dns_requestmgr_t *requestmgr, isc_task_t *task,
215 REQUIRE(VALID_REQUESTMGR(requestmgr));
221 LOCK(&requestmgr->lock);
223 if (requestmgr->exiting) {
227 event->ev_sender = requestmgr;
233 ISC_LIST_APPEND(requestmgr->whenshutdown, event, ev_link);
235 UNLOCK(&requestmgr->lock);
239 dns_requestmgr_shutdown(dns_requestmgr_t *requestmgr) {
240 REQUIRE(VALID_REQUESTMGR(requestmgr));
242 req_log(ISC_LOG_DEBUG(3), "dns_requestmgr_shutdown: %p", requestmgr);
244 LOCK(&requestmgr->lock);
245 mgr_shutdown(requestmgr);
246 UNLOCK(&requestmgr->lock);
250 mgr_shutdown(dns_requestmgr_t *requestmgr) {
256 if (!requestmgr->exiting) {
257 requestmgr->exiting = true;
258 for (request = ISC_LIST_HEAD(requestmgr->requests);
263 if (requestmgr->iref == 0) {
264 INSIST(ISC_LIST_EMPTY(requestmgr->requests));
265 send_shutdown_events(requestmgr);
290 dns_requestmgr_t *requestmgr;
294 requestmgr = *requestmgrp;
296 REQUIRE(VALID_REQUESTMGR(requestmgr));
298 LOCK(&requestmgr->lock);
299 INSIST(requestmgr->iref > 0);
300 requestmgr->iref--;
303 requestmgr, requestmgr->eref, requestmgr->iref);
305 if (requestmgr->iref == 0 && requestmgr->exiting) {
306 INSIST(ISC_LIST_HEAD(requestmgr->requests) == NULL);
307 send_shutdown_events(requestmgr);
308 if (requestmgr->eref == 0) {
312 UNLOCK(&requestmgr->lock);
315 mgr_destroy(requestmgr);
336 dns_requestmgr_t *requestmgr;
340 requestmgr = *requestmgrp;
342 REQUIRE(VALID_REQUESTMGR(requestmgr));
344 LOCK(&requestmgr->lock);
345 INSIST(requestmgr->eref > 0);
346 requestmgr->eref--;
349 requestmgr, requestmgr->eref, requestmgr->iref);
351 if (requestmgr->eref == 0 && requestmgr->iref == 0) {
352 INSIST(requestmgr->exiting &&
353 ISC_LIST_HEAD(requestmgr->requests) == NULL);
356 UNLOCK(&requestmgr->lock);
359 mgr_destroy(requestmgr);
364 send_shutdown_events(dns_requestmgr_t *requestmgr) {
368 req_log(ISC_LOG_DEBUG(3), "send_shutdown_events: %p", requestmgr);
373 for (event = ISC_LIST_HEAD(requestmgr->whenshutdown); event != NULL;
377 ISC_LIST_UNLINK(requestmgr->whenshutdown, event, ev_link);
379 event->ev_sender = requestmgr;
385 mgr_destroy(dns_requestmgr_t *requestmgr) {
390 REQUIRE(requestmgr->eref == 0);
391 REQUIRE(requestmgr->iref == 0);
393 isc_mutex_destroy(&requestmgr->lock);
395 isc_mutex_destroy(&requestmgr->locks[i]);
397 if (requestmgr->dispatchv4 != NULL) {
398 dns_dispatch_detach(&requestmgr->dispatchv4);
400 if (requestmgr->dispatchv6 != NULL) {
401 dns_dispatch_detach(&requestmgr->dispatchv6);
403 requestmgr->magic = 0;
404 isc_mem_putanddetach(&requestmgr->mctx, requestmgr,
405 sizeof(*requestmgr));
409 mgr_gethash(dns_requestmgr_t *requestmgr) {
414 requestmgr->hash++;
415 return (requestmgr->hash % DNS_REQUEST_NLOCKS);
476 request->requestmgr = NULL;
519 create_tcp_dispatch(bool newtcp, bool share, dns_requestmgr_t *requestmgr,
530 result = dns_dispatch_gettcp(requestmgr->dispatchmgr, destaddr,
543 result = dns_dispatch_gettcp(requestmgr->dispatchmgr, destaddr,
558 result = isc_socket_create(requestmgr->socketmgr,
589 requestmgr->dispatchmgr, sock, requestmgr->taskmgr, srcaddr,
597 find_udp_dispatch(dns_requestmgr_t *requestmgr, const isc_sockaddr_t *srcaddr,
605 disp = requestmgr->dispatchv4;
609 disp = requestmgr->dispatchv6;
640 return (dns_dispatch_getudp(requestmgr->dispatchmgr,
641 requestmgr->socketmgr, requestmgr->taskmgr,
647 get_dispatch(bool tcp, bool newtcp, bool share, dns_requestmgr_t *requestmgr,
653 result = create_tcp_dispatch(newtcp, share, requestmgr, srcaddr,
657 result = find_udp_dispatch(requestmgr, srcaddr, destaddr,
683 dns_request_createraw(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
703 REQUIRE(VALID_REQUESTMGR(requestmgr));
714 mctx = requestmgr->mctx;
718 if (isblackholed(requestmgr->dispatchmgr, destaddr)) {
740 result = isc_timer_create(requestmgr->timermgr, isc_timertype_inactive,
767 result = get_dispatch(tcp, newtcp, share, requestmgr, srcaddr, destaddr,
780 request, &id, &request->dispentry, requestmgr->socketmgr);
811 LOCK(&requestmgr->lock);
812 if (requestmgr->exiting) {
813 UNLOCK(&requestmgr->lock);
817 requestmgr_attach(requestmgr, &request->requestmgr);
818 request->hash = mgr_gethash(requestmgr);
819 ISC_LIST_APPEND(requestmgr->requests, request, link);
820 UNLOCK(&requestmgr->lock);
847 LOCK(&requestmgr->lock);
848 ISC_LIST_UNLINK(requestmgr->requests, request, link);
849 UNLOCK(&requestmgr->lock);
862 dns_request_create(dns_requestmgr_t *requestmgr, dns_message_t *message,
867 return (dns_request_createvia(requestmgr, message, NULL, address, -1,
873 dns_request_createvia(dns_requestmgr_t *requestmgr, dns_message_t *message,
892 REQUIRE(VALID_REQUESTMGR(requestmgr));
900 mctx = requestmgr->mctx;
910 if (isblackholed(requestmgr->dispatchmgr, destaddr)) {
932 result = isc_timer_create(requestmgr->timermgr, isc_timertype_inactive,
953 result = get_dispatch(tcp, false, share, requestmgr, srcaddr, destaddr,
961 &id, &request->dispentry, requestmgr->socketmgr);
997 LOCK(&requestmgr->lock);
998 if (requestmgr->exiting) {
999 UNLOCK(&requestmgr->lock);
1003 requestmgr_attach(requestmgr, &request->requestmgr);
1004 request->hash = mgr_gethash(requestmgr);
1005 ISC_LIST_APPEND(requestmgr->requests, request, link);
1006 UNLOCK(&requestmgr->lock);
1033 LOCK(&requestmgr->lock);
1034 ISC_LIST_UNLINK(requestmgr->requests, request, link);
1035 UNLOCK(&requestmgr->lock);
1171 LOCK(&request->requestmgr->locks[request->hash]);
1177 UNLOCK(&request->requestmgr->locks[request->hash]);
1188 LOCK(&request->requestmgr->locks[request->hash]);
1194 UNLOCK(&request->requestmgr->locks[request->hash]);
1251 LOCK(&request->requestmgr->lock);
1252 LOCK(&request->requestmgr->locks[request->hash]);
1253 ISC_LIST_UNLINK(request->requestmgr->requests, request, link);
1256 UNLOCK(&request->requestmgr->locks[request->hash]);
1257 UNLOCK(&request->requestmgr->lock);
1306 LOCK(&request->requestmgr->locks[request->hash]);
1329 UNLOCK(&request->requestmgr->locks[request->hash]);
1348 LOCK(&request->requestmgr->locks[request->hash]);
1364 UNLOCK(&request->requestmgr->locks[request->hash]);
1382 LOCK(&request->requestmgr->locks[request->hash]);
1407 UNLOCK(&request->requestmgr->locks[request->hash]);
1424 LOCK(&request->requestmgr->locks[request->hash]);
1438 UNLOCK(&request->requestmgr->locks[request->hash]);
1489 if (request->requestmgr != NULL) {
1490 requestmgr_detach(&request->requestmgr);