You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by ma...@apache.org on 2018/08/03 07:24:37 UTC

[trafficserver] 03/03: Remove unnecessary checks before generate_frame() calls

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 c0f4400280d8ac033c497ab1f598a7526f1aefec
Author: Masaori Koshiba <ma...@apache.org>
AuthorDate: Fri Aug 3 16:23:48 2018 +0900

    Remove unnecessary checks before generate_frame() calls
---
 iocore/net/QUICNetVConnection.cc | 73 +++++++++++++++++++---------------------
 1 file changed, 35 insertions(+), 38 deletions(-)

diff --git a/iocore/net/QUICNetVConnection.cc b/iocore/net/QUICNetVConnection.cc
index 93e8143..f9f48f1 100644
--- a/iocore/net/QUICNetVConnection.cc
+++ b/iocore/net/QUICNetVConnection.cc
@@ -1305,35 +1305,36 @@ QUICNetVConnection::_packetize_frames(QUICEncryptionLevel level, uint64_t max_pa
   }
 
   // CRYPTO
-  if (this->_handshake_handler->will_generate_frame(level)) {
+  frame = this->_handshake_handler->generate_frame(level, UINT16_MAX, max_frame_size);
+  while (frame) {
+    ++frame_count;
+    this->_store_frame(buf, len, max_frame_size, std::move(frame));
     frame = this->_handshake_handler->generate_frame(level, UINT16_MAX, max_frame_size);
-    while (frame) {
-      ++frame_count;
-      this->_store_frame(buf, len, max_frame_size, std::move(frame));
-      frame = this->_handshake_handler->generate_frame(level, UINT16_MAX, max_frame_size);
-    }
   }
 
   // ACK
-  if (this->_ack_frame_creator.will_generate_frame(level)) {
-    frame = this->_ack_frame_creator.generate_frame(level, UINT16_MAX, max_frame_size);
-    if (frame != nullptr) {
-      ++frame_count;
-      this->_store_frame(buf, len, max_frame_size, std::move(frame));
+  if (will_be_ack_only) {
+    if (this->_ack_frame_creator.will_generate_frame(level)) {
+      frame = this->_ack_frame_creator.generate_frame(level, UINT16_MAX, max_frame_size);
     }
+  } else {
+    frame = this->_ack_frame_creator.generate_frame(level, UINT16_MAX, max_frame_size);
+  }
+
+  if (frame != nullptr) {
+    ++frame_count;
+    this->_store_frame(buf, len, max_frame_size, std::move(frame));
   }
 
   // PATH_CHALLENGE, PATH_RESPOSNE
-  if (this->_path_validator->will_generate_frame(level)) {
-    frame = this->_path_validator->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
-    if (frame) {
-      ++frame_count;
-      this->_store_frame(buf, len, max_frame_size, std::move(frame));
-    }
+  frame = this->_path_validator->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
+  if (frame) {
+    ++frame_count;
+    this->_store_frame(buf, len, max_frame_size, std::move(frame));
   }
 
   // NEW_CONNECTION_ID
-  if (this->_alt_con_manager && this->_alt_con_manager->will_generate_frame(level)) {
+  if (this->_alt_con_manager) {
     frame = this->_alt_con_manager->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
     while (frame) {
       ++frame_count;
@@ -1344,31 +1345,27 @@ QUICNetVConnection::_packetize_frames(QUICEncryptionLevel level, uint64_t max_pa
   }
 
   // Lost frames
-  if (this->_packet_retransmitter.will_generate_frame(level)) {
-    frame = this->_packet_retransmitter.generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
-    while (frame) {
-      ++frame_count;
-      this->_store_frame(buf, len, max_frame_size, std::move(frame));
+  frame = this->_packet_retransmitter.generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
+  while (frame) {
+    ++frame_count;
+    this->_store_frame(buf, len, max_frame_size, std::move(frame));
 
-      frame = this->_packet_retransmitter.generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
-    }
+    frame = this->_packet_retransmitter.generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
   }
 
   // STREAM, MAX_STREAM_DATA, STREAM_BLOCKED
-  if (this->_stream_manager->will_generate_frame(level)) {
-    frame = this->_stream_manager->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
-    while (frame) {
-      ++frame_count;
-      if (frame->type() == QUICFrameType::STREAM) {
-        int ret = this->_remote_flow_controller->update(this->_stream_manager->total_offset_sent());
-        QUICFCDebug("[REMOTE] %" PRIu64 "/%" PRIu64, this->_remote_flow_controller->current_offset(),
-                    this->_remote_flow_controller->current_limit());
-        ink_assert(ret == 0);
-      }
-      this->_store_frame(buf, len, max_frame_size, std::move(frame));
-
-      frame = this->_stream_manager->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
+  frame = this->_stream_manager->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
+  while (frame) {
+    ++frame_count;
+    if (frame->type() == QUICFrameType::STREAM) {
+      int ret = this->_remote_flow_controller->update(this->_stream_manager->total_offset_sent());
+      QUICFCDebug("[REMOTE] %" PRIu64 "/%" PRIu64, this->_remote_flow_controller->current_offset(),
+                  this->_remote_flow_controller->current_limit());
+      ink_assert(ret == 0);
     }
+    this->_store_frame(buf, len, max_frame_size, std::move(frame));
+
+    frame = this->_stream_manager->generate_frame(level, this->_remote_flow_controller->credit(), max_frame_size);
   }
 
   // Schedule a packet