MCPcopy Create free account
hub / github.com/apache/trafficserver / close_connection

Function close_connection

tools/http_load/http_load.c:2805–2887  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2803}
2804
2805static void
2806close_connection(int cnum)
2807{
2808 int url_num;
2809
2810 if (!connections[cnum].reusable) {
2811 struct epoll_event ev;
2812
2813 ev.events = EPOLLIN | EPOLLOUT;
2814 ev.data.u32 = cnum;
2815 if (epoll_ctl(epfd, EPOLL_CTL_DEL, connections[cnum].conn_fd, &ev) < 0)
2816 perror("epoll delete fd");
2817 if (urls[connections[cnum].url_num].protocol == PROTO_HTTPS && connections[cnum].ssl != NULL)
2818 SSL_free(connections[cnum].ssl);
2819 (void)close(connections[cnum].conn_fd);
2820 } else {
2821 --connections[cnum].keep_alive;
2822 }
2823 connections[cnum].conn_state = CNST_FREE;
2824 if (connections[cnum].idle_timer != (Timer *)0)
2825 tmr_cancel(connections[cnum].idle_timer);
2826 if (connections[cnum].wakeup_timer != (Timer *)0)
2827 tmr_cancel(connections[cnum].wakeup_timer);
2828 --num_connections;
2829 ++fetches_completed;
2830 total_bytes += connections[cnum].bytes;
2831 if (connections[cnum].did_connect) {
2832 long long connect_usecs = delta_timeval(&connections[cnum].connect_at, &connections[cnum].request_at);
2833 /*
2834 if ( connect_usecs > ( max_connect_usecs << 3 ) && max_connect_usecs )
2835 connect_usecs = max_connect_usecs;
2836 */
2837 total_connect_usecs += connect_usecs;
2838 max_connect_usecs = max(max_connect_usecs, connect_usecs);
2839 min_connect_usecs = min(min_connect_usecs, connect_usecs);
2840 ++connects_completed;
2841 }
2842 if (connections[cnum].did_response) {
2843 long long response_usecs = delta_timeval(&connections[cnum].request_at, &connections[cnum].response_at);
2844 /*
2845 if ( response_usecs > ( max_response_usecs << 1 ) && max_response_usecs )
2846 response_usecs = max_response_usecs;
2847 */
2848 total_response_usecs += response_usecs;
2849 max_response_usecs = max(max_response_usecs, response_usecs);
2850 min_response_usecs = min(min_response_usecs, response_usecs);
2851 ++responses_completed;
2852 }
2853 if (connections[cnum].http_status >= 0 && connections[cnum].http_status <= 999) {
2854 ++http_status_counts[connections[cnum].http_status];
2855 connections[cnum].stats.responses++;
2856 }
2857
2858 url_num = connections[cnum].url_num;
2859
2860 /* Only check to update got_bytes, byte count errors and/or checksums
2861 if the request was successful (i.e. no HTTP error). */
2862 if (connections[cnum].http_status >= 0 && connections[cnum].http_status < 400) {

Callers 4

start_socketFunction · 0.85
handle_connectFunction · 0.85
handle_readFunction · 0.85
idle_connectionFunction · 0.85

Calls 2

tmr_cancelFunction · 0.85
delta_timevalFunction · 0.85

Tested by

no test coverage detected