Release a request instance.
| 734 | |
| 735 | // Release a request instance. |
| 736 | void EXE_release(thread_db* tdbb, Request* request) |
| 737 | { |
| 738 | DEV_BLKCHK(request, type_req); |
| 739 | |
| 740 | SET_TDBB(tdbb); |
| 741 | |
| 742 | EXE_unwind(tdbb, request); |
| 743 | |
| 744 | // system requests are released after all attachments gone and with |
| 745 | // req_attachment not cleared |
| 746 | |
| 747 | const Jrd::Attachment* attachment = tdbb->getAttachment(); |
| 748 | |
| 749 | if (request->req_attachment && request->req_attachment == attachment) |
| 750 | { |
| 751 | FB_SIZE_T pos; |
| 752 | if (request->req_attachment->att_requests.find(request, pos)) |
| 753 | request->req_attachment->att_requests.remove(pos); |
| 754 | |
| 755 | request->req_attachment = nullptr; |
| 756 | } |
| 757 | |
| 758 | request->req_flags &= ~req_in_use; |
| 759 | if (request->req_timer) |
| 760 | { |
| 761 | request->req_timer->stop(); |
| 762 | request->req_timer = nullptr; |
| 763 | } |
| 764 | } |
| 765 | |
| 766 | |
| 767 | void EXE_send(thread_db* tdbb, Request* request, USHORT msg, ULONG length, const void* buffer) |
no test coverage detected