633 keepalive->destroy = evt_keep_alive_destroy; |
633 keepalive->destroy = evt_keep_alive_destroy; |
634 keepalive->created = time(NULL); |
634 keepalive->created = time(NULL); |
635 keepalive->expire = keepalive->created + 120; // TODO: config |
635 keepalive->expire = keepalive->created + 120; // TODO: config |
636 ev_watchlist_add(h, keepalive); |
636 ev_watchlist_add(h, keepalive); |
637 |
637 |
|
638 log_ereport(LOG_DEBUG, "trace reqid: %016llx keep_alive add watch", (unsigned long long int)conn->id); |
|
639 |
638 // wait for input |
640 // wait for input |
639 ZERO(ioevent, sizeof(Event)); |
641 ZERO(ioevent, sizeof(Event)); |
640 ioevent->fn = evt_keep_alive_input_event; |
642 ioevent->fn = evt_keep_alive_input_event; |
641 ioevent->finish = ev_free_event; |
643 ioevent->finish = ev_free_event; |
642 ioevent->cookie = keepalive; |
644 ioevent->cookie = keepalive; |
643 if(ev_pollin(h, conn->fd, ioevent) != 0) { |
645 if(ev_pollin(h, conn->fd, ioevent) != 0) { |
644 log_ereport(LOG_DEBUG, "trace reqid: %016llx connection destroyed | keep_alive_enqueue", (unsigned long long int)conn->id); |
646 log_ereport(LOG_DEBUG, "trace reqid: %016llx connection destroyed | keep_alive_enqueue", (unsigned long long int)conn->id); |
|
647 log_ereport(LOG_DEBUG, "trace reqid: %016llx keep_alive free watch", (unsigned long long int)conn->id); |
645 log_ereport(LOG_FAILURE, "Cannot enqueue connection"); |
648 log_ereport(LOG_FAILURE, "Cannot enqueue connection"); |
646 ev_watchlist_remove(h, keepalive); |
649 ev_watchlist_remove(h, keepalive); |
647 connection_destroy(conn); |
650 connection_destroy(conn); |
648 free(keepalive); |
651 free(keepalive); |
649 free(ioevent); |
652 free(ioevent); |
656 EVWatchList *keepalive = event->cookie; |
659 EVWatchList *keepalive = event->cookie; |
657 Connection *conn = keepalive->data1; |
660 Connection *conn = keepalive->data1; |
658 |
661 |
659 // remove connection from the keep-alive list |
662 // remove connection from the keep-alive list |
660 ev_watchlist_remove(h, keepalive); |
663 ev_watchlist_remove(h, keepalive); |
|
664 log_ereport(LOG_DEBUG, "trace reqid: %016llx keep_alive free watch", (unsigned long long int)conn->id); |
661 free(keepalive); |
665 free(keepalive); |
662 |
666 |
663 // prepare http io |
667 // prepare http io |
664 EventHttpIO *io = evt_req_init(conn->session_handler, conn); |
668 EventHttpIO *io = evt_req_init(conn->session_handler, conn); |
665 if(!io) { |
669 if(!io) { |
684 if(ev_remove_poll(h, conn->fd)) { |
688 if(ev_remove_poll(h, conn->fd)) { |
685 log_ereport(LOG_FAILURE, "sessionhandler: keep-alive timeout: cannot remove poll"); |
689 log_ereport(LOG_FAILURE, "sessionhandler: keep-alive timeout: cannot remove poll"); |
686 } |
690 } |
687 |
691 |
688 log_ereport(LOG_DEBUG, "trace reqid: %016llx keep_alive timeout", (unsigned long long int)conn->id); |
692 log_ereport(LOG_DEBUG, "trace reqid: %016llx keep_alive timeout", (unsigned long long int)conn->id); |
|
693 log_ereport(LOG_DEBUG, "trace reqid: %016llx keep_alive free watch", (unsigned long long int)conn->id); |
689 connection_destroy(conn); |
694 connection_destroy(conn); |
690 free(ioevent); |
695 free(ioevent); |
691 free(item); |
696 free(item); |
692 } |
697 } |