Lines Matching refs:as

521 free_and_unlock_accepting_socket(struct accepting_socket *as)
524 if (as->s != INVALID_SOCKET)
525 closesocket(as->s);
527 LeaveCriticalSection(&as->lock);
528 DeleteCriticalSection(&as->lock);
529 mm_free(as);
533 start_accepting(struct accepting_socket *as)
538 SOCKET s = socket(as->family, SOCK_STREAM, 0);
541 if (!as->lev->base.enabled)
552 (char *)&as->lev->fd, sizeof(&as->lev->fd));
554 if (!(as->lev->base.flags & LEV_OPT_LEAVE_SOCKETS_BLOCKING))
557 if (event_iocp_port_associate_(as->lev->port, s, 1) < 0) {
562 as->s = s;
564 if (ext->AcceptEx(as->lev->fd, s, as->addrbuf, 0,
565 as->buflen/2, as->buflen/2, &pending, &as->overlapped.overlapped))
568 accepted_socket_cb(&as->overlapped, 1, 0, 1);
579 as->error = error;
581 as->lev->event_base,
582 &as->deferred);
587 stop_accepting(struct accepting_socket *as)
590 SOCKET s = as->s;
591 as->s = INVALID_SOCKET;
598 struct accepting_socket *as = arg;
603 struct evconnlistener *lev = &as->lev->base;
613 EnterCriticalSection(&as->lock);
614 if (as->free_on_cb) {
615 free_and_unlock_accepting_socket(as);
622 error = as->error;
624 as->error = 0;
628 as->addrbuf, 0, as->buflen/2, as->buflen/2,
631 sock = as->s;
633 as->s = INVALID_SOCKET;
639 (char *)&as->lev->fd, sizeof(&as->lev->fd));
643 LeaveCriticalSection(&as->lock);
657 EnterCriticalSection(&as->lock);
658 start_accepting(as);
659 LeaveCriticalSection(&as->lock);
665 struct accepting_socket *as =
668 LOCK(&as->lev->base);
669 EnterCriticalSection(&as->lock);
673 as->lev->event_base,
674 &as->deferred);
675 LeaveCriticalSection(&as->lock);
676 } else if (as->free_on_cb) {
677 struct evconnlistener *lev = &as->lev->base;
678 free_and_unlock_accepting_socket(as);
681 } else if (as->s == INVALID_SOCKET) {
683 LeaveCriticalSection(&as->lock);
688 event_sock_warn(as->s, "Unexpected error on AcceptEx");
689 ok = WSAGetOverlappedResult(as->s, &o->overlapped,
693 as->error = 1;
695 as->error = WSAGetLastError();
698 as->lev->event_base,
699 &as->deferred);
700 LeaveCriticalSection(&as->lock);
702 UNLOCK(&as->lev->base);
715 struct accepting_socket *as = lev_iocp->accepting[i];
716 if (!as)
718 EnterCriticalSection(&as->lock);
719 if (!as->free_on_cb && as->s == INVALID_SOCKET)
720 start_accepting(as);
721 LeaveCriticalSection(&as->lock);
737 struct accepting_socket *as = lev_iocp->accepting[i];
738 if (!as)
740 EnterCriticalSection(&as->lock);
741 if (!as->free_on_cb && as->s != INVALID_SOCKET) {
743 as->free_on_cb = 1;
744 stop_accepting(as);
746 LeaveCriticalSection(&as->lock);