| 596 | } |
| 597 | |
| 598 | int64_t |
| 599 | Http3Transaction::_process_write_vio() |
| 600 | { |
| 601 | if (this->_info.write_vio->cont == nullptr || this->_info.write_vio->op == VIO::NONE) { |
| 602 | return 0; |
| 603 | } |
| 604 | |
| 605 | ink_release_assert(this->_thread == this_ethread()); |
| 606 | SCOPED_MUTEX_LOCK(lock, this->_info.write_vio->mutex, this_ethread()); |
| 607 | |
| 608 | size_t nwritten = 0; |
| 609 | bool all_done = false; |
| 610 | auto error = this->_frame_collector.on_write_ready(this->_info.adapter.stream().id(), *this->_info.write_vio->get_writer(), |
| 611 | nwritten, all_done); |
| 612 | if (error && error->cls != Http3ErrorClass::UNDEFINED) { |
| 613 | Http3TransDebug("Error occured while processing write vio: %hu, %s", error->get_code(), error->msg); |
| 614 | return 0; |
| 615 | } |
| 616 | this->_sent_bytes += nwritten; |
| 617 | if (all_done) { |
| 618 | this->_info.write_vio->nbytes = this->_sent_bytes; |
| 619 | } |
| 620 | |
| 621 | return nwritten; |
| 622 | } |
| 623 | |
| 624 | bool |
| 625 | Http3Transaction::has_request_body(int64_t content_length, bool /* is_chunked_set ATS_UNUSED */) const |
no test coverage detected