[trafficserver] branch 8.1.x updated: Bumped version for builds etc. to v8.1.1

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 8.1.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/8.1.x by this push:
 new 887f2bb  Bumped version for builds etc. to v8.1.1
887f2bb is described below

commit 887f2bb0da35b81c2a753d8b6838c3bc9d80f7d3
Author: Leif Hedstrom 
AuthorDate: Fri Aug 28 21:35:27 2020 -0600

Bumped version for builds etc. to v8.1.1
---
 STATUS   | 1 +
 configure.ac | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/STATUS b/STATUS
index 752267e..c1d1080 100644
--- a/STATUS
+++ b/STATUS
@@ -6,6 +6,7 @@ The current version of this file can be found at:
   * https://github.com/apache/trafficserver/blob/master/STATUS
 
 Release history:
+8.1.1   : Release on XXX YYY, 2020
 8.1.0   : Release on Aug 28th, 2020
 
 8.0.8   : Release on Jun 23rd, 2020
diff --git a/configure.ac b/configure.ac
index 0cd0f72..99bf39a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,8 +32,8 @@
 # Version number is calculated as MAJOR * 100 + MINOR * 1000 + MICRO
 # Version string is in the form of MAJOR.MINOR.MICRO[sufix]
 #
-m4_define([TS_VERSION_S],[8.1.0])
-m4_define([TS_VERSION_N],[8001000])
+m4_define([TS_VERSION_S],[8.1.1])
+m4_define([TS_VERSION_N],[8001001])
 
 AC_INIT([Apache Traffic Server], TS_VERSION_S(), 
[d...@trafficserver.apache.org], 
[trafficserver],[http://trafficserver.apache.org])
 AC_PREREQ([2.59])



[trafficserver] annotated tag 8.1.0 updated (72c03ba -> d0a20aa)

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a change to annotated tag 8.1.0
in repository https://gitbox.apache.org/repos/asf/trafficserver.git.


*** WARNING: tag 8.1.0 was modified! ***

from 72c03ba  (commit)
  to d0a20aa  (tag)
 tagging 72c03baa83e0736e4d3fc90880642c2f5593ecf2 (commit)
 replaces 8.0.6
  by Leif Hedstrom
  on Fri Aug 28 21:30:54 2020 -0600

- Log -
Release 8.1.0
-BEGIN PGP SIGNATURE-

iQKTBAABCgB9FiEEerFeX94ZVaUNqYYFUz3vFV17vFoFAl9Jy+5fFIAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDdB
QjE1RTVGREUxOTU1QTUwREE5ODYwNTUzM0RFRjE1NUQ3QkJDNUEACgkQUz3vFV17
vFpY9RAAmpsznrkJjvPxcKNdk+L2lnRhs4DKyQpxRffZcs+q3cl1cNZtafDoMHKI
7iW/jCXuraJ8DH6sVhJEZypNaW9uplaFa5VWVMoOywLQX8gz9W5LTkLsOSnc/8Fm
Jvpx1xA8fJkGaByCtegfonChTqNDhnDdQKNq1SjGjUKNdHgHdElnGxmyDB+0XtZq
HN28FUxIJoo8A/Uc2lNID6WdoWy79pEWXsISx/96h3rtxZKgYBLZAYV0NdkIyyjD
AsehIkCW9vDCuPmgr7hnThKRP8o3AOe5WZdFn75mOV2mCq9rv9TbwMO/vn+roSWj
VgbWncGOWcqoGpkwiB6J4phh4q7udmRGgfsJByxoBTeec80cSQ6bGYDxV1Jo69kK
ZnN9m5NHQB4P3RildmjLB0LDBLYYMWe0oVWANOZ2NJiB59LStUW9F4fL1a+Dm8Au
1x9FOfVc4HkRQyxXCTZsfSDZWqe1S1HNO1k44sPUMj1VF20oZY8mcgI9FU5F1kr7
Pjcw+Lt09aBF2sCHeAN6LF32fSLQK2ed1P7qBMRri92MCQeuQuTgIBBtTnahg2oE
L8NIeK6mVMcvSxjVH60CKPvVEZkmoBGNpws54D92pIYUuyzBjD02n4j36aNumynV
qaSj4F5UJTEutpAQFvAV/bPhtM/7fac8ETZQIv1wPC9fXa0WZrQ=
=6Ofn
-END PGP SIGNATURE-
---


No new revisions were added by this update.

Summary of changes:



svn commit: r41180 - in /release/trafficserver: trafficserver-8.1.0.tar.bz2 trafficserver-8.1.0.tar.bz2.asc trafficserver-8.1.0.tar.bz2.sha512

2020-08-28 Thread zwoop
Author: zwoop
Date: Sat Aug 29 03:33:22 2020
New Revision: 41180

Log:
Added v8.1.0 release

Added:
release/trafficserver/trafficserver-8.1.0.tar.bz2   (with props)
release/trafficserver/trafficserver-8.1.0.tar.bz2.asc
release/trafficserver/trafficserver-8.1.0.tar.bz2.sha512

Added: release/trafficserver/trafficserver-8.1.0.tar.bz2
==
Binary file - no diff available.

Propchange: release/trafficserver/trafficserver-8.1.0.tar.bz2
--
svn:mime-type = application/octet-stream

Added: release/trafficserver/trafficserver-8.1.0.tar.bz2.asc
==
--- release/trafficserver/trafficserver-8.1.0.tar.bz2.asc (added)
+++ release/trafficserver/trafficserver-8.1.0.tar.bz2.asc Sat Aug 29 03:33:22 
2020
@@ -0,0 +1,18 @@
+-BEGIN PGP SIGNATURE-
+
+iQKTBAABCgB9FiEEerFeX94ZVaUNqYYFUz3vFV17vFoFAl9Jy+lfFIAALgAo
+aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDdB
+QjE1RTVGREUxOTU1QTUwREE5ODYwNTUzM0RFRjE1NUQ3QkJDNUEACgkQUz3vFV17
+vFpDghAAiN7eIsvdeFaJJ4WKsQQhBNSD3uJ7DinbbdxTWRnGjvD+s8BotJdGbsKG
+JGb3TYPRL6JHq9s87OG5e9MB9Gej8o8b0ZBZhPz+rcGTz5t1p2hgY5OeEKvRObWz
+rZ9Afi3s7rPtiWTXFgd926gcowaNt9gDQ/qVeRF3TxwSC3V2PMjvhsVoamqXxpb4
+pitw1dtTc5rLGOPHLEzb+5rzMVpnLG4cIw6/FO1/YOv6M5KFwk9XQ62nE8I9U4ZM
+4/tGtBi+61hikr3HwKKj5Vcq38RfrZkGQLqcDI1GWftQ/jIRut5/cuYC3FCx+O5p
+e2A1h/bPXQquFJv6PFznHtcPFxx773npTyqyajxaJ3aGnCoww3EZ2ezoSrgSASMx
+/es1mJ/C7tv78l6+eAdOgw4UwItIJGpyqrYWsOe6C30wGJNK5WxuSVRRnUPG6KWc
+IDJIFF3XjiFadZl8JrK2rEvx2Wn321Cj0U1ez+p7gSrOW/d7JWvlk0tOgw7vwbSu
+ylCCL4CZHKrwQ9z7jxDP4OS2xeh4b0AATMN2emvBLqii7Smd5L5BVWzymdfoAAwC
+aNvK/AQwSS2mdNfY0pNI7qBU1VjSLCJV0/9pmZOUtHunHCtbq42x1m6bbCPkqyzN
+r9LEBP59hIJUexyQpPk7MjPuq4Ifj+GKwGIONy9+vZNxsh0PijE=
+=iMqL
+-END PGP SIGNATURE-

Added: release/trafficserver/trafficserver-8.1.0.tar.bz2.sha512
==
--- release/trafficserver/trafficserver-8.1.0.tar.bz2.sha512 (added)
+++ release/trafficserver/trafficserver-8.1.0.tar.bz2.sha512 Sat Aug 29 
03:33:22 2020
@@ -0,0 +1 @@
+19bebf9f718cdfcfc6fcb24c6b40272e033502464709931180fc0066c4f3f4a96730098a536a7b71584149578382a38f1c14781e23d941f11e0bf78c2f5c43d1
 *trafficserver-8.1.0.tar.bz2




[trafficserver] branch 9.0.x updated: Updated ChangeLog

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/9.0.x by this push:
 new c92050c  Updated ChangeLog
c92050c is described below

commit c92050c8782e7e9c2c9dbe304b2b1f2088d63caf
Author: Leif Hedstrom 
AuthorDate: Fri Aug 28 21:29:49 2020 -0600

Updated ChangeLog
---
 CHANGELOG-9.0.0 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/CHANGELOG-9.0.0 b/CHANGELOG-9.0.0
index 9f21e2f..5ea7bc1 100644
--- a/CHANGELOG-9.0.0
+++ b/CHANGELOG-9.0.0
@@ -1054,6 +1054,7 @@ Changes with Apache Traffic Server 9.0.0
   #7113 - Updating our autest suite to require Python3.6
   #7118 - Backing out my update of our jenkin's autest file.
   #7120 - Check VIO availability before checking whether the VIO has data
+  #7121 - Don't return QUIC frame if the size exceeds maximum frame size
   #7122 - Make tls_hooks tests more likely to pass particularly for 9.0.x 
branch
   #7123 - Accept NAT rebinding on a QUIC connection
   #7124 - Update and run the autopep8 make target
@@ -1062,4 +1063,6 @@ Changes with Apache Traffic Server 9.0.0
   #7128 - Protect TSActionCancel from null INKContInternal actions
   #7129 - Comment out a wrong assertion in QUIC Loss Detection logic
   #7137 - Removes duplicated listing of files in same Makefile target
+  #7138 - Remove useless shortopt
   #7140 - Fixes garbled logs when using % log tag
+  #7145 - Check VIO availability before acquiring a lock for it



[trafficserver] branch master updated: slice: check if vio is still valid before calling TSVIODone* on shutdown (#7147)

2020-08-28 Thread bnolsen
This is an automated email from the ASF dual-hosted git repository.

bnolsen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new c8c9540  slice: check if vio is still valid before calling TSVIODone* 
on shutdown (#7147)
c8c9540 is described below

commit c8c9540b04b08d04bd44f6b8c7aa5d75d4a9e1a8
Author: Brian Olsen 
AuthorDate: Fri Aug 28 16:26:38 2020 -0600

slice: check if vio is still valid before calling TSVIODone* on shutdown 
(#7147)
---
 plugins/experimental/slice/Stage.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/plugins/experimental/slice/Stage.h 
b/plugins/experimental/slice/Stage.h
index 4efa3f4..47ae28a 100644
--- a/plugins/experimental/slice/Stage.h
+++ b/plugins/experimental/slice/Stage.h
@@ -49,7 +49,9 @@ struct Channel {
   int64_t const avail = TSIOBufferReaderAvail(m_reader);
   TSIOBufferReaderConsume(m_reader, avail);
   consumed = avail;
-  TSVIONDoneSet(m_vio, TSVIONDoneGet(m_vio) + consumed);
+  if (nullptr != m_vio) {
+TSVIONDoneSet(m_vio, TSVIONDoneGet(m_vio) + consumed);
+  }
 }
 
 return consumed;



[trafficserver] branch master updated: Deprecate cqhv field (#7143)

2020-08-28 Thread bcall
This is an automated email from the ASF dual-hosted git repository.

bcall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new da01051  Deprecate cqhv field (#7143)
da01051 is described below

commit da01051e5985b4ef25db368ee33de6b605a8ddee
Author: Masakazu Kitajo 
AuthorDate: Sat Aug 29 00:02:38 2020 +0900

Deprecate cqhv field (#7143)
---
 doc/admin-guide/logging/formatting.en.rst | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/doc/admin-guide/logging/formatting.en.rst 
b/doc/admin-guide/logging/formatting.en.rst
index fbb74d6..583e999 100644
--- a/doc/admin-guide/logging/formatting.en.rst
+++ b/doc/admin-guide/logging/formatting.en.rst
@@ -564,7 +564,8 @@ were in effect for a given event.
 = = ===
 Field SourceDescription
 = = ===
-cqhv  Client RequestClient request HTTP version.
+cqhv  Client RequestClient request HTTP version. Deprecated since 9.0.
+Use ``cqpv`` instead.
 cqpv  Client RequestClient request protocol and version.
 csshv Cached Proxy Response Origin server's HTTP version from cached version of
 the document in |TS| proxy cache.



[trafficserver] branch 9.0.x updated (8468f22 -> 0c3fb32)

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a change to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git.


from 8468f22  remove useless shortopt (#7138)
 new 27e6796  Check VIO availability before acquiring a lock for it (#7145)
 new 0c3fb32  Don't return QUIC frame if the size exceeds maximum frame 
size (#7121)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 iocore/net/quic/QUICBidirectionalStream.cc  | 153 +---
 iocore/net/quic/QUICFlowController.cc   |   1 +
 iocore/net/quic/QUICUnidirectionalStream.cc | 153 +---
 iocore/net/quic/test/test_QUICFlowController.cc |  35 ++
 iocore/net/quic/test/test_QUICStream.cc |  91 ++
 5 files changed, 287 insertions(+), 146 deletions(-)



[trafficserver] 01/02: Check VIO availability before acquiring a lock for it (#7145)

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 27e6796b99bfa22ec1a885d484513664119ecae5
Author: Masakazu Kitajo 
AuthorDate: Fri Aug 28 23:37:16 2020 +0900

Check VIO availability before acquiring a lock for it (#7145)

This closes #7141

(cherry picked from commit 88b89d5a4b7b997009a9dc2ca4998fe0edaa3590)
---
 iocore/net/quic/QUICBidirectionalStream.cc  | 144 ++--
 iocore/net/quic/QUICUnidirectionalStream.cc | 144 ++--
 iocore/net/quic/test/test_QUICStream.cc |   4 +
 3 files changed, 146 insertions(+), 146 deletions(-)

diff --git a/iocore/net/quic/QUICBidirectionalStream.cc 
b/iocore/net/quic/QUICBidirectionalStream.cc
index 8ee46c2..fbe75fb 100644
--- a/iocore/net/quic/QUICBidirectionalStream.cc
+++ b/iocore/net/quic/QUICBidirectionalStream.cc
@@ -371,8 +371,6 @@ QUICFrame *
 QUICBidirectionalStream::generate_frame(uint8_t *buf, QUICEncryptionLevel 
level, uint64_t connection_credit,
 uint16_t maximum_frame_size, size_t 
current_packet_size, uint32_t seq_num)
 {
-  SCOPED_MUTEX_LOCK(lock, this->_write_vio.mutex, this_ethread());
-
   QUICFrame *frame = this->create_retransmitted_frame(buf, level, 
maximum_frame_size, this->_issue_frame_id(), this);
   if (frame != nullptr) {
 ink_assert(frame->type() == QUICFrameType::STREAM);
@@ -405,92 +403,92 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
 return frame;
   }
 
-  if (!this->_state.is_allowed_to_send(QUICFrameType::STREAM)) {
-return frame;
-  }
-
-  uint64_t maximum_data_size = 0;
-  if (maximum_frame_size <= MAX_STREAM_FRAME_OVERHEAD) {
-return frame;
-  }
-  maximum_data_size = maximum_frame_size - MAX_STREAM_FRAME_OVERHEAD;
-
-  bool pure_fin = false;
-  bool fin  = false;
-  if ((this->_write_vio.nbytes != 0 || this->_write_vio.nbytes != INT64_MAX) &&
-  this->_write_vio.nbytes == static_cast(this->_send_offset)) {
-// Pure FIN stream should be sent regardless status of remote flow 
controller, because the length is zero.
-pure_fin = true;
-fin  = true;
-  }
+  if (this->_write_vio.op != VIO::NONE && 
this->_state.is_allowed_to_send(QUICFrameType::STREAM)) {
+SCOPED_MUTEX_LOCK(lock, this->_write_vio.mutex, this_ethread());
 
-  uint64_t len   = 0;
-  IOBufferReader *reader = this->_write_vio.get_reader();
-  if (!pure_fin) {
-uint64_t data_len = reader->block_read_avail();
-if (data_len == 0) {
+uint64_t maximum_data_size = 0;
+if (maximum_frame_size <= MAX_STREAM_FRAME_OVERHEAD) {
   return frame;
 }
-
-// Check Connection/Stream level credit only if the generating STREAM 
frame is not pure fin
-uint64_t stream_credit = this->_remote_flow_controller.credit();
-if (stream_credit == 0) {
-  // STREAM_DATA_BLOCKED
-  frame =
-this->_remote_flow_controller.generate_frame(buf, level, UINT16_MAX, 
maximum_frame_size, current_packet_size, seq_num);
-  return frame;
+maximum_data_size = maximum_frame_size - MAX_STREAM_FRAME_OVERHEAD;
+
+bool pure_fin = false;
+bool fin  = false;
+if ((this->_write_vio.nbytes != 0 || this->_write_vio.nbytes != INT64_MAX) 
&&
+this->_write_vio.nbytes == static_cast(this->_send_offset)) {
+  // Pure FIN stream should be sent regardless status of remote flow 
controller, because the length is zero.
+  pure_fin = true;
+  fin  = true;
 }
 
-if (connection_credit == 0) {
-  // BLOCKED - BLOCKED frame will be sent by connection level remote flow 
controller
-  return frame;
+uint64_t len   = 0;
+IOBufferReader *reader = this->_write_vio.get_reader();
+if (!pure_fin) {
+  uint64_t data_len = reader->block_read_avail();
+  if (data_len == 0) {
+return frame;
+  }
+
+  // Check Connection/Stream level credit only if the generating STREAM 
frame is not pure fin
+  uint64_t stream_credit = this->_remote_flow_controller.credit();
+  if (stream_credit == 0) {
+// STREAM_DATA_BLOCKED
+frame =
+  this->_remote_flow_controller.generate_frame(buf, level, UINT16_MAX, 
maximum_frame_size, current_packet_size, seq_num);
+return frame;
+  }
+
+  if (connection_credit == 0) {
+// BLOCKED - BLOCKED frame will be sent by connection level remote 
flow controller
+return frame;
+  }
+
+  len = std::min(data_len, std::min(maximum_data_size, 
std::min(stream_credit, connection_credit)));
+
+  // data_len, maximum_data_size, stream_credit and connection_credit are 
already checked they're larger than 0
+  ink_assert(len != 0);
+
+  if (this->_write_vio.nbytes == static_cast(this->_send_offset + 
len)) {
+fin = true;
+  }
 }
 
-len = std::min(data_len, 

[trafficserver] 02/02: Don't return QUIC frame if the size exceeds maximum frame size (#7121)

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/trafficserver.git

commit 0c3fb32a0d0459655bc352532f1cf2dd9e305930
Author: Masakazu Kitajo 
AuthorDate: Fri Aug 28 23:37:59 2020 +0900

Don't return QUIC frame if the size exceeds maximum frame size (#7121)

This fixes #7114

(cherry picked from commit 9e904eab77e15dc895c4c723d553f2183ac85ef1)
---
 iocore/net/quic/QUICBidirectionalStream.cc  |  9 +++
 iocore/net/quic/QUICFlowController.cc   |  1 +
 iocore/net/quic/QUICUnidirectionalStream.cc |  9 +++
 iocore/net/quic/test/test_QUICFlowController.cc | 35 ++
 iocore/net/quic/test/test_QUICStream.cc | 87 +
 5 files changed, 141 insertions(+)

diff --git a/iocore/net/quic/QUICBidirectionalStream.cc 
b/iocore/net/quic/QUICBidirectionalStream.cc
index fbe75fb..4203ec0 100644
--- a/iocore/net/quic/QUICBidirectionalStream.cc
+++ b/iocore/net/quic/QUICBidirectionalStream.cc
@@ -381,6 +381,10 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
   // RESET_STREAM
   if (this->_reset_reason && !this->_is_reset_sent) {
 frame = QUICFrameFactory::create_rst_stream_frame(buf, 
*this->_reset_reason, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_rst_stream_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_reset_sent = true;
@@ -391,6 +395,10 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
   if (this->_stop_sending_reason && !this->_is_stop_sending_sent) {
 frame =
   QUICFrameFactory::create_stop_sending_frame(buf, this->id(), 
this->_stop_sending_reason->code, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_stop_sending_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_stop_sending_sent = true;
@@ -400,6 +408,7 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
   // MAX_STREAM_DATA
   frame = this->_local_flow_controller.generate_frame(buf, level, UINT16_MAX, 
maximum_frame_size, current_packet_size, seq_num);
   if (frame) {
+// maximum_frame_size should be checked in QUICFlowController
 return frame;
   }
 
diff --git a/iocore/net/quic/QUICFlowController.cc 
b/iocore/net/quic/QUICFlowController.cc
index c818306..647e4c4 100644
--- a/iocore/net/quic/QUICFlowController.cc
+++ b/iocore/net/quic/QUICFlowController.cc
@@ -129,6 +129,7 @@ QUICFlowController::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint
 *(reinterpret_cast(info->data)) = this->_limit;
 this->_records_frame(frame->id(), std::move(info));
   } else {
+frame->~QUICFrame();
 frame = nullptr;
   }
 }
diff --git a/iocore/net/quic/QUICUnidirectionalStream.cc 
b/iocore/net/quic/QUICUnidirectionalStream.cc
index 8fa77e6..c6a3d7a 100644
--- a/iocore/net/quic/QUICUnidirectionalStream.cc
+++ b/iocore/net/quic/QUICUnidirectionalStream.cc
@@ -150,6 +150,10 @@ QUICSendStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint64_t
   // RESET_STREAM
   if (this->_reset_reason && !this->_is_reset_sent) {
 frame = QUICFrameFactory::create_rst_stream_frame(buf, 
*this->_reset_reason, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_rst_stream_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_reset_sent = true;
@@ -551,6 +555,10 @@ QUICReceiveStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint6
   if (this->_stop_sending_reason && !this->_is_stop_sending_sent) {
 frame =
   QUICFrameFactory::create_stop_sending_frame(buf, this->id(), 
this->_stop_sending_reason->code, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_stop_sending_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_stop_sending_sent = true;
@@ -559,6 +567,7 @@ QUICReceiveStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint6
 
   // MAX_STREAM_DATA
   frame = this->_local_flow_controller.generate_frame(buf, level, UINT16_MAX, 
maximum_frame_size, current_packet_size, seq_num);
+  // maximum_frame_size should be checked in QUICFlowController
   return frame;
 }
 
diff --git a/iocore/net/quic/test/test_QUICFlowController.cc 
b/iocore/net/quic/test/test_QUICFlowController.cc
index 3f9ca89..598b74e 100644
--- a/iocore/net/quic/test/test_QUICFlowController.cc
+++ 

[trafficserver] branch master updated: Don't return QUIC frame if the size exceeds maximum frame size (#7121)

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 9e904ea  Don't return QUIC frame if the size exceeds maximum frame 
size (#7121)
9e904ea is described below

commit 9e904eab77e15dc895c4c723d553f2183ac85ef1
Author: Masakazu Kitajo 
AuthorDate: Fri Aug 28 23:37:59 2020 +0900

Don't return QUIC frame if the size exceeds maximum frame size (#7121)

This fixes #7114
---
 iocore/net/quic/QUICBidirectionalStream.cc  |  9 +++
 iocore/net/quic/QUICFlowController.cc   |  1 +
 iocore/net/quic/QUICUnidirectionalStream.cc |  9 +++
 iocore/net/quic/test/test_QUICFlowController.cc | 35 ++
 iocore/net/quic/test/test_QUICStream.cc | 87 +
 5 files changed, 141 insertions(+)

diff --git a/iocore/net/quic/QUICBidirectionalStream.cc 
b/iocore/net/quic/QUICBidirectionalStream.cc
index fbe75fb..4203ec0 100644
--- a/iocore/net/quic/QUICBidirectionalStream.cc
+++ b/iocore/net/quic/QUICBidirectionalStream.cc
@@ -381,6 +381,10 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
   // RESET_STREAM
   if (this->_reset_reason && !this->_is_reset_sent) {
 frame = QUICFrameFactory::create_rst_stream_frame(buf, 
*this->_reset_reason, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_rst_stream_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_reset_sent = true;
@@ -391,6 +395,10 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
   if (this->_stop_sending_reason && !this->_is_stop_sending_sent) {
 frame =
   QUICFrameFactory::create_stop_sending_frame(buf, this->id(), 
this->_stop_sending_reason->code, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_stop_sending_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_stop_sending_sent = true;
@@ -400,6 +408,7 @@ QUICBidirectionalStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level,
   // MAX_STREAM_DATA
   frame = this->_local_flow_controller.generate_frame(buf, level, UINT16_MAX, 
maximum_frame_size, current_packet_size, seq_num);
   if (frame) {
+// maximum_frame_size should be checked in QUICFlowController
 return frame;
   }
 
diff --git a/iocore/net/quic/QUICFlowController.cc 
b/iocore/net/quic/QUICFlowController.cc
index c818306..647e4c4 100644
--- a/iocore/net/quic/QUICFlowController.cc
+++ b/iocore/net/quic/QUICFlowController.cc
@@ -129,6 +129,7 @@ QUICFlowController::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint
 *(reinterpret_cast(info->data)) = this->_limit;
 this->_records_frame(frame->id(), std::move(info));
   } else {
+frame->~QUICFrame();
 frame = nullptr;
   }
 }
diff --git a/iocore/net/quic/QUICUnidirectionalStream.cc 
b/iocore/net/quic/QUICUnidirectionalStream.cc
index 8fa77e6..c6a3d7a 100644
--- a/iocore/net/quic/QUICUnidirectionalStream.cc
+++ b/iocore/net/quic/QUICUnidirectionalStream.cc
@@ -150,6 +150,10 @@ QUICSendStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint64_t
   // RESET_STREAM
   if (this->_reset_reason && !this->_is_reset_sent) {
 frame = QUICFrameFactory::create_rst_stream_frame(buf, 
*this->_reset_reason, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_rst_stream_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_reset_sent = true;
@@ -551,6 +555,10 @@ QUICReceiveStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint6
   if (this->_stop_sending_reason && !this->_is_stop_sending_sent) {
 frame =
   QUICFrameFactory::create_stop_sending_frame(buf, this->id(), 
this->_stop_sending_reason->code, this->_issue_frame_id(), this);
+if (frame->size() > maximum_frame_size) {
+  frame->~QUICFrame();
+  return nullptr;
+}
 this->_records_stop_sending_frame(level, *static_cast(frame));
 this->_state.update_with_sending_frame(*frame);
 this->_is_stop_sending_sent = true;
@@ -559,6 +567,7 @@ QUICReceiveStream::generate_frame(uint8_t *buf, 
QUICEncryptionLevel level, uint6
 
   // MAX_STREAM_DATA
   frame = this->_local_flow_controller.generate_frame(buf, level, UINT16_MAX, 
maximum_frame_size, current_packet_size, seq_num);
+  // maximum_frame_size should be checked in QUICFlowController
   return frame;
 }
 
diff --git a/iocore/net/quic/test/test_QUICFlowController.cc 

[trafficserver] branch master updated (90da85f -> 88b89d5)

2020-08-28 Thread zwoop
This is an automated email from the ASF dual-hosted git repository.

zwoop pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git.


from 90da85f  Fix #7116, skip the insertion of the same continuation to 
pending dns (#7117)
 add 88b89d5  Check VIO availability before acquiring a lock for it (#7145)

No new revisions were added by this update.

Summary of changes:
 iocore/net/quic/QUICBidirectionalStream.cc  | 144 ++--
 iocore/net/quic/QUICUnidirectionalStream.cc | 144 ++--
 iocore/net/quic/test/test_QUICStream.cc |   4 +
 3 files changed, 146 insertions(+), 146 deletions(-)



[trafficserver] branch master updated: Fix #7116, skip the insertion of the same continuation to pending dns (#7117)

2020-08-28 Thread zzz
This is an automated email from the ASF dual-hosted git repository.

zzz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
 new 90da85f  Fix #7116, skip the insertion of the same continuation to 
pending dns (#7117)
90da85f is described below

commit 90da85f6b55d792839719190a79e7a6bf8caa0c1
Author: Zizhong Zhang 
AuthorDate: Fri Aug 28 00:41:24 2020 -0700

Fix #7116, skip the insertion of the same continuation to pending dns 
(#7117)
---
 iocore/hostdb/HostDB.cc | 4 
 1 file changed, 4 insertions(+)

diff --git a/iocore/hostdb/HostDB.cc b/iocore/hostdb/HostDB.cc
index b79f74a..75ad469 100644
--- a/iocore/hostdb/HostDB.cc
+++ b/iocore/hostdb/HostDB.cc
@@ -1586,6 +1586,10 @@ HostDBContinuation::set_check_pending_dns()
 {
   Queue  = hostDB.pending_dns_for_hash(hash.hash);
   this->setThreadAffinity(this_ethread());
+  if (q.in(this)) {
+Warning("Skip the insertion of the same continuation to pending dns");
+return false;
+  }
   HostDBContinuation *c = q.head;
   for (; c; c = static_cast(c->link.next)) {
 if (hash.hash == c->hash.hash) {