src/server/daemon/sessionhandler.c

changeset 561
e1c92c126557
parent 560
87485c36081b
equal deleted inserted replaced
560:87485c36081b 561:e1c92c126557
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 }

mercurial