Lines Matching refs:as

531 free_and_unlock_accepting_socket(struct accepting_socket *as)  in free_and_unlock_accepting_socket()  argument
534 if (as->s != EVUTIL_INVALID_SOCKET) in free_and_unlock_accepting_socket()
535 closesocket(as->s); in free_and_unlock_accepting_socket()
537 LeaveCriticalSection(&as->lock); in free_and_unlock_accepting_socket()
538 DeleteCriticalSection(&as->lock); in free_and_unlock_accepting_socket()
539 mm_free(as); in free_and_unlock_accepting_socket()
543 start_accepting(struct accepting_socket *as) in start_accepting() argument
548 SOCKET s = socket(as->family, SOCK_STREAM, 0); in start_accepting()
551 if (!as->lev->base.enabled) in start_accepting()
562 (char *)&as->lev->fd, sizeof(&as->lev->fd)); in start_accepting()
564 if (!(as->lev->base.flags & LEV_OPT_LEAVE_SOCKETS_BLOCKING)) in start_accepting()
567 if (event_iocp_port_associate_(as->lev->port, s, 1) < 0) { in start_accepting()
572 as->s = s; in start_accepting()
574 if (ext->AcceptEx(as->lev->fd, s, as->addrbuf, 0, in start_accepting()
575 as->buflen/2, as->buflen/2, &pending, &as->overlapped.overlapped)) in start_accepting()
578 accepted_socket_cb(&as->overlapped, 1, 0, 1); in start_accepting()
589 as->error = error; in start_accepting()
591 as->lev->event_base, in start_accepting()
592 &as->deferred); in start_accepting()
597 stop_accepting(struct accepting_socket *as) in stop_accepting() argument
600 SOCKET s = as->s; in stop_accepting()
601 as->s = EVUTIL_INVALID_SOCKET; in stop_accepting()
608 struct accepting_socket *as = arg; in accepted_socket_invoke_user_cb() local
613 struct evconnlistener *lev = &as->lev->base; in accepted_socket_invoke_user_cb()
623 EnterCriticalSection(&as->lock); in accepted_socket_invoke_user_cb()
624 if (as->free_on_cb) { in accepted_socket_invoke_user_cb()
625 free_and_unlock_accepting_socket(as); in accepted_socket_invoke_user_cb()
632 error = as->error; in accepted_socket_invoke_user_cb()
634 as->error = 0; in accepted_socket_invoke_user_cb()
638 as->addrbuf, 0, as->buflen/2, as->buflen/2, in accepted_socket_invoke_user_cb()
641 sock = as->s; in accepted_socket_invoke_user_cb()
643 as->s = EVUTIL_INVALID_SOCKET; in accepted_socket_invoke_user_cb()
649 (char *)&as->lev->fd, sizeof(&as->lev->fd)); in accepted_socket_invoke_user_cb()
653 LeaveCriticalSection(&as->lock); in accepted_socket_invoke_user_cb()
667 EnterCriticalSection(&as->lock); in accepted_socket_invoke_user_cb()
668 start_accepting(as); in accepted_socket_invoke_user_cb()
669 LeaveCriticalSection(&as->lock); in accepted_socket_invoke_user_cb()
675 struct accepting_socket *as = in accepted_socket_cb() local
678 LOCK(&as->lev->base); in accepted_socket_cb()
679 EnterCriticalSection(&as->lock); in accepted_socket_cb()
683 as->lev->event_base, in accepted_socket_cb()
684 &as->deferred); in accepted_socket_cb()
685 LeaveCriticalSection(&as->lock); in accepted_socket_cb()
686 } else if (as->free_on_cb) { in accepted_socket_cb()
687 struct evconnlistener *lev = &as->lev->base; in accepted_socket_cb()
688 free_and_unlock_accepting_socket(as); in accepted_socket_cb()
691 } else if (as->s == EVUTIL_INVALID_SOCKET) { in accepted_socket_cb()
693 LeaveCriticalSection(&as->lock); in accepted_socket_cb()
698 event_sock_warn(as->s, "Unexpected error on AcceptEx"); in accepted_socket_cb()
699 ok = WSAGetOverlappedResult(as->s, &o->overlapped, in accepted_socket_cb()
703 as->error = 1; in accepted_socket_cb()
705 as->error = WSAGetLastError(); in accepted_socket_cb()
708 as->lev->event_base, in accepted_socket_cb()
709 &as->deferred); in accepted_socket_cb()
710 LeaveCriticalSection(&as->lock); in accepted_socket_cb()
712 UNLOCK(&as->lev->base); in accepted_socket_cb()
725 struct accepting_socket *as = lev_iocp->accepting[i]; in iocp_listener_enable() local
726 if (!as) in iocp_listener_enable()
728 EnterCriticalSection(&as->lock); in iocp_listener_enable()
729 if (!as->free_on_cb && as->s == EVUTIL_INVALID_SOCKET) in iocp_listener_enable()
730 start_accepting(as); in iocp_listener_enable()
731 LeaveCriticalSection(&as->lock); in iocp_listener_enable()
747 struct accepting_socket *as = lev_iocp->accepting[i]; in iocp_listener_disable_impl() local
748 if (!as) in iocp_listener_disable_impl()
750 EnterCriticalSection(&as->lock); in iocp_listener_disable_impl()
751 if (!as->free_on_cb && as->s != EVUTIL_INVALID_SOCKET) { in iocp_listener_disable_impl()
753 as->free_on_cb = 1; in iocp_listener_disable_impl()
754 stop_accepting(as); in iocp_listener_disable_impl()
756 LeaveCriticalSection(&as->lock); in iocp_listener_disable_impl()