Lines Matching defs:as

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