| 1386 | } |
| 1387 | |
| 1388 | void |
| 1389 | Http2ConnectionState::destroy() |
| 1390 | { |
| 1391 | if (in_destroy) { |
| 1392 | schedule_zombie_event(); |
| 1393 | return; |
| 1394 | } |
| 1395 | in_destroy = true; |
| 1396 | |
| 1397 | _cop.stop(); |
| 1398 | |
| 1399 | if (shutdown_cont_event) { |
| 1400 | shutdown_cont_event->cancel(); |
| 1401 | shutdown_cont_event = nullptr; |
| 1402 | } |
| 1403 | cleanup_streams(); |
| 1404 | |
| 1405 | delete local_hpack_handle; |
| 1406 | local_hpack_handle = nullptr; |
| 1407 | delete peer_hpack_handle; |
| 1408 | peer_hpack_handle = nullptr; |
| 1409 | delete dependency_tree; |
| 1410 | dependency_tree = nullptr; |
| 1411 | this->session = nullptr; |
| 1412 | |
| 1413 | if (fini_event) { |
| 1414 | fini_event->cancel(); |
| 1415 | } |
| 1416 | if (zombie_event) { |
| 1417 | zombie_event->cancel(); |
| 1418 | } |
| 1419 | |
| 1420 | if (_priority_event) { |
| 1421 | _priority_event->cancel(); |
| 1422 | } |
| 1423 | |
| 1424 | if (_data_event) { |
| 1425 | _data_event->cancel(); |
| 1426 | } |
| 1427 | |
| 1428 | if (retransmit_event) { |
| 1429 | retransmit_event->cancel(); |
| 1430 | } |
| 1431 | // release the mutex after the events are cancelled and sessions are destroyed. |
| 1432 | mutex = nullptr; // magic happens - assigning to nullptr frees the ProxyMutex |
| 1433 | } |
| 1434 | |
| 1435 | void |
| 1436 | Http2ConnectionState::rcv_frame(const Http2Frame *frame) |
no test coverage detected