Lines Matching defs:listener

459  * Handle listener objects
477 ns_lwreslistener_t *listener;
484 listener = *listenerp;
486 LOCK(&listener->lock);
487 INSIST(listener->refs > 0);
488 listener->refs--;
489 if (listener->refs == 0)
491 UNLOCK(&listener->lock);
496 if (listener->manager != NULL)
497 ns_lwdmanager_detach(&listener->manager);
499 if (listener->sock != NULL)
500 isc_socket_detach(&listener->sock);
502 listener->magic = 0;
503 mctx = listener->mctx;
504 isc_mem_put(mctx, listener, sizeof(*listener));
513 ns_lwreslistener_t *listener;
518 listener = isc_mem_get(mctx, sizeof(ns_lwreslistener_t));
519 if (listener == NULL)
522 result = isc_mutex_init(&listener->lock);
524 isc_mem_put(mctx, listener, sizeof(ns_lwreslistener_t));
528 listener->magic = LWRESLISTENER_MAGIC;
529 listener->refs = 1;
531 listener->sock = NULL;
533 listener->manager = NULL;
534 ns_lwdmanager_attach(lwresd, &listener->manager);
536 listener->mctx = NULL;
537 isc_mem_attach(mctx, &listener->mctx);
539 ISC_LINK_INIT(listener, link);
540 ISC_LIST_INIT(listener->cmgrs);
542 *listenerp = listener;
547 listener_bind(ns_lwreslistener_t *listener, isc_sockaddr_t *address) {
557 listener->address = *address;
559 if (isc_sockaddr_getport(&listener->address) == 0) {
564 isc_sockaddr_setport(&listener->address, port);
578 result = isc_socket_bind(sock, &listener->address,
582 isc_sockaddr_format(&listener->address, socktext,
591 listener->sock = sock;
604 listener_startclients(ns_lwreslistener_t *listener) {
614 result = ns_lwdclientmgr_create(listener, NRECVS,
620 if (ISC_LIST_EMPTY(listener->cmgrs))
626 LOCK(&listener->lock);
627 cm = ISC_LIST_HEAD(listener->cmgrs);
638 UNLOCK(&listener->lock);
644 listener_shutdown(ns_lwreslistener_t *listener) {
647 cm = ISC_LIST_HEAD(listener->cmgrs);
656 ns_lwreslistener_t *listener;
660 for (listener = ISC_LIST_HEAD(listeners);
661 listener != NULL;
662 listener = ISC_LIST_NEXT(listener, link))
664 if (!isc_sockaddr_equal(address, &listener->address))
666 *listenerp = listener;
673 ns_lwreslistener_unlinkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm)
675 REQUIRE(VALID_LWRESLISTENER(listener));
677 LOCK(&listener->lock);
678 ISC_LIST_UNLINK(listener->cmgrs, cm, link);
679 UNLOCK(&listener->lock);
683 ns_lwreslistener_linkcm(ns_lwreslistener_t *listener, ns_lwdclientmgr_t *cm) {
684 REQUIRE(VALID_LWRESLISTENER(listener));
690 ISC_LIST_APPEND(listener->cmgrs, cm, link);
697 ns_lwreslistener_t *listener, *oldlistener = NULL;
702 listener = NULL;
703 result = listener_create(mctx, lwresd, &listener);
714 * If there's already a listener, don't rebind the socket.
717 result = listener_bind(listener, address);
719 ns_lwreslistener_detach(&listener);
723 listener_copysock(oldlistener, listener);
725 result = listener_startclients(listener);
732 ns_lwreslistener_detach(&listener);
738 * Remove the old listener from the old list and shut it down.
750 ISC_LIST_APPEND(*newlisteners, listener, link);
760 ns_lwreslistener_t *listener;
830 listener = ISC_LIST_HEAD(listeners);
831 ISC_LIST_UNLINK(listeners, listener, link);
833 isc_sockaddr_format(&listener->address,
836 listener_shutdown(listener);
837 ns_lwreslistener_detach(&listener);
860 ns_lwreslistener_t *listener;
865 listener = ISC_LIST_HEAD(listeners);
866 ISC_LIST_UNLINK(listeners, listener, link);
867 ns_lwreslistener_detach(&listener);