Lines Matching defs:listener

467  * Handle listener objects
485 ns_lwreslistener_t *listener;
492 listener = *listenerp;
494 LOCK(&listener->lock);
495 INSIST(listener->refs > 0);
496 listener->refs--;
497 if (listener->refs == 0)
499 UNLOCK(&listener->lock);
504 if (listener->manager != NULL)
505 ns_lwdmanager_detach(&listener->manager);
507 if (listener->sock != NULL)
508 isc_socket_detach(&listener->sock);
510 listener->magic = 0;
511 mctx = listener->mctx;
512 isc_mem_put(mctx, listener, sizeof(*listener));
521 ns_lwreslistener_t *listener;
526 listener = isc_mem_get(mctx, sizeof(ns_lwreslistener_t));
527 if (listener == NULL)
530 result = isc_mutex_init(&listener->lock);
532 isc_mem_put(mctx, listener, sizeof(ns_lwreslistener_t));
536 listener->magic = LWRESLISTENER_MAGIC;
537 listener->refs = 1;
539 listener->sock = NULL;
541 listener->manager = NULL;
542 ns_lwdmanager_attach(lwresd, &listener->manager);
544 listener->mctx = NULL;
545 isc_mem_attach(mctx, &listener->mctx);
547 ISC_LINK_INIT(listener, link);
548 ISC_LIST_INIT(listener->cmgrs);
550 *listenerp = listener;
555 listener_bind(ns_lwreslistener_t *listener, isc_sockaddr_t *address) {
565 listener->address = *address;
567 if (isc_sockaddr_getport(&listener->address) == 0) {
572 isc_sockaddr_setport(&listener->address, port);
586 result = isc_socket_bind(sock, &listener->address,
590 isc_sockaddr_format(&listener->address, socktext,
599 listener->sock = sock;
612 listener_startclients(ns_lwreslistener_t *listener) {
621 listener->manager->ntasks, listener->manager->nclients);
626 for (i = 0; i < listener->manager->ntasks; i++) {
627 result = ns_lwdclientmgr_create(listener,
628 listener->manager->nclients,
638 if (ISC_LIST_EMPTY(listener->cmgrs))
644 LOCK(&listener->lock);
645 cm = ISC_LIST_HEAD(listener->cmgrs);
657 UNLOCK(&listener->lock);
663 listener_shutdown(ns_lwreslistener_t *listener) {
666 cm = ISC_LIST_HEAD(listener->cmgrs);
675 ns_lwreslistener_t *listener;
679 for (listener = ISC_LIST_HEAD(listeners);
680 listener != NULL;
681 listener = ISC_LIST_NEXT(listener, link))
683 if (!isc_sockaddr_equal(address, &listener->address))
685 *listenerp = listener;
692 ns_lwreslistener_unlinkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm)
694 REQUIRE(VALID_LWRESLISTENER(listener));
696 LOCK(&listener->lock);
697 ISC_LIST_UNLINK(listener->cmgrs, cm, link);
698 UNLOCK(&listener->lock);
702 ns_lwreslistener_linkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm) {
703 REQUIRE(VALID_LWRESLISTENER(listener));
709 ISC_LIST_APPEND(listener->cmgrs, cm, link);
716 ns_lwreslistener_t *listener, *oldlistener = NULL;
721 listener = NULL;
722 result = listener_create(mctx, lwresd, &listener);
733 * If there's already a listener, don't rebind the socket.
736 result = listener_bind(listener, address);
738 ns_lwreslistener_detach(&listener);
742 listener_copysock(oldlistener, listener);
744 result = listener_startclients(listener);
751 ns_lwreslistener_detach(&listener);
757 * Remove the old listener from the old list and shut it down.
769 ISC_LIST_APPEND(*newlisteners, listener, link);
779 ns_lwreslistener_t *listener;
850 listener = ISC_LIST_HEAD(listeners);
851 ISC_LIST_UNLINK(listeners, listener, link);
853 isc_sockaddr_format(&listener->address,
856 listener_shutdown(listener);
857 ns_lwreslistener_detach(&listener);
880 ns_lwreslistener_t *listener;
885 listener = ISC_LIST_HEAD(listeners);
886 ISC_LIST_UNLINK(listeners, listener, link);
887 ns_lwreslistener_detach(&listener);