| 260 | } |
| 261 | |
| 262 | static void delete_http2_session_data(http2_session_data *session_data) { |
| 263 | http2_stream_data *stream_data; |
| 264 | SSL *ssl = bufferevent_openssl_get_ssl(session_data->bev); |
| 265 | struct list_head *it, *aux; |
| 266 | |
| 267 | LM_INFO("%s disconnected\n", session_data->client_addr); |
| 268 | if (ssl) |
| 269 | SSL_shutdown(ssl); |
| 270 | bufferevent_free(session_data->bev); |
| 271 | nghttp2_session_del(session_data->session); |
| 272 | |
| 273 | list_for_each_safe (it, aux, &session_data->root) { |
| 274 | stream_data = list_entry(it, http2_stream_data, list); |
| 275 | |
| 276 | list_del(&stream_data->list); |
| 277 | delete_http2_stream_data(stream_data); |
| 278 | } |
| 279 | |
| 280 | free(session_data->client_addr); |
| 281 | free(session_data); |
| 282 | } |
| 283 | |
| 284 | /* Serialize the frame and send (or buffer) the data to |
| 285 | bufferevent. */ |
no test coverage detected