| 104 | } |
| 105 | |
| 106 | void |
| 107 | Http1ServerSession::do_io_close(int alerrno) |
| 108 | { |
| 109 | // Only do the close bookkeeping 1 time |
| 110 | if (state != SSN_CLOSED) { |
| 111 | swoc::LocalBufferWriter<256> w; |
| 112 | bool debug_p = dbg_ctl_http_ss.on(); |
| 113 | |
| 114 | state = SSN_CLOSED; |
| 115 | |
| 116 | if (debug_p) { |
| 117 | w.print("[{}] session close: nevtc {:x}", con_id, _vc); |
| 118 | } |
| 119 | |
| 120 | Metrics::Gauge::decrement(http_rsb.current_server_connections); |
| 121 | |
| 122 | // Update upstream connection tracking data if present. |
| 123 | this->release_outbound_connection_tracking(); |
| 124 | |
| 125 | if (debug_p) { |
| 126 | Dbg(dbg_ctl_http_ss, "%.*s", static_cast<int>(w.size()), w.data()); |
| 127 | } |
| 128 | |
| 129 | if (_vc) { |
| 130 | _vc->do_io_close(alerrno); |
| 131 | } |
| 132 | _vc = nullptr; |
| 133 | |
| 134 | if (to_parent_proxy) { |
| 135 | Metrics::Gauge::decrement(http_rsb.current_parent_proxy_connections); |
| 136 | } |
| 137 | } |
| 138 | |
| 139 | if (transact_count == released_transactions) { |
| 140 | this->destroy(); |
| 141 | } |
| 142 | } |
| 143 | |
| 144 | // void Http1ServerSession::release() |
| 145 | // |
no test coverage detected