This is an automated email from the ASF dual-hosted git repository. masaori pushed a commit to branch quic-latest in repository https://gitbox.apache.org/repos/asf/trafficserver.git
commit 33772c879267bab570eb89d183d24f23028b80ee Author: Masaori Koshiba <[email protected]> AuthorDate: Thu Aug 23 11:28:02 2018 +0900 Cleanup: Remove tricky QUICNetVConnection::_store_frame() Which is used before draft-13. --- iocore/net/P_QUICNetVConnection.h | 2 -- iocore/net/QUICNetVConnection.cc | 76 ++++----------------------------------- 2 files changed, 6 insertions(+), 72 deletions(-) diff --git a/iocore/net/P_QUICNetVConnection.h b/iocore/net/P_QUICNetVConnection.h index 18bff60..27a3410 100644 --- a/iocore/net/P_QUICNetVConnection.h +++ b/iocore/net/P_QUICNetVConnection.h @@ -297,8 +297,6 @@ private: uint64_t _maximum_stream_frame_data_size(); uint32_t _transmit_packet(QUICPacketUPtr packet); - void _store_frame(ats_unique_buf &buf, size_t &len, bool &retransmittable, QUICPacketType ¤t_packet_type, - QUICFrameUPtr frame); void _store_frame(ats_unique_buf &buf, size_t &offset, uint64_t &max_frame_size, QUICFrameUPtr frame); QUICPacketUPtr _packetize_frames(QUICEncryptionLevel level, uint64_t max_packet_size); void _packetize_closing_frame(); diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc index 3b9884c..750fa09 100644 --- a/iocore/net/QUICNetVConnection.cc +++ b/iocore/net/QUICNetVConnection.cc @@ -1194,71 +1194,6 @@ QUICNetVConnection::_state_closing_send_packet() return QUICErrorUPtr(new QUICNoError()); } -// Store frame data to buffer for packet. When remaining buffer is too small to store frame data or packet type is different from -// previous one, build packet and transmit it. After that, allocate new buffer. -void -QUICNetVConnection::_store_frame(ats_unique_buf &buf, size_t &len, bool &retransmittable, QUICPacketType ¤t_packet_type, - QUICFrameUPtr frame) -{ - uint32_t max_size = this->maximum_quic_packet_size(); - - QUICPacketType previous_packet_type = current_packet_type; - QUICRetransmissionFrame *rf = dynamic_cast<QUICRetransmissionFrame *>(frame.get()); - if (rf) { - current_packet_type = rf->packet_type(); - } else if (frame->is_protected()) { - current_packet_type = QUICPacketType::PROTECTED; - } else { - current_packet_type = QUICPacketType::UNINITIALIZED; - } - - if (len + frame->size() + MAX_PACKET_OVERHEAD > max_size || (previous_packet_type != current_packet_type && len > 0)) { - this->_transmit_packet(this->_build_packet(std::move(buf), len, retransmittable, previous_packet_type)); - retransmittable = false; - len = 0; - buf = nullptr; - } - - retransmittable = retransmittable || (frame->type() != QUICFrameType::ACK && frame->type() != QUICFrameType::PADDING); - - if (buf == nullptr) { - buf = ats_unique_malloc(max_size); - } - - ink_assert(max_size > len); - - size_t l = 0; - size_t n = frame->store(buf.get() + len, &l, max_size - len); - if (n > 0) { - if (is_debug_tag_set(QUIC_DEBUG_TAG.data())) { - char msg[1024]; - frame->debug_msg(msg, sizeof(msg)); - QUICConDebug("[TX] %s", msg); - } - - len += l; - return; - } - - // split frame - auto new_frame = QUICFrameFactory::split_frame(frame.get(), max_size - len); - - if (is_debug_tag_set(QUIC_DEBUG_TAG.data())) { - char msg[1024]; - frame->debug_msg(msg, sizeof(msg)); - QUICConDebug("[TX] %s", msg); - } - - ink_assert(frame->store(buf.get() + len, &l, max_size - len) > 0); - ink_assert(new_frame != nullptr); - - this->_transmit_packet(this->_build_packet(std::move(buf), len, retransmittable, current_packet_type)); - len = 0; - buf = ats_unique_malloc(max_size); - this->_store_frame(buf, len, retransmittable, current_packet_type, std::move(new_frame)); - return; -} - void QUICNetVConnection::_store_frame(ats_unique_buf &buf, size_t &offset, uint64_t &max_frame_size, QUICFrameUPtr frame) { @@ -1406,11 +1341,12 @@ QUICNetVConnection::_packetize_closing_frame() frame = QUICFrameFactory::create_connection_close_frame(std::move(this->_connection_error)); } - ats_unique_buf buf(nullptr, [](void *p) { ats_free(p); }); - size_t len = 0; - bool retransmittable = false; - QUICPacketType current_packet_type = QUICPacketType::UNINITIALIZED; - this->_store_frame(buf, len, retransmittable, current_packet_type, std::move(frame)); + uint32_t max_size = this->maximum_quic_packet_size(); + ats_unique_buf buf = ats_unique_malloc(max_size); + + size_t len = 0; + uint64_t max_frame_size = static_cast<uint64_t>(max_size); + this->_store_frame(buf, len, max_frame_size, std::move(frame)); QUICEncryptionLevel level = this->_hs_protocol->current_encryption_level(); ink_assert(level != QUICEncryptionLevel::ZERO_RTT);
