[trafficserver] branch 8.1.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

2020-10-15 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 5ce3c75  Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
5ce3c75 is described below

commit 5ce3c75ed932ee885f339a0726f3d5bd0f46cc8d
Author: Masaori Koshiba 
AuthorDate: Thu Oct 15 10:26:02 2020 +0900

Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

(cherry picked from commit 25229339f03ade2af006f03595c343e08cffdfab)
---
 proxy/http2/Http2ConnectionState.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 394b299..adf7fc1 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -1393,9 +1393,6 @@ Http2ConnectionState::release_stream(Http2Stream *stream)
 // Can't do this because we just destroyed right here ^,
 // or we can use a local variable to do it.
 // ua_session = nullptr;
-  } else if (shutdown_state == HTTP2_SHUTDOWN_IN_PROGRESS && fini_event == 
nullptr) {
-ua_session->clear_session_active();
-fini_event = this_ethread()->schedule_imm_local((Continuation *)this, 
HTTP2_SESSION_EVENT_FINI);
   } else if (ua_session->is_active()) {
 // If the number of clients is 0, HTTP2_SESSION_EVENT_FINI is not 
received or sent, and ua_session is active,
 // then mark the connection as inactive



[trafficserver] branch 9.0.x updated: Updated ChangeLog

2020-10-15 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 082eab8  Updated ChangeLog
082eab8 is described below

commit 082eab80d0e6400796e04ab3caa46bc902b11c99
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:46:57 2020 -0600

Updated ChangeLog
---
 CHANGELOG-9.0.0 | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG-9.0.0 b/CHANGELOG-9.0.0
index fb687f3..f895217 100644
--- a/CHANGELOG-9.0.0
+++ b/CHANGELOG-9.0.0
@@ -644,7 +644,6 @@ Changes with Apache Traffic Server 9.0.0
   #5863 - pipe buffer size for log.pipe should be configurable
   #5864 - ProxyTxn refactor: moved host_res_style to t_state.dns_info
   #5867 - PR#5867: Explain how to use open_con().
-  #5868 - Update HttpTransact.cc
   #5869 - ProxyTxn: removed restart_immediate
   #5870 - Fix bad limit in poll loop.  jtest -c1 now works again.
   #5879 - Weak mutex locking macros
@@ -1113,5 +1112,10 @@ Changes with Apache Traffic Server 9.0.0
   #7238 - Supporting out of source builds for AuTests.
   #7243 - RolledLogDeleter: do not sort on each candidate consideration.
   #7252 - Remove some useless defines, which just obfuscates code
+  #7258 - Fix proxy.process.http.current_client_transactions
   #7260 - Treat objects with negative max-age CC directives as stale.
   #7266 - Allow initial // in request targets.
+  #7269 - gracefully handle TSReleaseAsserts in statichit and generator plugins
+  #7274 - Introduce proxy-verifier to AuTests
+  #7275 - Respecting default rolling_enabled value in plugins.
+  #7278 - 7096: Synchronize Server Session Management and Network I/O



[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-10-15 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 12953fc  Updated ChangeLog
12953fc is described below

commit 12953fc5eacc2957abc7575c72a238fa9e29bdee
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:43:03 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.1 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG-8.1.1 b/CHANGELOG-8.1.1
index 16617d6..0d20151 100644
--- a/CHANGELOG-8.1.1
+++ b/CHANGELOG-8.1.1
@@ -8,4 +8,5 @@ Changes with Apache Traffic Server 8.1.1
   #7217 - Remove usage of stored ACL record, fix ipallow reload
   #7234 -  Do not cache Transfer-Encoding header
   #7244 - Replace existing autest certs with ones from master
+  #7267 - Fix truncated reponse on HTTP/2 graceful shutdown
   #7268 - add support for centos8 to autest



[trafficserver] branch 9.0.x updated: gracefully handle TSReleaseAsserts in statichit and generator plugins (#7269)

2020-10-15 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 51eb50d  gracefully handle TSReleaseAsserts in statichit and generator 
plugins (#7269)
51eb50d is described below

commit 51eb50da0b854b1763609472a169c03d94235456
Author: Randall Meyer 
AuthorDate: Tue Oct 13 14:59:50 2020 -0700

gracefully handle TSReleaseAsserts in statichit and generator plugins 
(#7269)

(cherry picked from commit 4ffd34a8c528e2b3863af6f15ad78051007eddc6)
---
 plugins/experimental/statichit/statichit.cc | 30 
 plugins/generator/generator.cc  | 54 ++---
 2 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/plugins/experimental/statichit/statichit.cc 
b/plugins/experimental/statichit/statichit.cc
index 1520350..b362ba4 100644
--- a/plugins/experimental/statichit/statichit.cc
+++ b/plugins/experimental/statichit/statichit.cc
@@ -234,16 +234,25 @@ HeaderFieldStringSet(const StaticHitHttpHeader , 
const char *field_name, in
   TSHandleMLocRelease(http.buffer, http.header, field);
 }
 
-static void
+static TSReturnCode
 WriteResponseHeader(StaticHitRequest *trq, TSCont contp, TSHttpStatus status)
 {
   StaticHitHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, status) 
== TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, status) != 
TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(status), -1);
 
@@ -275,6 +284,8 @@ WriteResponseHeader(StaticHitRequest *trq, TSCont contp, 
TSHttpStatus status)
   TSVIOReenable(trq->writeio.vio);
 
   TSStatIntIncrement(StatCountBytes, hdrlen);
+
+  return TS_SUCCESS;
 }
 
 static bool
@@ -384,7 +395,11 @@ StaticHitInterceptHook(TSCont contp, TSEvent event, void 
*edata)
 cdata.trq->writeio.write(TSVIOVConnGet(arg.vio), contp);
 TSVIONBytesSet(cdata.trq->writeio.vio, 0);
 
-WriteResponseHeader(cdata.trq, contp, status);
+if (WriteResponseHeader(cdata.trq, contp, status) != TS_SUCCESS) {
+  VERROR("failure writing response");
+  return TS_EVENT_ERROR;
+}
+
 return TS_EVENT_NONE;
 
   case TS_PARSE_CONT:
@@ -496,7 +511,10 @@ StaticHitTxnHook(TSCont contp, TSEvent event, void *edata)
 TSMLoc hdr_loc;
 const char *method;
 
-TSReleaseAssert(TSHttpTxnCacheLookupStatusGet(arg.txn, ) == 
TS_SUCCESS);
+if (TSHttpTxnCacheLookupStatusGet(arg.txn, ) != TS_SUCCESS) {
+  VERROR("failed to get client request handle");
+  goto done;
+}
 
 if (TSHttpTxnClientReqGet(arg.txn, , _loc) != TS_SUCCESS) {
   VERROR("Couldn't retrieve client request header");
diff --git a/plugins/generator/generator.cc b/plugins/generator/generator.cc
index 751a253..e33681c 100644
--- a/plugins/generator/generator.cc
+++ b/plugins/generator/generator.cc
@@ -284,17 +284,26 @@ GeneratorGetRequestHeader(GeneratorHttpHeader , 
const char *field_name,
   return default_value;
 }
 
-static void
+static TSReturnCode
 GeneratorWriteResponseHeader(GeneratorRequest *grq, TSCont contp)
 {
   GeneratorHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, TS_HTTP_STATUS_OK) 
!= TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, 
TS_HTTP_STATUS_OK) == TS_SUCCESS);
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK), -1);
 
   // Set the Content-Length header.

[trafficserver] branch 9.0.x updated: Updated ChangeLog

2020-10-15 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 082eab8  Updated ChangeLog
082eab8 is described below

commit 082eab80d0e6400796e04ab3caa46bc902b11c99
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:46:57 2020 -0600

Updated ChangeLog
---
 CHANGELOG-9.0.0 | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG-9.0.0 b/CHANGELOG-9.0.0
index fb687f3..f895217 100644
--- a/CHANGELOG-9.0.0
+++ b/CHANGELOG-9.0.0
@@ -644,7 +644,6 @@ Changes with Apache Traffic Server 9.0.0
   #5863 - pipe buffer size for log.pipe should be configurable
   #5864 - ProxyTxn refactor: moved host_res_style to t_state.dns_info
   #5867 - PR#5867: Explain how to use open_con().
-  #5868 - Update HttpTransact.cc
   #5869 - ProxyTxn: removed restart_immediate
   #5870 - Fix bad limit in poll loop.  jtest -c1 now works again.
   #5879 - Weak mutex locking macros
@@ -1113,5 +1112,10 @@ Changes with Apache Traffic Server 9.0.0
   #7238 - Supporting out of source builds for AuTests.
   #7243 - RolledLogDeleter: do not sort on each candidate consideration.
   #7252 - Remove some useless defines, which just obfuscates code
+  #7258 - Fix proxy.process.http.current_client_transactions
   #7260 - Treat objects with negative max-age CC directives as stale.
   #7266 - Allow initial // in request targets.
+  #7269 - gracefully handle TSReleaseAsserts in statichit and generator plugins
+  #7274 - Introduce proxy-verifier to AuTests
+  #7275 - Respecting default rolling_enabled value in plugins.
+  #7278 - 7096: Synchronize Server Session Management and Network I/O



[trafficserver] branch 9.0.x updated: Respecting default rolling_enabled in plugins. (#7275)

2020-10-15 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 9f09616  Respecting default rolling_enabled in plugins. (#7275)
9f09616 is described below

commit 9f096167039b7e4b6b672d0cf59da44a6a697a06
Author: Brian Neradt 
AuthorDate: Tue Oct 13 17:48:23 2020 -0500

Respecting default rolling_enabled in plugins. (#7275)

Some plugins indiscriminately enable log rolling without consideration
of the system value. This looks like it is just a mistake that went
unnoticed because we've always had this enabled. This patch changes a
couple plugins to respect the proxy.config.log.rolling_enabled value by
not overwriting it with TSTextLogObjectRollingEnabledSet unless
explicitly configured to do so.

(cherry picked from commit bb847ee03c274b7aed2993423c4fe3957cb11c2a)
---
 plugins/regex_revalidate/regex_revalidate.c |  1 -
 plugins/tcpinfo/tcpinfo.cc  | 23 +++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/plugins/regex_revalidate/regex_revalidate.c 
b/plugins/regex_revalidate/regex_revalidate.c
index d7ff706..4d45f99 100644
--- a/plugins/regex_revalidate/regex_revalidate.c
+++ b/plugins/regex_revalidate/regex_revalidate.c
@@ -504,7 +504,6 @@ TSPluginInit(int argc, const char *argv[])
   break;
 case 'l':
   if (TS_SUCCESS == TSTextLogObjectCreate(optarg, 
TS_LOG_MODE_ADD_TIMESTAMP, >log)) {
-TSTextLogObjectRollingEnabledSet(pstate->log, 1);
 TSTextLogObjectRollingIntervalSecSet(pstate->log, LOG_ROLL_INTERVAL);
 TSTextLogObjectRollingOffsetHrSet(pstate->log, LOG_ROLL_OFFSET);
   }
diff --git a/plugins/tcpinfo/tcpinfo.cc b/plugins/tcpinfo/tcpinfo.cc
index 0c9d07f..ca73cb0 100644
--- a/plugins/tcpinfo/tcpinfo.cc
+++ b/plugins/tcpinfo/tcpinfo.cc
@@ -337,7 +337,7 @@ TSPluginInit(int argc, const char *argv[])
   const char *filename = "tcpinfo";
   TSCont cont;
   unsigned int hooks= 0;
-  unsigned int rolling_enabled  = 1;
+  int rolling_enabled   = -1;
   unsigned int rolling_interval_sec = 86400;
   unsigned int rolling_offset_hr= 0;
   unsigned int rolling_size = 1024;
@@ -379,7 +379,8 @@ TSPluginInit(int argc, const char *argv[])
 case 'e':
   i = strtoul(optarg, , 10);
   if (*endptr != '\0' || i > 3) {
-TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using 
default of %d", optarg, rolling_enabled);
+TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using the 
system's proxy.config.log.rolling_enabled value",
+optarg);
   } else {
 rolling_enabled = i;
   }
@@ -424,20 +425,26 @@ init:
   TSDebug("tcpinfo", "sample: %d", config->sample);
   TSDebug("tcpinfo", "log filename: %s", filename);
   TSDebug("tcpinfo", "log_level: %u", config->log_level);
+  TSDebug("tcpinfo", "rolling_enabled: %d", rolling_enabled);
   TSDebug("tcpinfo", "hook mask: 0x%x", hooks);
 
   if (TSTextLogObjectCreate(filename, TS_LOG_MODE_ADD_TIMESTAMP, >log) 
!= TS_SUCCESS) {
 TSError("[tcpinfo] failed to create log file '%s'", filename);
 return;
   }
-  if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
-TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
-return;
+  if (rolling_enabled == -1) {
+// The user either did not provide a value or the value they provided was
+// invalid.
+TSDebug("tcpinfo", "Using system default value of 
proxy.config.log.rolling_enabled ");
   } else {
-TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
-TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
-TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
+if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
+  TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
+  return;
+}
   }
+  TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
+  TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
+  TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
 
   TSTextLogObjectHeaderSet(config->log, tcpi_headers[config->log_level - 1]);
 



[trafficserver] branch 9.0.x updated: Fix proxy.process.http.current_client_transactions (#7258)

2020-10-15 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 e454433  Fix proxy.process.http.current_client_transactions (#7258)
e454433 is described below

commit e454433b932d7fa949a75665d61dfbfa55d37909
Author: Susan Hinrichs 
AuthorDate: Thu Oct 15 12:19:13 2020 -0500

Fix proxy.process.http.current_client_transactions (#7258)

(cherry picked from commit 233f9913ab77fc89ad3345dd41780e58809a8958)
---
 proxy/ProxyTransaction.cc| 23 ---
 proxy/ProxyTransaction.h |  4 ++--
 proxy/http/Http1ClientSession.cc | 15 +--
 proxy/http/Http1Transaction.cc   | 18 ++
 proxy/http/HttpSM.cc |  1 +
 proxy/http2/Http2Stream.cc   |  5 +++--
 proxy/http3/Http3Transaction.cc  |  2 +-
 7 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/proxy/ProxyTransaction.cc b/proxy/ProxyTransaction.cc
index 9be892f..214c710 100644
--- a/proxy/ProxyTransaction.cc
+++ b/proxy/ProxyTransaction.cc
@@ -32,7 +32,7 @@ ProxyTransaction::ProxyTransaction() : VConnection(nullptr) {}
 void
 ProxyTransaction::new_transaction(bool from_early_data)
 {
-  ink_assert(_sm == nullptr);
+  ink_release_assert(_sm == nullptr);
 
   // Defensive programming, make sure nothing persists across
   // connection re-use
@@ -57,20 +57,6 @@ ProxyTransaction::new_transaction(bool from_early_data)
 }
 
 void
-ProxyTransaction::release(IOBufferReader *r)
-{
-  HttpTxnDebug("[%" PRId64 "] session released by sm [%" PRId64 "]", 
_proxy_ssn ? _proxy_ssn->connection_id() : 0,
-   _sm ? _sm->sm_id : 0);
-
-  this->decrement_client_transactions_stat();
-
-  // Pass along the release to the session
-  if (_proxy_ssn) {
-_proxy_ssn->release(this);
-  }
-}
-
-void
 ProxyTransaction::attach_server_session(Http1ServerSession *ssession, bool 
transaction_done)
 {
   _proxy_ssn->attach_server_session(ssession, transaction_done);
@@ -197,3 +183,10 @@ ProxyTransaction::get_transaction_priority_dependence() 
const
 {
   return 0;
 }
+
+void
+ProxyTransaction::transaction_done()
+{
+  SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
+  this->decrement_client_transactions_stat();
+}
diff --git a/proxy/ProxyTransaction.h b/proxy/ProxyTransaction.h
index 83a2111..5ae71c8 100644
--- a/proxy/ProxyTransaction.h
+++ b/proxy/ProxyTransaction.h
@@ -40,8 +40,8 @@ public:
   virtual void new_transaction(bool from_early_data = false);
   virtual void attach_server_session(Http1ServerSession *ssession, bool 
transaction_done = true);
   Action *adjust_thread(Continuation *cont, int event, void *data);
-  virtual void release(IOBufferReader *r);
-  virtual void transaction_done() = 0;
+  virtual void release(IOBufferReader *r) = 0;
+  virtual void transaction_done();
   virtual void destroy();
 
   /// Virtual Accessors
diff --git a/proxy/http/Http1ClientSession.cc b/proxy/http/Http1ClientSession.cc
index 9177c0e..7d68b24 100644
--- a/proxy/http/Http1ClientSession.cc
+++ b/proxy/http/Http1ClientSession.cc
@@ -395,8 +395,19 @@ Http1ClientSession::release(ProxyTransaction *trans)
 {
   ink_assert(read_state == HCS_ACTIVE_READER || read_state == HCS_INIT);
 
-  // Timeout events should be delivered to the session
-  this->do_io_write(this, 0, nullptr);
+  // When release is called from start() to read the first transaction, 
get_sm()
+  // will return null.
+  HttpSM *sm = trans->get_sm();
+  if (sm) {
+MgmtInt ka_in = 
trans->get_sm()->t_state.txn_conf->keep_alive_no_activity_timeout_in;
+set_inactivity_timeout(HRTIME_SECONDS(ka_in));
+
+this->clear_session_active();
+this->ssn_last_txn_time = Thread::get_hrtime();
+
+// Timeout events should be delivered to the session
+this->do_io_write(this, 0, nullptr);
+  }
 
   // Check to see there is remaining data in the
   //  buffer.  If there is, spin up a new state
diff --git a/proxy/http/Http1Transaction.cc b/proxy/http/Http1Transaction.cc
index d2f8b2c..29ebec0 100644
--- a/proxy/http/Http1Transaction.cc
+++ b/proxy/http/Http1Transaction.cc
@@ -28,22 +28,6 @@
 void
 Http1Transaction::release(IOBufferReader *r)
 {
-  // Must set this inactivity count here rather than in the session because 
the state machine
-  // is not available then
-  MgmtInt ka_in = _sm->t_state.txn_conf->keep_alive_no_activity_timeout_in;
-  set_inactivity_timeout(HRTIME_SECONDS(ka_in));
-
-  _proxy_ssn->clear_session_active();
-  _proxy_ssn->ssn_last_txn_time = Thread::get_hrtime();
-
-  // Make sure that the state machine is returning
-  //  correct buffer reader
-  ink_assert(r == _reader);
-  if (r != _reader) {
-this->do_io_close();
-  } else {
-super_type::release(r);
-  }
 }
 
 void
@@ -55,6 +39,8 @@ Http1Transaction::destroy() // todo make ~Http1Transaction()
 void
 Http1Transaction::transaction_done()
 {
+  

[trafficserver] branch 9.0.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

2020-10-15 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 70fe3b3  Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
70fe3b3 is described below

commit 70fe3b34a9b156d996869b60901ae0e783f546ec
Author: Masaori Koshiba 
AuthorDate: Thu Oct 15 10:26:02 2020 +0900

Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

(cherry picked from commit 25229339f03ade2af006f03595c343e08cffdfab)
---
 proxy/http2/Http2ConnectionState.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 23beaff..415d597 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -1426,9 +1426,6 @@ Http2ConnectionState::release_stream()
 // Can't do this because we just destroyed right here ^,
 // or we can use a local variable to do it.
 // ua_session = nullptr;
-  } else if (shutdown_state == HTTP2_SHUTDOWN_IN_PROGRESS && fini_event == 
nullptr) {
-ua_session->clear_session_active();
-fini_event = this_ethread()->schedule_imm_local((Continuation *)this, 
HTTP2_SESSION_EVENT_FINI);
   } else if (ua_session->is_active()) {
 // If the number of clients is 0, HTTP2_SESSION_EVENT_FINI is not 
received or sent, and ua_session is active,
 // then mark the connection as inactive



[trafficserver] branch 9.0.x updated: Respecting default rolling_enabled in plugins. (#7275)

2020-10-15 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 9f09616  Respecting default rolling_enabled in plugins. (#7275)
9f09616 is described below

commit 9f096167039b7e4b6b672d0cf59da44a6a697a06
Author: Brian Neradt 
AuthorDate: Tue Oct 13 17:48:23 2020 -0500

Respecting default rolling_enabled in plugins. (#7275)

Some plugins indiscriminately enable log rolling without consideration
of the system value. This looks like it is just a mistake that went
unnoticed because we've always had this enabled. This patch changes a
couple plugins to respect the proxy.config.log.rolling_enabled value by
not overwriting it with TSTextLogObjectRollingEnabledSet unless
explicitly configured to do so.

(cherry picked from commit bb847ee03c274b7aed2993423c4fe3957cb11c2a)
---
 plugins/regex_revalidate/regex_revalidate.c |  1 -
 plugins/tcpinfo/tcpinfo.cc  | 23 +++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/plugins/regex_revalidate/regex_revalidate.c 
b/plugins/regex_revalidate/regex_revalidate.c
index d7ff706..4d45f99 100644
--- a/plugins/regex_revalidate/regex_revalidate.c
+++ b/plugins/regex_revalidate/regex_revalidate.c
@@ -504,7 +504,6 @@ TSPluginInit(int argc, const char *argv[])
   break;
 case 'l':
   if (TS_SUCCESS == TSTextLogObjectCreate(optarg, 
TS_LOG_MODE_ADD_TIMESTAMP, >log)) {
-TSTextLogObjectRollingEnabledSet(pstate->log, 1);
 TSTextLogObjectRollingIntervalSecSet(pstate->log, LOG_ROLL_INTERVAL);
 TSTextLogObjectRollingOffsetHrSet(pstate->log, LOG_ROLL_OFFSET);
   }
diff --git a/plugins/tcpinfo/tcpinfo.cc b/plugins/tcpinfo/tcpinfo.cc
index 0c9d07f..ca73cb0 100644
--- a/plugins/tcpinfo/tcpinfo.cc
+++ b/plugins/tcpinfo/tcpinfo.cc
@@ -337,7 +337,7 @@ TSPluginInit(int argc, const char *argv[])
   const char *filename = "tcpinfo";
   TSCont cont;
   unsigned int hooks= 0;
-  unsigned int rolling_enabled  = 1;
+  int rolling_enabled   = -1;
   unsigned int rolling_interval_sec = 86400;
   unsigned int rolling_offset_hr= 0;
   unsigned int rolling_size = 1024;
@@ -379,7 +379,8 @@ TSPluginInit(int argc, const char *argv[])
 case 'e':
   i = strtoul(optarg, , 10);
   if (*endptr != '\0' || i > 3) {
-TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using 
default of %d", optarg, rolling_enabled);
+TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using the 
system's proxy.config.log.rolling_enabled value",
+optarg);
   } else {
 rolling_enabled = i;
   }
@@ -424,20 +425,26 @@ init:
   TSDebug("tcpinfo", "sample: %d", config->sample);
   TSDebug("tcpinfo", "log filename: %s", filename);
   TSDebug("tcpinfo", "log_level: %u", config->log_level);
+  TSDebug("tcpinfo", "rolling_enabled: %d", rolling_enabled);
   TSDebug("tcpinfo", "hook mask: 0x%x", hooks);
 
   if (TSTextLogObjectCreate(filename, TS_LOG_MODE_ADD_TIMESTAMP, >log) 
!= TS_SUCCESS) {
 TSError("[tcpinfo] failed to create log file '%s'", filename);
 return;
   }
-  if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
-TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
-return;
+  if (rolling_enabled == -1) {
+// The user either did not provide a value or the value they provided was
+// invalid.
+TSDebug("tcpinfo", "Using system default value of 
proxy.config.log.rolling_enabled ");
   } else {
-TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
-TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
-TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
+if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
+  TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
+  return;
+}
   }
+  TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
+  TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
+  TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
 
   TSTextLogObjectHeaderSet(config->log, tcpi_headers[config->log_level - 1]);
 



[trafficserver] branch 9.0.x updated: Fix proxy.process.http.current_client_transactions (#7258)

2020-10-15 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 e454433  Fix proxy.process.http.current_client_transactions (#7258)
e454433 is described below

commit e454433b932d7fa949a75665d61dfbfa55d37909
Author: Susan Hinrichs 
AuthorDate: Thu Oct 15 12:19:13 2020 -0500

Fix proxy.process.http.current_client_transactions (#7258)

(cherry picked from commit 233f9913ab77fc89ad3345dd41780e58809a8958)
---
 proxy/ProxyTransaction.cc| 23 ---
 proxy/ProxyTransaction.h |  4 ++--
 proxy/http/Http1ClientSession.cc | 15 +--
 proxy/http/Http1Transaction.cc   | 18 ++
 proxy/http/HttpSM.cc |  1 +
 proxy/http2/Http2Stream.cc   |  5 +++--
 proxy/http3/Http3Transaction.cc  |  2 +-
 7 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/proxy/ProxyTransaction.cc b/proxy/ProxyTransaction.cc
index 9be892f..214c710 100644
--- a/proxy/ProxyTransaction.cc
+++ b/proxy/ProxyTransaction.cc
@@ -32,7 +32,7 @@ ProxyTransaction::ProxyTransaction() : VConnection(nullptr) {}
 void
 ProxyTransaction::new_transaction(bool from_early_data)
 {
-  ink_assert(_sm == nullptr);
+  ink_release_assert(_sm == nullptr);
 
   // Defensive programming, make sure nothing persists across
   // connection re-use
@@ -57,20 +57,6 @@ ProxyTransaction::new_transaction(bool from_early_data)
 }
 
 void
-ProxyTransaction::release(IOBufferReader *r)
-{
-  HttpTxnDebug("[%" PRId64 "] session released by sm [%" PRId64 "]", 
_proxy_ssn ? _proxy_ssn->connection_id() : 0,
-   _sm ? _sm->sm_id : 0);
-
-  this->decrement_client_transactions_stat();
-
-  // Pass along the release to the session
-  if (_proxy_ssn) {
-_proxy_ssn->release(this);
-  }
-}
-
-void
 ProxyTransaction::attach_server_session(Http1ServerSession *ssession, bool 
transaction_done)
 {
   _proxy_ssn->attach_server_session(ssession, transaction_done);
@@ -197,3 +183,10 @@ ProxyTransaction::get_transaction_priority_dependence() 
const
 {
   return 0;
 }
+
+void
+ProxyTransaction::transaction_done()
+{
+  SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
+  this->decrement_client_transactions_stat();
+}
diff --git a/proxy/ProxyTransaction.h b/proxy/ProxyTransaction.h
index 83a2111..5ae71c8 100644
--- a/proxy/ProxyTransaction.h
+++ b/proxy/ProxyTransaction.h
@@ -40,8 +40,8 @@ public:
   virtual void new_transaction(bool from_early_data = false);
   virtual void attach_server_session(Http1ServerSession *ssession, bool 
transaction_done = true);
   Action *adjust_thread(Continuation *cont, int event, void *data);
-  virtual void release(IOBufferReader *r);
-  virtual void transaction_done() = 0;
+  virtual void release(IOBufferReader *r) = 0;
+  virtual void transaction_done();
   virtual void destroy();
 
   /// Virtual Accessors
diff --git a/proxy/http/Http1ClientSession.cc b/proxy/http/Http1ClientSession.cc
index 9177c0e..7d68b24 100644
--- a/proxy/http/Http1ClientSession.cc
+++ b/proxy/http/Http1ClientSession.cc
@@ -395,8 +395,19 @@ Http1ClientSession::release(ProxyTransaction *trans)
 {
   ink_assert(read_state == HCS_ACTIVE_READER || read_state == HCS_INIT);
 
-  // Timeout events should be delivered to the session
-  this->do_io_write(this, 0, nullptr);
+  // When release is called from start() to read the first transaction, 
get_sm()
+  // will return null.
+  HttpSM *sm = trans->get_sm();
+  if (sm) {
+MgmtInt ka_in = 
trans->get_sm()->t_state.txn_conf->keep_alive_no_activity_timeout_in;
+set_inactivity_timeout(HRTIME_SECONDS(ka_in));
+
+this->clear_session_active();
+this->ssn_last_txn_time = Thread::get_hrtime();
+
+// Timeout events should be delivered to the session
+this->do_io_write(this, 0, nullptr);
+  }
 
   // Check to see there is remaining data in the
   //  buffer.  If there is, spin up a new state
diff --git a/proxy/http/Http1Transaction.cc b/proxy/http/Http1Transaction.cc
index d2f8b2c..29ebec0 100644
--- a/proxy/http/Http1Transaction.cc
+++ b/proxy/http/Http1Transaction.cc
@@ -28,22 +28,6 @@
 void
 Http1Transaction::release(IOBufferReader *r)
 {
-  // Must set this inactivity count here rather than in the session because 
the state machine
-  // is not available then
-  MgmtInt ka_in = _sm->t_state.txn_conf->keep_alive_no_activity_timeout_in;
-  set_inactivity_timeout(HRTIME_SECONDS(ka_in));
-
-  _proxy_ssn->clear_session_active();
-  _proxy_ssn->ssn_last_txn_time = Thread::get_hrtime();
-
-  // Make sure that the state machine is returning
-  //  correct buffer reader
-  ink_assert(r == _reader);
-  if (r != _reader) {
-this->do_io_close();
-  } else {
-super_type::release(r);
-  }
 }
 
 void
@@ -55,6 +39,8 @@ Http1Transaction::destroy() // todo make ~Http1Transaction()
 void
 Http1Transaction::transaction_done()
 {
+  

[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-10-15 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 12953fc  Updated ChangeLog
12953fc is described below

commit 12953fc5eacc2957abc7575c72a238fa9e29bdee
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:43:03 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.1 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG-8.1.1 b/CHANGELOG-8.1.1
index 16617d6..0d20151 100644
--- a/CHANGELOG-8.1.1
+++ b/CHANGELOG-8.1.1
@@ -8,4 +8,5 @@ Changes with Apache Traffic Server 8.1.1
   #7217 - Remove usage of stored ACL record, fix ipallow reload
   #7234 -  Do not cache Transfer-Encoding header
   #7244 - Replace existing autest certs with ones from master
+  #7267 - Fix truncated reponse on HTTP/2 graceful shutdown
   #7268 - add support for centos8 to autest



[trafficserver] branch 9.0.x updated: gracefully handle TSReleaseAsserts in statichit and generator plugins (#7269)

2020-10-15 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 51eb50d  gracefully handle TSReleaseAsserts in statichit and generator 
plugins (#7269)
51eb50d is described below

commit 51eb50da0b854b1763609472a169c03d94235456
Author: Randall Meyer 
AuthorDate: Tue Oct 13 14:59:50 2020 -0700

gracefully handle TSReleaseAsserts in statichit and generator plugins 
(#7269)

(cherry picked from commit 4ffd34a8c528e2b3863af6f15ad78051007eddc6)
---
 plugins/experimental/statichit/statichit.cc | 30 
 plugins/generator/generator.cc  | 54 ++---
 2 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/plugins/experimental/statichit/statichit.cc 
b/plugins/experimental/statichit/statichit.cc
index 1520350..b362ba4 100644
--- a/plugins/experimental/statichit/statichit.cc
+++ b/plugins/experimental/statichit/statichit.cc
@@ -234,16 +234,25 @@ HeaderFieldStringSet(const StaticHitHttpHeader , 
const char *field_name, in
   TSHandleMLocRelease(http.buffer, http.header, field);
 }
 
-static void
+static TSReturnCode
 WriteResponseHeader(StaticHitRequest *trq, TSCont contp, TSHttpStatus status)
 {
   StaticHitHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, status) 
== TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, status) != 
TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(status), -1);
 
@@ -275,6 +284,8 @@ WriteResponseHeader(StaticHitRequest *trq, TSCont contp, 
TSHttpStatus status)
   TSVIOReenable(trq->writeio.vio);
 
   TSStatIntIncrement(StatCountBytes, hdrlen);
+
+  return TS_SUCCESS;
 }
 
 static bool
@@ -384,7 +395,11 @@ StaticHitInterceptHook(TSCont contp, TSEvent event, void 
*edata)
 cdata.trq->writeio.write(TSVIOVConnGet(arg.vio), contp);
 TSVIONBytesSet(cdata.trq->writeio.vio, 0);
 
-WriteResponseHeader(cdata.trq, contp, status);
+if (WriteResponseHeader(cdata.trq, contp, status) != TS_SUCCESS) {
+  VERROR("failure writing response");
+  return TS_EVENT_ERROR;
+}
+
 return TS_EVENT_NONE;
 
   case TS_PARSE_CONT:
@@ -496,7 +511,10 @@ StaticHitTxnHook(TSCont contp, TSEvent event, void *edata)
 TSMLoc hdr_loc;
 const char *method;
 
-TSReleaseAssert(TSHttpTxnCacheLookupStatusGet(arg.txn, ) == 
TS_SUCCESS);
+if (TSHttpTxnCacheLookupStatusGet(arg.txn, ) != TS_SUCCESS) {
+  VERROR("failed to get client request handle");
+  goto done;
+}
 
 if (TSHttpTxnClientReqGet(arg.txn, , _loc) != TS_SUCCESS) {
   VERROR("Couldn't retrieve client request header");
diff --git a/plugins/generator/generator.cc b/plugins/generator/generator.cc
index 751a253..e33681c 100644
--- a/plugins/generator/generator.cc
+++ b/plugins/generator/generator.cc
@@ -284,17 +284,26 @@ GeneratorGetRequestHeader(GeneratorHttpHeader , 
const char *field_name,
   return default_value;
 }
 
-static void
+static TSReturnCode
 GeneratorWriteResponseHeader(GeneratorRequest *grq, TSCont contp)
 {
   GeneratorHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, TS_HTTP_STATUS_OK) 
!= TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, 
TS_HTTP_STATUS_OK) == TS_SUCCESS);
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK), -1);
 
   // Set the Content-Length header.

[trafficserver] branch 9.0.x updated: 7096: Synchronize Server Session Management and Network I/O (#7278)

2020-10-15 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 7543be2  7096: Synchronize Server Session Management and Network I/O 
(#7278)
7543be2 is described below

commit 7543be25ba14e36e617f20fc974c29804033a73f
Author: Sudheer Vinukonda 
AuthorDate: Thu Oct 15 17:03:36 2020 -0700

7096: Synchronize Server Session Management and Network I/O (#7278)

1. Session Acquisition with global session pools - Ensure that
the continuation and mutex is preserved through the entire session
context migration mechanism until the SM is attached to the new VC
2. Session Release - Delay clearing of read and write io buffers
to protect against race between do_io_close and net_read_io
3. Fix dangling ssl->vc reference for TLS Session Resumption

(cherry picked from commit a2d15151a5c1a69a3826e086ac497a94a4bfa7ea)
---
 iocore/net/I_NetVConnection.h | 11 +++
 iocore/net/P_UnixNetVConnection.h |  3 ++
 iocore/net/SSLNetVConnection.cc   |  2 --
 iocore/net/SSLUtils.cc|  2 ++
 iocore/net/TLSSessionResumptionSupport.cc |  6 
 iocore/net/TLSSessionResumptionSupport.h  |  1 +
 iocore/net/UnixNetVConnection.cc  | 54 ---
 proxy/http/Http1ServerSession.cc  |  7 ++--
 proxy/http/HttpSM.cc  | 11 +--
 proxy/http/HttpSessionManager.cc  | 27 
 10 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index ca7c3ab..820a790 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -387,6 +387,12 @@ public:
   */
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override = 
0;
 
+  virtual Continuation *
+  read_vio_cont()
+  {
+return nullptr;
+  }
+
   /**
 Initiates write. Thread-safe, may be called when not handling
 an event from the NetVConnection, or the NetVConnection creation
@@ -423,6 +429,11 @@ public:
   */
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override = 0;
 
+  virtual Continuation *
+  write_vio_cont()
+  {
+return nullptr;
+  }
   /**
 Closes the vconnection. A state machine MUST call do_io_close()
 when it has finished with a VConnection. do_io_close() indicates
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index cd94178..1d61200 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -111,6 +111,9 @@ public:
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override;
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override;
 
+  Continuation *read_vio_cont() override;
+  Continuation *write_vio_cont() override;
+
   bool get_data(int id, void *data) override;
 
   Action *send_OOB(Continuation *cont, char *buf, int len) override;
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 3593735..e1b7d99 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -212,7 +212,6 @@ make_ssl_connection(SSL_CTX *ctx, SSLNetVConnection *netvc)
 }
 
 SSLNetVCAttach(ssl, netvc);
-TLSSessionResumptionSupport::bind(ssl, netvc);
   }
 
   return ssl;
@@ -1820,7 +1819,6 @@ SSLNetVConnection::populate(Connection , Continuation 
*c, void *arg)
 
   sslHandshakeStatus = SSL_HANDSHAKE_DONE;
   SSLNetVCAttach(this->ssl, this);
-  TLSSessionResumptionSupport::bind(this->ssl, this);
   return EVENT_DONE;
 }
 
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 442aec3..79be614 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -1700,12 +1700,14 @@ void
 SSLNetVCAttach(SSL *ssl, SSLNetVConnection *vc)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, vc);
+  TLSSessionResumptionSupport::bind(ssl, vc);
 }
 
 void
 SSLNetVCDetach(SSL *ssl)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, nullptr);
+  TLSSessionResumptionSupport::unbind(ssl);
 }
 
 SSLNetVConnection *
diff --git a/iocore/net/TLSSessionResumptionSupport.cc 
b/iocore/net/TLSSessionResumptionSupport.cc
index 8935c99..ab6f38e 100644
--- a/iocore/net/TLSSessionResumptionSupport.cc
+++ b/iocore/net/TLSSessionResumptionSupport.cc
@@ -75,6 +75,12 @@ TLSSessionResumptionSupport::bind(SSL *ssl, 
TLSSessionResumptionSupport *srs)
   SSL_set_ex_data(ssl, _ex_data_index, srs);
 }
 
+void
+TLSSessionResumptionSupport::unbind(SSL *ssl)
+{
+  SSL_set_ex_data(ssl, _ex_data_index, nullptr);
+}
+
 int
 TLSSessionResumptionSupport::processSessionTicket(SSL *ssl, unsigned char 
*keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx,
   HMAC_CTX *hctx, int enc)
diff --git 

[trafficserver] branch 9.0.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

2020-10-15 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 70fe3b3  Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
70fe3b3 is described below

commit 70fe3b34a9b156d996869b60901ae0e783f546ec
Author: Masaori Koshiba 
AuthorDate: Thu Oct 15 10:26:02 2020 +0900

Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

(cherry picked from commit 25229339f03ade2af006f03595c343e08cffdfab)
---
 proxy/http2/Http2ConnectionState.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 23beaff..415d597 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -1426,9 +1426,6 @@ Http2ConnectionState::release_stream()
 // Can't do this because we just destroyed right here ^,
 // or we can use a local variable to do it.
 // ua_session = nullptr;
-  } else if (shutdown_state == HTTP2_SHUTDOWN_IN_PROGRESS && fini_event == 
nullptr) {
-ua_session->clear_session_active();
-fini_event = this_ethread()->schedule_imm_local((Continuation *)this, 
HTTP2_SESSION_EVENT_FINI);
   } else if (ua_session->is_active()) {
 // If the number of clients is 0, HTTP2_SESSION_EVENT_FINI is not 
received or sent, and ua_session is active,
 // then mark the connection as inactive



[trafficserver] branch 9.0.x updated: Respecting default rolling_enabled in plugins. (#7275)

2020-10-15 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 9f09616  Respecting default rolling_enabled in plugins. (#7275)
9f09616 is described below

commit 9f096167039b7e4b6b672d0cf59da44a6a697a06
Author: Brian Neradt 
AuthorDate: Tue Oct 13 17:48:23 2020 -0500

Respecting default rolling_enabled in plugins. (#7275)

Some plugins indiscriminately enable log rolling without consideration
of the system value. This looks like it is just a mistake that went
unnoticed because we've always had this enabled. This patch changes a
couple plugins to respect the proxy.config.log.rolling_enabled value by
not overwriting it with TSTextLogObjectRollingEnabledSet unless
explicitly configured to do so.

(cherry picked from commit bb847ee03c274b7aed2993423c4fe3957cb11c2a)
---
 plugins/regex_revalidate/regex_revalidate.c |  1 -
 plugins/tcpinfo/tcpinfo.cc  | 23 +++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/plugins/regex_revalidate/regex_revalidate.c 
b/plugins/regex_revalidate/regex_revalidate.c
index d7ff706..4d45f99 100644
--- a/plugins/regex_revalidate/regex_revalidate.c
+++ b/plugins/regex_revalidate/regex_revalidate.c
@@ -504,7 +504,6 @@ TSPluginInit(int argc, const char *argv[])
   break;
 case 'l':
   if (TS_SUCCESS == TSTextLogObjectCreate(optarg, 
TS_LOG_MODE_ADD_TIMESTAMP, >log)) {
-TSTextLogObjectRollingEnabledSet(pstate->log, 1);
 TSTextLogObjectRollingIntervalSecSet(pstate->log, LOG_ROLL_INTERVAL);
 TSTextLogObjectRollingOffsetHrSet(pstate->log, LOG_ROLL_OFFSET);
   }
diff --git a/plugins/tcpinfo/tcpinfo.cc b/plugins/tcpinfo/tcpinfo.cc
index 0c9d07f..ca73cb0 100644
--- a/plugins/tcpinfo/tcpinfo.cc
+++ b/plugins/tcpinfo/tcpinfo.cc
@@ -337,7 +337,7 @@ TSPluginInit(int argc, const char *argv[])
   const char *filename = "tcpinfo";
   TSCont cont;
   unsigned int hooks= 0;
-  unsigned int rolling_enabled  = 1;
+  int rolling_enabled   = -1;
   unsigned int rolling_interval_sec = 86400;
   unsigned int rolling_offset_hr= 0;
   unsigned int rolling_size = 1024;
@@ -379,7 +379,8 @@ TSPluginInit(int argc, const char *argv[])
 case 'e':
   i = strtoul(optarg, , 10);
   if (*endptr != '\0' || i > 3) {
-TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using 
default of %d", optarg, rolling_enabled);
+TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using the 
system's proxy.config.log.rolling_enabled value",
+optarg);
   } else {
 rolling_enabled = i;
   }
@@ -424,20 +425,26 @@ init:
   TSDebug("tcpinfo", "sample: %d", config->sample);
   TSDebug("tcpinfo", "log filename: %s", filename);
   TSDebug("tcpinfo", "log_level: %u", config->log_level);
+  TSDebug("tcpinfo", "rolling_enabled: %d", rolling_enabled);
   TSDebug("tcpinfo", "hook mask: 0x%x", hooks);
 
   if (TSTextLogObjectCreate(filename, TS_LOG_MODE_ADD_TIMESTAMP, >log) 
!= TS_SUCCESS) {
 TSError("[tcpinfo] failed to create log file '%s'", filename);
 return;
   }
-  if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
-TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
-return;
+  if (rolling_enabled == -1) {
+// The user either did not provide a value or the value they provided was
+// invalid.
+TSDebug("tcpinfo", "Using system default value of 
proxy.config.log.rolling_enabled ");
   } else {
-TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
-TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
-TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
+if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
+  TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
+  return;
+}
   }
+  TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
+  TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
+  TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
 
   TSTextLogObjectHeaderSet(config->log, tcpi_headers[config->log_level - 1]);
 



[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-10-15 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 12953fc  Updated ChangeLog
12953fc is described below

commit 12953fc5eacc2957abc7575c72a238fa9e29bdee
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:43:03 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.1 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG-8.1.1 b/CHANGELOG-8.1.1
index 16617d6..0d20151 100644
--- a/CHANGELOG-8.1.1
+++ b/CHANGELOG-8.1.1
@@ -8,4 +8,5 @@ Changes with Apache Traffic Server 8.1.1
   #7217 - Remove usage of stored ACL record, fix ipallow reload
   #7234 -  Do not cache Transfer-Encoding header
   #7244 - Replace existing autest certs with ones from master
+  #7267 - Fix truncated reponse on HTTP/2 graceful shutdown
   #7268 - add support for centos8 to autest



[trafficserver] branch 9.0.x updated: 7096: Synchronize Server Session Management and Network I/O (#7278)

2020-10-15 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 7543be2  7096: Synchronize Server Session Management and Network I/O 
(#7278)
7543be2 is described below

commit 7543be25ba14e36e617f20fc974c29804033a73f
Author: Sudheer Vinukonda 
AuthorDate: Thu Oct 15 17:03:36 2020 -0700

7096: Synchronize Server Session Management and Network I/O (#7278)

1. Session Acquisition with global session pools - Ensure that
the continuation and mutex is preserved through the entire session
context migration mechanism until the SM is attached to the new VC
2. Session Release - Delay clearing of read and write io buffers
to protect against race between do_io_close and net_read_io
3. Fix dangling ssl->vc reference for TLS Session Resumption

(cherry picked from commit a2d15151a5c1a69a3826e086ac497a94a4bfa7ea)
---
 iocore/net/I_NetVConnection.h | 11 +++
 iocore/net/P_UnixNetVConnection.h |  3 ++
 iocore/net/SSLNetVConnection.cc   |  2 --
 iocore/net/SSLUtils.cc|  2 ++
 iocore/net/TLSSessionResumptionSupport.cc |  6 
 iocore/net/TLSSessionResumptionSupport.h  |  1 +
 iocore/net/UnixNetVConnection.cc  | 54 ---
 proxy/http/Http1ServerSession.cc  |  7 ++--
 proxy/http/HttpSM.cc  | 11 +--
 proxy/http/HttpSessionManager.cc  | 27 
 10 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index ca7c3ab..820a790 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -387,6 +387,12 @@ public:
   */
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override = 
0;
 
+  virtual Continuation *
+  read_vio_cont()
+  {
+return nullptr;
+  }
+
   /**
 Initiates write. Thread-safe, may be called when not handling
 an event from the NetVConnection, or the NetVConnection creation
@@ -423,6 +429,11 @@ public:
   */
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override = 0;
 
+  virtual Continuation *
+  write_vio_cont()
+  {
+return nullptr;
+  }
   /**
 Closes the vconnection. A state machine MUST call do_io_close()
 when it has finished with a VConnection. do_io_close() indicates
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index cd94178..1d61200 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -111,6 +111,9 @@ public:
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override;
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override;
 
+  Continuation *read_vio_cont() override;
+  Continuation *write_vio_cont() override;
+
   bool get_data(int id, void *data) override;
 
   Action *send_OOB(Continuation *cont, char *buf, int len) override;
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 3593735..e1b7d99 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -212,7 +212,6 @@ make_ssl_connection(SSL_CTX *ctx, SSLNetVConnection *netvc)
 }
 
 SSLNetVCAttach(ssl, netvc);
-TLSSessionResumptionSupport::bind(ssl, netvc);
   }
 
   return ssl;
@@ -1820,7 +1819,6 @@ SSLNetVConnection::populate(Connection , Continuation 
*c, void *arg)
 
   sslHandshakeStatus = SSL_HANDSHAKE_DONE;
   SSLNetVCAttach(this->ssl, this);
-  TLSSessionResumptionSupport::bind(this->ssl, this);
   return EVENT_DONE;
 }
 
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 442aec3..79be614 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -1700,12 +1700,14 @@ void
 SSLNetVCAttach(SSL *ssl, SSLNetVConnection *vc)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, vc);
+  TLSSessionResumptionSupport::bind(ssl, vc);
 }
 
 void
 SSLNetVCDetach(SSL *ssl)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, nullptr);
+  TLSSessionResumptionSupport::unbind(ssl);
 }
 
 SSLNetVConnection *
diff --git a/iocore/net/TLSSessionResumptionSupport.cc 
b/iocore/net/TLSSessionResumptionSupport.cc
index 8935c99..ab6f38e 100644
--- a/iocore/net/TLSSessionResumptionSupport.cc
+++ b/iocore/net/TLSSessionResumptionSupport.cc
@@ -75,6 +75,12 @@ TLSSessionResumptionSupport::bind(SSL *ssl, 
TLSSessionResumptionSupport *srs)
   SSL_set_ex_data(ssl, _ex_data_index, srs);
 }
 
+void
+TLSSessionResumptionSupport::unbind(SSL *ssl)
+{
+  SSL_set_ex_data(ssl, _ex_data_index, nullptr);
+}
+
 int
 TLSSessionResumptionSupport::processSessionTicket(SSL *ssl, unsigned char 
*keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx,
   HMAC_CTX *hctx, int enc)
diff --git 

[trafficserver] branch 9.0.x updated: gracefully handle TSReleaseAsserts in statichit and generator plugins (#7269)

2020-10-15 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 51eb50d  gracefully handle TSReleaseAsserts in statichit and generator 
plugins (#7269)
51eb50d is described below

commit 51eb50da0b854b1763609472a169c03d94235456
Author: Randall Meyer 
AuthorDate: Tue Oct 13 14:59:50 2020 -0700

gracefully handle TSReleaseAsserts in statichit and generator plugins 
(#7269)

(cherry picked from commit 4ffd34a8c528e2b3863af6f15ad78051007eddc6)
---
 plugins/experimental/statichit/statichit.cc | 30 
 plugins/generator/generator.cc  | 54 ++---
 2 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/plugins/experimental/statichit/statichit.cc 
b/plugins/experimental/statichit/statichit.cc
index 1520350..b362ba4 100644
--- a/plugins/experimental/statichit/statichit.cc
+++ b/plugins/experimental/statichit/statichit.cc
@@ -234,16 +234,25 @@ HeaderFieldStringSet(const StaticHitHttpHeader , 
const char *field_name, in
   TSHandleMLocRelease(http.buffer, http.header, field);
 }
 
-static void
+static TSReturnCode
 WriteResponseHeader(StaticHitRequest *trq, TSCont contp, TSHttpStatus status)
 {
   StaticHitHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, status) 
== TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, status) != 
TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(status), -1);
 
@@ -275,6 +284,8 @@ WriteResponseHeader(StaticHitRequest *trq, TSCont contp, 
TSHttpStatus status)
   TSVIOReenable(trq->writeio.vio);
 
   TSStatIntIncrement(StatCountBytes, hdrlen);
+
+  return TS_SUCCESS;
 }
 
 static bool
@@ -384,7 +395,11 @@ StaticHitInterceptHook(TSCont contp, TSEvent event, void 
*edata)
 cdata.trq->writeio.write(TSVIOVConnGet(arg.vio), contp);
 TSVIONBytesSet(cdata.trq->writeio.vio, 0);
 
-WriteResponseHeader(cdata.trq, contp, status);
+if (WriteResponseHeader(cdata.trq, contp, status) != TS_SUCCESS) {
+  VERROR("failure writing response");
+  return TS_EVENT_ERROR;
+}
+
 return TS_EVENT_NONE;
 
   case TS_PARSE_CONT:
@@ -496,7 +511,10 @@ StaticHitTxnHook(TSCont contp, TSEvent event, void *edata)
 TSMLoc hdr_loc;
 const char *method;
 
-TSReleaseAssert(TSHttpTxnCacheLookupStatusGet(arg.txn, ) == 
TS_SUCCESS);
+if (TSHttpTxnCacheLookupStatusGet(arg.txn, ) != TS_SUCCESS) {
+  VERROR("failed to get client request handle");
+  goto done;
+}
 
 if (TSHttpTxnClientReqGet(arg.txn, , _loc) != TS_SUCCESS) {
   VERROR("Couldn't retrieve client request header");
diff --git a/plugins/generator/generator.cc b/plugins/generator/generator.cc
index 751a253..e33681c 100644
--- a/plugins/generator/generator.cc
+++ b/plugins/generator/generator.cc
@@ -284,17 +284,26 @@ GeneratorGetRequestHeader(GeneratorHttpHeader , 
const char *field_name,
   return default_value;
 }
 
-static void
+static TSReturnCode
 GeneratorWriteResponseHeader(GeneratorRequest *grq, TSCont contp)
 {
   GeneratorHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, TS_HTTP_STATUS_OK) 
!= TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, 
TS_HTTP_STATUS_OK) == TS_SUCCESS);
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK), -1);
 
   // Set the Content-Length header.

[trafficserver] branch 9.0.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

2020-10-15 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 70fe3b3  Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
70fe3b3 is described below

commit 70fe3b34a9b156d996869b60901ae0e783f546ec
Author: Masaori Koshiba 
AuthorDate: Thu Oct 15 10:26:02 2020 +0900

Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

(cherry picked from commit 25229339f03ade2af006f03595c343e08cffdfab)
---
 proxy/http2/Http2ConnectionState.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 23beaff..415d597 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -1426,9 +1426,6 @@ Http2ConnectionState::release_stream()
 // Can't do this because we just destroyed right here ^,
 // or we can use a local variable to do it.
 // ua_session = nullptr;
-  } else if (shutdown_state == HTTP2_SHUTDOWN_IN_PROGRESS && fini_event == 
nullptr) {
-ua_session->clear_session_active();
-fini_event = this_ethread()->schedule_imm_local((Continuation *)this, 
HTTP2_SESSION_EVENT_FINI);
   } else if (ua_session->is_active()) {
 // If the number of clients is 0, HTTP2_SESSION_EVENT_FINI is not 
received or sent, and ua_session is active,
 // then mark the connection as inactive



[trafficserver] branch 9.0.x updated: Fix proxy.process.http.current_client_transactions (#7258)

2020-10-15 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 e454433  Fix proxy.process.http.current_client_transactions (#7258)
e454433 is described below

commit e454433b932d7fa949a75665d61dfbfa55d37909
Author: Susan Hinrichs 
AuthorDate: Thu Oct 15 12:19:13 2020 -0500

Fix proxy.process.http.current_client_transactions (#7258)

(cherry picked from commit 233f9913ab77fc89ad3345dd41780e58809a8958)
---
 proxy/ProxyTransaction.cc| 23 ---
 proxy/ProxyTransaction.h |  4 ++--
 proxy/http/Http1ClientSession.cc | 15 +--
 proxy/http/Http1Transaction.cc   | 18 ++
 proxy/http/HttpSM.cc |  1 +
 proxy/http2/Http2Stream.cc   |  5 +++--
 proxy/http3/Http3Transaction.cc  |  2 +-
 7 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/proxy/ProxyTransaction.cc b/proxy/ProxyTransaction.cc
index 9be892f..214c710 100644
--- a/proxy/ProxyTransaction.cc
+++ b/proxy/ProxyTransaction.cc
@@ -32,7 +32,7 @@ ProxyTransaction::ProxyTransaction() : VConnection(nullptr) {}
 void
 ProxyTransaction::new_transaction(bool from_early_data)
 {
-  ink_assert(_sm == nullptr);
+  ink_release_assert(_sm == nullptr);
 
   // Defensive programming, make sure nothing persists across
   // connection re-use
@@ -57,20 +57,6 @@ ProxyTransaction::new_transaction(bool from_early_data)
 }
 
 void
-ProxyTransaction::release(IOBufferReader *r)
-{
-  HttpTxnDebug("[%" PRId64 "] session released by sm [%" PRId64 "]", 
_proxy_ssn ? _proxy_ssn->connection_id() : 0,
-   _sm ? _sm->sm_id : 0);
-
-  this->decrement_client_transactions_stat();
-
-  // Pass along the release to the session
-  if (_proxy_ssn) {
-_proxy_ssn->release(this);
-  }
-}
-
-void
 ProxyTransaction::attach_server_session(Http1ServerSession *ssession, bool 
transaction_done)
 {
   _proxy_ssn->attach_server_session(ssession, transaction_done);
@@ -197,3 +183,10 @@ ProxyTransaction::get_transaction_priority_dependence() 
const
 {
   return 0;
 }
+
+void
+ProxyTransaction::transaction_done()
+{
+  SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
+  this->decrement_client_transactions_stat();
+}
diff --git a/proxy/ProxyTransaction.h b/proxy/ProxyTransaction.h
index 83a2111..5ae71c8 100644
--- a/proxy/ProxyTransaction.h
+++ b/proxy/ProxyTransaction.h
@@ -40,8 +40,8 @@ public:
   virtual void new_transaction(bool from_early_data = false);
   virtual void attach_server_session(Http1ServerSession *ssession, bool 
transaction_done = true);
   Action *adjust_thread(Continuation *cont, int event, void *data);
-  virtual void release(IOBufferReader *r);
-  virtual void transaction_done() = 0;
+  virtual void release(IOBufferReader *r) = 0;
+  virtual void transaction_done();
   virtual void destroy();
 
   /// Virtual Accessors
diff --git a/proxy/http/Http1ClientSession.cc b/proxy/http/Http1ClientSession.cc
index 9177c0e..7d68b24 100644
--- a/proxy/http/Http1ClientSession.cc
+++ b/proxy/http/Http1ClientSession.cc
@@ -395,8 +395,19 @@ Http1ClientSession::release(ProxyTransaction *trans)
 {
   ink_assert(read_state == HCS_ACTIVE_READER || read_state == HCS_INIT);
 
-  // Timeout events should be delivered to the session
-  this->do_io_write(this, 0, nullptr);
+  // When release is called from start() to read the first transaction, 
get_sm()
+  // will return null.
+  HttpSM *sm = trans->get_sm();
+  if (sm) {
+MgmtInt ka_in = 
trans->get_sm()->t_state.txn_conf->keep_alive_no_activity_timeout_in;
+set_inactivity_timeout(HRTIME_SECONDS(ka_in));
+
+this->clear_session_active();
+this->ssn_last_txn_time = Thread::get_hrtime();
+
+// Timeout events should be delivered to the session
+this->do_io_write(this, 0, nullptr);
+  }
 
   // Check to see there is remaining data in the
   //  buffer.  If there is, spin up a new state
diff --git a/proxy/http/Http1Transaction.cc b/proxy/http/Http1Transaction.cc
index d2f8b2c..29ebec0 100644
--- a/proxy/http/Http1Transaction.cc
+++ b/proxy/http/Http1Transaction.cc
@@ -28,22 +28,6 @@
 void
 Http1Transaction::release(IOBufferReader *r)
 {
-  // Must set this inactivity count here rather than in the session because 
the state machine
-  // is not available then
-  MgmtInt ka_in = _sm->t_state.txn_conf->keep_alive_no_activity_timeout_in;
-  set_inactivity_timeout(HRTIME_SECONDS(ka_in));
-
-  _proxy_ssn->clear_session_active();
-  _proxy_ssn->ssn_last_txn_time = Thread::get_hrtime();
-
-  // Make sure that the state machine is returning
-  //  correct buffer reader
-  ink_assert(r == _reader);
-  if (r != _reader) {
-this->do_io_close();
-  } else {
-super_type::release(r);
-  }
 }
 
 void
@@ -55,6 +39,8 @@ Http1Transaction::destroy() // todo make ~Http1Transaction()
 void
 Http1Transaction::transaction_done()
 {
+  

[trafficserver] branch 9.0.x updated: gracefully handle TSReleaseAsserts in statichit and generator plugins (#7269)

2020-10-15 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 51eb50d  gracefully handle TSReleaseAsserts in statichit and generator 
plugins (#7269)
51eb50d is described below

commit 51eb50da0b854b1763609472a169c03d94235456
Author: Randall Meyer 
AuthorDate: Tue Oct 13 14:59:50 2020 -0700

gracefully handle TSReleaseAsserts in statichit and generator plugins 
(#7269)

(cherry picked from commit 4ffd34a8c528e2b3863af6f15ad78051007eddc6)
---
 plugins/experimental/statichit/statichit.cc | 30 
 plugins/generator/generator.cc  | 54 ++---
 2 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/plugins/experimental/statichit/statichit.cc 
b/plugins/experimental/statichit/statichit.cc
index 1520350..b362ba4 100644
--- a/plugins/experimental/statichit/statichit.cc
+++ b/plugins/experimental/statichit/statichit.cc
@@ -234,16 +234,25 @@ HeaderFieldStringSet(const StaticHitHttpHeader , 
const char *field_name, in
   TSHandleMLocRelease(http.buffer, http.header, field);
 }
 
-static void
+static TSReturnCode
 WriteResponseHeader(StaticHitRequest *trq, TSCont contp, TSHttpStatus status)
 {
   StaticHitHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, status) 
== TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, status) != 
TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(status), -1);
 
@@ -275,6 +284,8 @@ WriteResponseHeader(StaticHitRequest *trq, TSCont contp, 
TSHttpStatus status)
   TSVIOReenable(trq->writeio.vio);
 
   TSStatIntIncrement(StatCountBytes, hdrlen);
+
+  return TS_SUCCESS;
 }
 
 static bool
@@ -384,7 +395,11 @@ StaticHitInterceptHook(TSCont contp, TSEvent event, void 
*edata)
 cdata.trq->writeio.write(TSVIOVConnGet(arg.vio), contp);
 TSVIONBytesSet(cdata.trq->writeio.vio, 0);
 
-WriteResponseHeader(cdata.trq, contp, status);
+if (WriteResponseHeader(cdata.trq, contp, status) != TS_SUCCESS) {
+  VERROR("failure writing response");
+  return TS_EVENT_ERROR;
+}
+
 return TS_EVENT_NONE;
 
   case TS_PARSE_CONT:
@@ -496,7 +511,10 @@ StaticHitTxnHook(TSCont contp, TSEvent event, void *edata)
 TSMLoc hdr_loc;
 const char *method;
 
-TSReleaseAssert(TSHttpTxnCacheLookupStatusGet(arg.txn, ) == 
TS_SUCCESS);
+if (TSHttpTxnCacheLookupStatusGet(arg.txn, ) != TS_SUCCESS) {
+  VERROR("failed to get client request handle");
+  goto done;
+}
 
 if (TSHttpTxnClientReqGet(arg.txn, , _loc) != TS_SUCCESS) {
   VERROR("Couldn't retrieve client request header");
diff --git a/plugins/generator/generator.cc b/plugins/generator/generator.cc
index 751a253..e33681c 100644
--- a/plugins/generator/generator.cc
+++ b/plugins/generator/generator.cc
@@ -284,17 +284,26 @@ GeneratorGetRequestHeader(GeneratorHttpHeader , 
const char *field_name,
   return default_value;
 }
 
-static void
+static TSReturnCode
 GeneratorWriteResponseHeader(GeneratorRequest *grq, TSCont contp)
 {
   GeneratorHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, TS_HTTP_STATUS_OK) 
!= TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, 
TS_HTTP_STATUS_OK) == TS_SUCCESS);
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK), -1);
 
   // Set the Content-Length header.

[trafficserver] branch 9.0.x updated: Respecting default rolling_enabled in plugins. (#7275)

2020-10-15 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 9f09616  Respecting default rolling_enabled in plugins. (#7275)
9f09616 is described below

commit 9f096167039b7e4b6b672d0cf59da44a6a697a06
Author: Brian Neradt 
AuthorDate: Tue Oct 13 17:48:23 2020 -0500

Respecting default rolling_enabled in plugins. (#7275)

Some plugins indiscriminately enable log rolling without consideration
of the system value. This looks like it is just a mistake that went
unnoticed because we've always had this enabled. This patch changes a
couple plugins to respect the proxy.config.log.rolling_enabled value by
not overwriting it with TSTextLogObjectRollingEnabledSet unless
explicitly configured to do so.

(cherry picked from commit bb847ee03c274b7aed2993423c4fe3957cb11c2a)
---
 plugins/regex_revalidate/regex_revalidate.c |  1 -
 plugins/tcpinfo/tcpinfo.cc  | 23 +++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/plugins/regex_revalidate/regex_revalidate.c 
b/plugins/regex_revalidate/regex_revalidate.c
index d7ff706..4d45f99 100644
--- a/plugins/regex_revalidate/regex_revalidate.c
+++ b/plugins/regex_revalidate/regex_revalidate.c
@@ -504,7 +504,6 @@ TSPluginInit(int argc, const char *argv[])
   break;
 case 'l':
   if (TS_SUCCESS == TSTextLogObjectCreate(optarg, 
TS_LOG_MODE_ADD_TIMESTAMP, >log)) {
-TSTextLogObjectRollingEnabledSet(pstate->log, 1);
 TSTextLogObjectRollingIntervalSecSet(pstate->log, LOG_ROLL_INTERVAL);
 TSTextLogObjectRollingOffsetHrSet(pstate->log, LOG_ROLL_OFFSET);
   }
diff --git a/plugins/tcpinfo/tcpinfo.cc b/plugins/tcpinfo/tcpinfo.cc
index 0c9d07f..ca73cb0 100644
--- a/plugins/tcpinfo/tcpinfo.cc
+++ b/plugins/tcpinfo/tcpinfo.cc
@@ -337,7 +337,7 @@ TSPluginInit(int argc, const char *argv[])
   const char *filename = "tcpinfo";
   TSCont cont;
   unsigned int hooks= 0;
-  unsigned int rolling_enabled  = 1;
+  int rolling_enabled   = -1;
   unsigned int rolling_interval_sec = 86400;
   unsigned int rolling_offset_hr= 0;
   unsigned int rolling_size = 1024;
@@ -379,7 +379,8 @@ TSPluginInit(int argc, const char *argv[])
 case 'e':
   i = strtoul(optarg, , 10);
   if (*endptr != '\0' || i > 3) {
-TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using 
default of %d", optarg, rolling_enabled);
+TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using the 
system's proxy.config.log.rolling_enabled value",
+optarg);
   } else {
 rolling_enabled = i;
   }
@@ -424,20 +425,26 @@ init:
   TSDebug("tcpinfo", "sample: %d", config->sample);
   TSDebug("tcpinfo", "log filename: %s", filename);
   TSDebug("tcpinfo", "log_level: %u", config->log_level);
+  TSDebug("tcpinfo", "rolling_enabled: %d", rolling_enabled);
   TSDebug("tcpinfo", "hook mask: 0x%x", hooks);
 
   if (TSTextLogObjectCreate(filename, TS_LOG_MODE_ADD_TIMESTAMP, >log) 
!= TS_SUCCESS) {
 TSError("[tcpinfo] failed to create log file '%s'", filename);
 return;
   }
-  if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
-TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
-return;
+  if (rolling_enabled == -1) {
+// The user either did not provide a value or the value they provided was
+// invalid.
+TSDebug("tcpinfo", "Using system default value of 
proxy.config.log.rolling_enabled ");
   } else {
-TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
-TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
-TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
+if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
+  TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
+  return;
+}
   }
+  TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
+  TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
+  TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
 
   TSTextLogObjectHeaderSet(config->log, tcpi_headers[config->log_level - 1]);
 



[trafficserver] branch 9.0.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

2020-10-15 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 70fe3b3  Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
70fe3b3 is described below

commit 70fe3b34a9b156d996869b60901ae0e783f546ec
Author: Masaori Koshiba 
AuthorDate: Thu Oct 15 10:26:02 2020 +0900

Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

(cherry picked from commit 25229339f03ade2af006f03595c343e08cffdfab)
---
 proxy/http2/Http2ConnectionState.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 23beaff..415d597 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -1426,9 +1426,6 @@ Http2ConnectionState::release_stream()
 // Can't do this because we just destroyed right here ^,
 // or we can use a local variable to do it.
 // ua_session = nullptr;
-  } else if (shutdown_state == HTTP2_SHUTDOWN_IN_PROGRESS && fini_event == 
nullptr) {
-ua_session->clear_session_active();
-fini_event = this_ethread()->schedule_imm_local((Continuation *)this, 
HTTP2_SESSION_EVENT_FINI);
   } else if (ua_session->is_active()) {
 // If the number of clients is 0, HTTP2_SESSION_EVENT_FINI is not 
received or sent, and ua_session is active,
 // then mark the connection as inactive



[trafficserver] branch 9.0.x updated: Fix proxy.process.http.current_client_transactions (#7258)

2020-10-15 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 e454433  Fix proxy.process.http.current_client_transactions (#7258)
e454433 is described below

commit e454433b932d7fa949a75665d61dfbfa55d37909
Author: Susan Hinrichs 
AuthorDate: Thu Oct 15 12:19:13 2020 -0500

Fix proxy.process.http.current_client_transactions (#7258)

(cherry picked from commit 233f9913ab77fc89ad3345dd41780e58809a8958)
---
 proxy/ProxyTransaction.cc| 23 ---
 proxy/ProxyTransaction.h |  4 ++--
 proxy/http/Http1ClientSession.cc | 15 +--
 proxy/http/Http1Transaction.cc   | 18 ++
 proxy/http/HttpSM.cc |  1 +
 proxy/http2/Http2Stream.cc   |  5 +++--
 proxy/http3/Http3Transaction.cc  |  2 +-
 7 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/proxy/ProxyTransaction.cc b/proxy/ProxyTransaction.cc
index 9be892f..214c710 100644
--- a/proxy/ProxyTransaction.cc
+++ b/proxy/ProxyTransaction.cc
@@ -32,7 +32,7 @@ ProxyTransaction::ProxyTransaction() : VConnection(nullptr) {}
 void
 ProxyTransaction::new_transaction(bool from_early_data)
 {
-  ink_assert(_sm == nullptr);
+  ink_release_assert(_sm == nullptr);
 
   // Defensive programming, make sure nothing persists across
   // connection re-use
@@ -57,20 +57,6 @@ ProxyTransaction::new_transaction(bool from_early_data)
 }
 
 void
-ProxyTransaction::release(IOBufferReader *r)
-{
-  HttpTxnDebug("[%" PRId64 "] session released by sm [%" PRId64 "]", 
_proxy_ssn ? _proxy_ssn->connection_id() : 0,
-   _sm ? _sm->sm_id : 0);
-
-  this->decrement_client_transactions_stat();
-
-  // Pass along the release to the session
-  if (_proxy_ssn) {
-_proxy_ssn->release(this);
-  }
-}
-
-void
 ProxyTransaction::attach_server_session(Http1ServerSession *ssession, bool 
transaction_done)
 {
   _proxy_ssn->attach_server_session(ssession, transaction_done);
@@ -197,3 +183,10 @@ ProxyTransaction::get_transaction_priority_dependence() 
const
 {
   return 0;
 }
+
+void
+ProxyTransaction::transaction_done()
+{
+  SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
+  this->decrement_client_transactions_stat();
+}
diff --git a/proxy/ProxyTransaction.h b/proxy/ProxyTransaction.h
index 83a2111..5ae71c8 100644
--- a/proxy/ProxyTransaction.h
+++ b/proxy/ProxyTransaction.h
@@ -40,8 +40,8 @@ public:
   virtual void new_transaction(bool from_early_data = false);
   virtual void attach_server_session(Http1ServerSession *ssession, bool 
transaction_done = true);
   Action *adjust_thread(Continuation *cont, int event, void *data);
-  virtual void release(IOBufferReader *r);
-  virtual void transaction_done() = 0;
+  virtual void release(IOBufferReader *r) = 0;
+  virtual void transaction_done();
   virtual void destroy();
 
   /// Virtual Accessors
diff --git a/proxy/http/Http1ClientSession.cc b/proxy/http/Http1ClientSession.cc
index 9177c0e..7d68b24 100644
--- a/proxy/http/Http1ClientSession.cc
+++ b/proxy/http/Http1ClientSession.cc
@@ -395,8 +395,19 @@ Http1ClientSession::release(ProxyTransaction *trans)
 {
   ink_assert(read_state == HCS_ACTIVE_READER || read_state == HCS_INIT);
 
-  // Timeout events should be delivered to the session
-  this->do_io_write(this, 0, nullptr);
+  // When release is called from start() to read the first transaction, 
get_sm()
+  // will return null.
+  HttpSM *sm = trans->get_sm();
+  if (sm) {
+MgmtInt ka_in = 
trans->get_sm()->t_state.txn_conf->keep_alive_no_activity_timeout_in;
+set_inactivity_timeout(HRTIME_SECONDS(ka_in));
+
+this->clear_session_active();
+this->ssn_last_txn_time = Thread::get_hrtime();
+
+// Timeout events should be delivered to the session
+this->do_io_write(this, 0, nullptr);
+  }
 
   // Check to see there is remaining data in the
   //  buffer.  If there is, spin up a new state
diff --git a/proxy/http/Http1Transaction.cc b/proxy/http/Http1Transaction.cc
index d2f8b2c..29ebec0 100644
--- a/proxy/http/Http1Transaction.cc
+++ b/proxy/http/Http1Transaction.cc
@@ -28,22 +28,6 @@
 void
 Http1Transaction::release(IOBufferReader *r)
 {
-  // Must set this inactivity count here rather than in the session because 
the state machine
-  // is not available then
-  MgmtInt ka_in = _sm->t_state.txn_conf->keep_alive_no_activity_timeout_in;
-  set_inactivity_timeout(HRTIME_SECONDS(ka_in));
-
-  _proxy_ssn->clear_session_active();
-  _proxy_ssn->ssn_last_txn_time = Thread::get_hrtime();
-
-  // Make sure that the state machine is returning
-  //  correct buffer reader
-  ink_assert(r == _reader);
-  if (r != _reader) {
-this->do_io_close();
-  } else {
-super_type::release(r);
-  }
 }
 
 void
@@ -55,6 +39,8 @@ Http1Transaction::destroy() // todo make ~Http1Transaction()
 void
 Http1Transaction::transaction_done()
 {
+  

[trafficserver] branch 9.0.x updated: 7096: Synchronize Server Session Management and Network I/O (#7278)

2020-10-15 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 7543be2  7096: Synchronize Server Session Management and Network I/O 
(#7278)
7543be2 is described below

commit 7543be25ba14e36e617f20fc974c29804033a73f
Author: Sudheer Vinukonda 
AuthorDate: Thu Oct 15 17:03:36 2020 -0700

7096: Synchronize Server Session Management and Network I/O (#7278)

1. Session Acquisition with global session pools - Ensure that
the continuation and mutex is preserved through the entire session
context migration mechanism until the SM is attached to the new VC
2. Session Release - Delay clearing of read and write io buffers
to protect against race between do_io_close and net_read_io
3. Fix dangling ssl->vc reference for TLS Session Resumption

(cherry picked from commit a2d15151a5c1a69a3826e086ac497a94a4bfa7ea)
---
 iocore/net/I_NetVConnection.h | 11 +++
 iocore/net/P_UnixNetVConnection.h |  3 ++
 iocore/net/SSLNetVConnection.cc   |  2 --
 iocore/net/SSLUtils.cc|  2 ++
 iocore/net/TLSSessionResumptionSupport.cc |  6 
 iocore/net/TLSSessionResumptionSupport.h  |  1 +
 iocore/net/UnixNetVConnection.cc  | 54 ---
 proxy/http/Http1ServerSession.cc  |  7 ++--
 proxy/http/HttpSM.cc  | 11 +--
 proxy/http/HttpSessionManager.cc  | 27 
 10 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index ca7c3ab..820a790 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -387,6 +387,12 @@ public:
   */
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override = 
0;
 
+  virtual Continuation *
+  read_vio_cont()
+  {
+return nullptr;
+  }
+
   /**
 Initiates write. Thread-safe, may be called when not handling
 an event from the NetVConnection, or the NetVConnection creation
@@ -423,6 +429,11 @@ public:
   */
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override = 0;
 
+  virtual Continuation *
+  write_vio_cont()
+  {
+return nullptr;
+  }
   /**
 Closes the vconnection. A state machine MUST call do_io_close()
 when it has finished with a VConnection. do_io_close() indicates
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index cd94178..1d61200 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -111,6 +111,9 @@ public:
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override;
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override;
 
+  Continuation *read_vio_cont() override;
+  Continuation *write_vio_cont() override;
+
   bool get_data(int id, void *data) override;
 
   Action *send_OOB(Continuation *cont, char *buf, int len) override;
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 3593735..e1b7d99 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -212,7 +212,6 @@ make_ssl_connection(SSL_CTX *ctx, SSLNetVConnection *netvc)
 }
 
 SSLNetVCAttach(ssl, netvc);
-TLSSessionResumptionSupport::bind(ssl, netvc);
   }
 
   return ssl;
@@ -1820,7 +1819,6 @@ SSLNetVConnection::populate(Connection , Continuation 
*c, void *arg)
 
   sslHandshakeStatus = SSL_HANDSHAKE_DONE;
   SSLNetVCAttach(this->ssl, this);
-  TLSSessionResumptionSupport::bind(this->ssl, this);
   return EVENT_DONE;
 }
 
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 442aec3..79be614 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -1700,12 +1700,14 @@ void
 SSLNetVCAttach(SSL *ssl, SSLNetVConnection *vc)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, vc);
+  TLSSessionResumptionSupport::bind(ssl, vc);
 }
 
 void
 SSLNetVCDetach(SSL *ssl)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, nullptr);
+  TLSSessionResumptionSupport::unbind(ssl);
 }
 
 SSLNetVConnection *
diff --git a/iocore/net/TLSSessionResumptionSupport.cc 
b/iocore/net/TLSSessionResumptionSupport.cc
index 8935c99..ab6f38e 100644
--- a/iocore/net/TLSSessionResumptionSupport.cc
+++ b/iocore/net/TLSSessionResumptionSupport.cc
@@ -75,6 +75,12 @@ TLSSessionResumptionSupport::bind(SSL *ssl, 
TLSSessionResumptionSupport *srs)
   SSL_set_ex_data(ssl, _ex_data_index, srs);
 }
 
+void
+TLSSessionResumptionSupport::unbind(SSL *ssl)
+{
+  SSL_set_ex_data(ssl, _ex_data_index, nullptr);
+}
+
 int
 TLSSessionResumptionSupport::processSessionTicket(SSL *ssl, unsigned char 
*keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx,
   HMAC_CTX *hctx, int enc)
diff --git 

[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-10-15 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 12953fc  Updated ChangeLog
12953fc is described below

commit 12953fc5eacc2957abc7575c72a238fa9e29bdee
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:43:03 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.1 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG-8.1.1 b/CHANGELOG-8.1.1
index 16617d6..0d20151 100644
--- a/CHANGELOG-8.1.1
+++ b/CHANGELOG-8.1.1
@@ -8,4 +8,5 @@ Changes with Apache Traffic Server 8.1.1
   #7217 - Remove usage of stored ACL record, fix ipallow reload
   #7234 -  Do not cache Transfer-Encoding header
   #7244 - Replace existing autest certs with ones from master
+  #7267 - Fix truncated reponse on HTTP/2 graceful shutdown
   #7268 - add support for centos8 to autest



[trafficserver] branch 9.0.x updated: Updated ChangeLog

2020-10-15 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 082eab8  Updated ChangeLog
082eab8 is described below

commit 082eab80d0e6400796e04ab3caa46bc902b11c99
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:46:57 2020 -0600

Updated ChangeLog
---
 CHANGELOG-9.0.0 | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG-9.0.0 b/CHANGELOG-9.0.0
index fb687f3..f895217 100644
--- a/CHANGELOG-9.0.0
+++ b/CHANGELOG-9.0.0
@@ -644,7 +644,6 @@ Changes with Apache Traffic Server 9.0.0
   #5863 - pipe buffer size for log.pipe should be configurable
   #5864 - ProxyTxn refactor: moved host_res_style to t_state.dns_info
   #5867 - PR#5867: Explain how to use open_con().
-  #5868 - Update HttpTransact.cc
   #5869 - ProxyTxn: removed restart_immediate
   #5870 - Fix bad limit in poll loop.  jtest -c1 now works again.
   #5879 - Weak mutex locking macros
@@ -1113,5 +1112,10 @@ Changes with Apache Traffic Server 9.0.0
   #7238 - Supporting out of source builds for AuTests.
   #7243 - RolledLogDeleter: do not sort on each candidate consideration.
   #7252 - Remove some useless defines, which just obfuscates code
+  #7258 - Fix proxy.process.http.current_client_transactions
   #7260 - Treat objects with negative max-age CC directives as stale.
   #7266 - Allow initial // in request targets.
+  #7269 - gracefully handle TSReleaseAsserts in statichit and generator plugins
+  #7274 - Introduce proxy-verifier to AuTests
+  #7275 - Respecting default rolling_enabled value in plugins.
+  #7278 - 7096: Synchronize Server Session Management and Network I/O



[trafficserver] branch 9.0.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

2020-10-15 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 70fe3b3  Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
70fe3b3 is described below

commit 70fe3b34a9b156d996869b60901ae0e783f546ec
Author: Masaori Koshiba 
AuthorDate: Thu Oct 15 10:26:02 2020 +0900

Fix truncated reponse on HTTP/2 graceful shutdown (#7267)

(cherry picked from commit 25229339f03ade2af006f03595c343e08cffdfab)
---
 proxy/http2/Http2ConnectionState.cc | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/proxy/http2/Http2ConnectionState.cc 
b/proxy/http2/Http2ConnectionState.cc
index 23beaff..415d597 100644
--- a/proxy/http2/Http2ConnectionState.cc
+++ b/proxy/http2/Http2ConnectionState.cc
@@ -1426,9 +1426,6 @@ Http2ConnectionState::release_stream()
 // Can't do this because we just destroyed right here ^,
 // or we can use a local variable to do it.
 // ua_session = nullptr;
-  } else if (shutdown_state == HTTP2_SHUTDOWN_IN_PROGRESS && fini_event == 
nullptr) {
-ua_session->clear_session_active();
-fini_event = this_ethread()->schedule_imm_local((Continuation *)this, 
HTTP2_SESSION_EVENT_FINI);
   } else if (ua_session->is_active()) {
 // If the number of clients is 0, HTTP2_SESSION_EVENT_FINI is not 
received or sent, and ua_session is active,
 // then mark the connection as inactive



[trafficserver] branch 9.0.x updated: 7096: Synchronize Server Session Management and Network I/O (#7278)

2020-10-15 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 7543be2  7096: Synchronize Server Session Management and Network I/O 
(#7278)
7543be2 is described below

commit 7543be25ba14e36e617f20fc974c29804033a73f
Author: Sudheer Vinukonda 
AuthorDate: Thu Oct 15 17:03:36 2020 -0700

7096: Synchronize Server Session Management and Network I/O (#7278)

1. Session Acquisition with global session pools - Ensure that
the continuation and mutex is preserved through the entire session
context migration mechanism until the SM is attached to the new VC
2. Session Release - Delay clearing of read and write io buffers
to protect against race between do_io_close and net_read_io
3. Fix dangling ssl->vc reference for TLS Session Resumption

(cherry picked from commit a2d15151a5c1a69a3826e086ac497a94a4bfa7ea)
---
 iocore/net/I_NetVConnection.h | 11 +++
 iocore/net/P_UnixNetVConnection.h |  3 ++
 iocore/net/SSLNetVConnection.cc   |  2 --
 iocore/net/SSLUtils.cc|  2 ++
 iocore/net/TLSSessionResumptionSupport.cc |  6 
 iocore/net/TLSSessionResumptionSupport.h  |  1 +
 iocore/net/UnixNetVConnection.cc  | 54 ---
 proxy/http/Http1ServerSession.cc  |  7 ++--
 proxy/http/HttpSM.cc  | 11 +--
 proxy/http/HttpSessionManager.cc  | 27 
 10 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index ca7c3ab..820a790 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -387,6 +387,12 @@ public:
   */
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override = 
0;
 
+  virtual Continuation *
+  read_vio_cont()
+  {
+return nullptr;
+  }
+
   /**
 Initiates write. Thread-safe, may be called when not handling
 an event from the NetVConnection, or the NetVConnection creation
@@ -423,6 +429,11 @@ public:
   */
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override = 0;
 
+  virtual Continuation *
+  write_vio_cont()
+  {
+return nullptr;
+  }
   /**
 Closes the vconnection. A state machine MUST call do_io_close()
 when it has finished with a VConnection. do_io_close() indicates
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index cd94178..1d61200 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -111,6 +111,9 @@ public:
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override;
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override;
 
+  Continuation *read_vio_cont() override;
+  Continuation *write_vio_cont() override;
+
   bool get_data(int id, void *data) override;
 
   Action *send_OOB(Continuation *cont, char *buf, int len) override;
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 3593735..e1b7d99 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -212,7 +212,6 @@ make_ssl_connection(SSL_CTX *ctx, SSLNetVConnection *netvc)
 }
 
 SSLNetVCAttach(ssl, netvc);
-TLSSessionResumptionSupport::bind(ssl, netvc);
   }
 
   return ssl;
@@ -1820,7 +1819,6 @@ SSLNetVConnection::populate(Connection , Continuation 
*c, void *arg)
 
   sslHandshakeStatus = SSL_HANDSHAKE_DONE;
   SSLNetVCAttach(this->ssl, this);
-  TLSSessionResumptionSupport::bind(this->ssl, this);
   return EVENT_DONE;
 }
 
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 442aec3..79be614 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -1700,12 +1700,14 @@ void
 SSLNetVCAttach(SSL *ssl, SSLNetVConnection *vc)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, vc);
+  TLSSessionResumptionSupport::bind(ssl, vc);
 }
 
 void
 SSLNetVCDetach(SSL *ssl)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, nullptr);
+  TLSSessionResumptionSupport::unbind(ssl);
 }
 
 SSLNetVConnection *
diff --git a/iocore/net/TLSSessionResumptionSupport.cc 
b/iocore/net/TLSSessionResumptionSupport.cc
index 8935c99..ab6f38e 100644
--- a/iocore/net/TLSSessionResumptionSupport.cc
+++ b/iocore/net/TLSSessionResumptionSupport.cc
@@ -75,6 +75,12 @@ TLSSessionResumptionSupport::bind(SSL *ssl, 
TLSSessionResumptionSupport *srs)
   SSL_set_ex_data(ssl, _ex_data_index, srs);
 }
 
+void
+TLSSessionResumptionSupport::unbind(SSL *ssl)
+{
+  SSL_set_ex_data(ssl, _ex_data_index, nullptr);
+}
+
 int
 TLSSessionResumptionSupport::processSessionTicket(SSL *ssl, unsigned char 
*keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx,
   HMAC_CTX *hctx, int enc)
diff --git 

[trafficserver] branch 9.0.x updated: Respecting default rolling_enabled in plugins. (#7275)

2020-10-15 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 9f09616  Respecting default rolling_enabled in plugins. (#7275)
9f09616 is described below

commit 9f096167039b7e4b6b672d0cf59da44a6a697a06
Author: Brian Neradt 
AuthorDate: Tue Oct 13 17:48:23 2020 -0500

Respecting default rolling_enabled in plugins. (#7275)

Some plugins indiscriminately enable log rolling without consideration
of the system value. This looks like it is just a mistake that went
unnoticed because we've always had this enabled. This patch changes a
couple plugins to respect the proxy.config.log.rolling_enabled value by
not overwriting it with TSTextLogObjectRollingEnabledSet unless
explicitly configured to do so.

(cherry picked from commit bb847ee03c274b7aed2993423c4fe3957cb11c2a)
---
 plugins/regex_revalidate/regex_revalidate.c |  1 -
 plugins/tcpinfo/tcpinfo.cc  | 23 +++
 2 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/plugins/regex_revalidate/regex_revalidate.c 
b/plugins/regex_revalidate/regex_revalidate.c
index d7ff706..4d45f99 100644
--- a/plugins/regex_revalidate/regex_revalidate.c
+++ b/plugins/regex_revalidate/regex_revalidate.c
@@ -504,7 +504,6 @@ TSPluginInit(int argc, const char *argv[])
   break;
 case 'l':
   if (TS_SUCCESS == TSTextLogObjectCreate(optarg, 
TS_LOG_MODE_ADD_TIMESTAMP, >log)) {
-TSTextLogObjectRollingEnabledSet(pstate->log, 1);
 TSTextLogObjectRollingIntervalSecSet(pstate->log, LOG_ROLL_INTERVAL);
 TSTextLogObjectRollingOffsetHrSet(pstate->log, LOG_ROLL_OFFSET);
   }
diff --git a/plugins/tcpinfo/tcpinfo.cc b/plugins/tcpinfo/tcpinfo.cc
index 0c9d07f..ca73cb0 100644
--- a/plugins/tcpinfo/tcpinfo.cc
+++ b/plugins/tcpinfo/tcpinfo.cc
@@ -337,7 +337,7 @@ TSPluginInit(int argc, const char *argv[])
   const char *filename = "tcpinfo";
   TSCont cont;
   unsigned int hooks= 0;
-  unsigned int rolling_enabled  = 1;
+  int rolling_enabled   = -1;
   unsigned int rolling_interval_sec = 86400;
   unsigned int rolling_offset_hr= 0;
   unsigned int rolling_size = 1024;
@@ -379,7 +379,8 @@ TSPluginInit(int argc, const char *argv[])
 case 'e':
   i = strtoul(optarg, , 10);
   if (*endptr != '\0' || i > 3) {
-TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using 
default of %d", optarg, rolling_enabled);
+TSError("[tcpinfo] invalid rolling-enabled argument, '%s', using the 
system's proxy.config.log.rolling_enabled value",
+optarg);
   } else {
 rolling_enabled = i;
   }
@@ -424,20 +425,26 @@ init:
   TSDebug("tcpinfo", "sample: %d", config->sample);
   TSDebug("tcpinfo", "log filename: %s", filename);
   TSDebug("tcpinfo", "log_level: %u", config->log_level);
+  TSDebug("tcpinfo", "rolling_enabled: %d", rolling_enabled);
   TSDebug("tcpinfo", "hook mask: 0x%x", hooks);
 
   if (TSTextLogObjectCreate(filename, TS_LOG_MODE_ADD_TIMESTAMP, >log) 
!= TS_SUCCESS) {
 TSError("[tcpinfo] failed to create log file '%s'", filename);
 return;
   }
-  if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
-TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
-return;
+  if (rolling_enabled == -1) {
+// The user either did not provide a value or the value they provided was
+// invalid.
+TSDebug("tcpinfo", "Using system default value of 
proxy.config.log.rolling_enabled ");
   } else {
-TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
-TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
-TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
+if (TSTextLogObjectRollingEnabledSet(config->log, rolling_enabled) != 
TS_SUCCESS) {
+  TSError("[tcpinfo] failed to enable log file rolling to: '%d'", 
rolling_enabled);
+  return;
+}
   }
+  TSTextLogObjectRollingIntervalSecSet(config->log, rolling_interval_sec);
+  TSTextLogObjectRollingOffsetHrSet(config->log, rolling_offset_hr);
+  TSTextLogObjectRollingSizeMbSet(config->log, rolling_size);
 
   TSTextLogObjectHeaderSet(config->log, tcpi_headers[config->log_level - 1]);
 



[trafficserver] branch 9.0.x updated: Fix proxy.process.http.current_client_transactions (#7258)

2020-10-15 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 e454433  Fix proxy.process.http.current_client_transactions (#7258)
e454433 is described below

commit e454433b932d7fa949a75665d61dfbfa55d37909
Author: Susan Hinrichs 
AuthorDate: Thu Oct 15 12:19:13 2020 -0500

Fix proxy.process.http.current_client_transactions (#7258)

(cherry picked from commit 233f9913ab77fc89ad3345dd41780e58809a8958)
---
 proxy/ProxyTransaction.cc| 23 ---
 proxy/ProxyTransaction.h |  4 ++--
 proxy/http/Http1ClientSession.cc | 15 +--
 proxy/http/Http1Transaction.cc   | 18 ++
 proxy/http/HttpSM.cc |  1 +
 proxy/http2/Http2Stream.cc   |  5 +++--
 proxy/http3/Http3Transaction.cc  |  2 +-
 7 files changed, 30 insertions(+), 38 deletions(-)

diff --git a/proxy/ProxyTransaction.cc b/proxy/ProxyTransaction.cc
index 9be892f..214c710 100644
--- a/proxy/ProxyTransaction.cc
+++ b/proxy/ProxyTransaction.cc
@@ -32,7 +32,7 @@ ProxyTransaction::ProxyTransaction() : VConnection(nullptr) {}
 void
 ProxyTransaction::new_transaction(bool from_early_data)
 {
-  ink_assert(_sm == nullptr);
+  ink_release_assert(_sm == nullptr);
 
   // Defensive programming, make sure nothing persists across
   // connection re-use
@@ -57,20 +57,6 @@ ProxyTransaction::new_transaction(bool from_early_data)
 }
 
 void
-ProxyTransaction::release(IOBufferReader *r)
-{
-  HttpTxnDebug("[%" PRId64 "] session released by sm [%" PRId64 "]", 
_proxy_ssn ? _proxy_ssn->connection_id() : 0,
-   _sm ? _sm->sm_id : 0);
-
-  this->decrement_client_transactions_stat();
-
-  // Pass along the release to the session
-  if (_proxy_ssn) {
-_proxy_ssn->release(this);
-  }
-}
-
-void
 ProxyTransaction::attach_server_session(Http1ServerSession *ssession, bool 
transaction_done)
 {
   _proxy_ssn->attach_server_session(ssession, transaction_done);
@@ -197,3 +183,10 @@ ProxyTransaction::get_transaction_priority_dependence() 
const
 {
   return 0;
 }
+
+void
+ProxyTransaction::transaction_done()
+{
+  SCOPED_MUTEX_LOCK(lock, this->mutex, this_ethread());
+  this->decrement_client_transactions_stat();
+}
diff --git a/proxy/ProxyTransaction.h b/proxy/ProxyTransaction.h
index 83a2111..5ae71c8 100644
--- a/proxy/ProxyTransaction.h
+++ b/proxy/ProxyTransaction.h
@@ -40,8 +40,8 @@ public:
   virtual void new_transaction(bool from_early_data = false);
   virtual void attach_server_session(Http1ServerSession *ssession, bool 
transaction_done = true);
   Action *adjust_thread(Continuation *cont, int event, void *data);
-  virtual void release(IOBufferReader *r);
-  virtual void transaction_done() = 0;
+  virtual void release(IOBufferReader *r) = 0;
+  virtual void transaction_done();
   virtual void destroy();
 
   /// Virtual Accessors
diff --git a/proxy/http/Http1ClientSession.cc b/proxy/http/Http1ClientSession.cc
index 9177c0e..7d68b24 100644
--- a/proxy/http/Http1ClientSession.cc
+++ b/proxy/http/Http1ClientSession.cc
@@ -395,8 +395,19 @@ Http1ClientSession::release(ProxyTransaction *trans)
 {
   ink_assert(read_state == HCS_ACTIVE_READER || read_state == HCS_INIT);
 
-  // Timeout events should be delivered to the session
-  this->do_io_write(this, 0, nullptr);
+  // When release is called from start() to read the first transaction, 
get_sm()
+  // will return null.
+  HttpSM *sm = trans->get_sm();
+  if (sm) {
+MgmtInt ka_in = 
trans->get_sm()->t_state.txn_conf->keep_alive_no_activity_timeout_in;
+set_inactivity_timeout(HRTIME_SECONDS(ka_in));
+
+this->clear_session_active();
+this->ssn_last_txn_time = Thread::get_hrtime();
+
+// Timeout events should be delivered to the session
+this->do_io_write(this, 0, nullptr);
+  }
 
   // Check to see there is remaining data in the
   //  buffer.  If there is, spin up a new state
diff --git a/proxy/http/Http1Transaction.cc b/proxy/http/Http1Transaction.cc
index d2f8b2c..29ebec0 100644
--- a/proxy/http/Http1Transaction.cc
+++ b/proxy/http/Http1Transaction.cc
@@ -28,22 +28,6 @@
 void
 Http1Transaction::release(IOBufferReader *r)
 {
-  // Must set this inactivity count here rather than in the session because 
the state machine
-  // is not available then
-  MgmtInt ka_in = _sm->t_state.txn_conf->keep_alive_no_activity_timeout_in;
-  set_inactivity_timeout(HRTIME_SECONDS(ka_in));
-
-  _proxy_ssn->clear_session_active();
-  _proxy_ssn->ssn_last_txn_time = Thread::get_hrtime();
-
-  // Make sure that the state machine is returning
-  //  correct buffer reader
-  ink_assert(r == _reader);
-  if (r != _reader) {
-this->do_io_close();
-  } else {
-super_type::release(r);
-  }
 }
 
 void
@@ -55,6 +39,8 @@ Http1Transaction::destroy() // todo make ~Http1Transaction()
 void
 Http1Transaction::transaction_done()
 {
+  

[trafficserver] branch 9.0.x updated: gracefully handle TSReleaseAsserts in statichit and generator plugins (#7269)

2020-10-15 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 51eb50d  gracefully handle TSReleaseAsserts in statichit and generator 
plugins (#7269)
51eb50d is described below

commit 51eb50da0b854b1763609472a169c03d94235456
Author: Randall Meyer 
AuthorDate: Tue Oct 13 14:59:50 2020 -0700

gracefully handle TSReleaseAsserts in statichit and generator plugins 
(#7269)

(cherry picked from commit 4ffd34a8c528e2b3863af6f15ad78051007eddc6)
---
 plugins/experimental/statichit/statichit.cc | 30 
 plugins/generator/generator.cc  | 54 ++---
 2 files changed, 66 insertions(+), 18 deletions(-)

diff --git a/plugins/experimental/statichit/statichit.cc 
b/plugins/experimental/statichit/statichit.cc
index 1520350..b362ba4 100644
--- a/plugins/experimental/statichit/statichit.cc
+++ b/plugins/experimental/statichit/statichit.cc
@@ -234,16 +234,25 @@ HeaderFieldStringSet(const StaticHitHttpHeader , 
const char *field_name, in
   TSHandleMLocRelease(http.buffer, http.header, field);
 }
 
-static void
+static TSReturnCode
 WriteResponseHeader(StaticHitRequest *trq, TSCont contp, TSHttpStatus status)
 {
   StaticHitHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, status) 
== TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, status) != 
TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(status), -1);
 
@@ -275,6 +284,8 @@ WriteResponseHeader(StaticHitRequest *trq, TSCont contp, 
TSHttpStatus status)
   TSVIOReenable(trq->writeio.vio);
 
   TSStatIntIncrement(StatCountBytes, hdrlen);
+
+  return TS_SUCCESS;
 }
 
 static bool
@@ -384,7 +395,11 @@ StaticHitInterceptHook(TSCont contp, TSEvent event, void 
*edata)
 cdata.trq->writeio.write(TSVIOVConnGet(arg.vio), contp);
 TSVIONBytesSet(cdata.trq->writeio.vio, 0);
 
-WriteResponseHeader(cdata.trq, contp, status);
+if (WriteResponseHeader(cdata.trq, contp, status) != TS_SUCCESS) {
+  VERROR("failure writing response");
+  return TS_EVENT_ERROR;
+}
+
 return TS_EVENT_NONE;
 
   case TS_PARSE_CONT:
@@ -496,7 +511,10 @@ StaticHitTxnHook(TSCont contp, TSEvent event, void *edata)
 TSMLoc hdr_loc;
 const char *method;
 
-TSReleaseAssert(TSHttpTxnCacheLookupStatusGet(arg.txn, ) == 
TS_SUCCESS);
+if (TSHttpTxnCacheLookupStatusGet(arg.txn, ) != TS_SUCCESS) {
+  VERROR("failed to get client request handle");
+  goto done;
+}
 
 if (TSHttpTxnClientReqGet(arg.txn, , _loc) != TS_SUCCESS) {
   VERROR("Couldn't retrieve client request header");
diff --git a/plugins/generator/generator.cc b/plugins/generator/generator.cc
index 751a253..e33681c 100644
--- a/plugins/generator/generator.cc
+++ b/plugins/generator/generator.cc
@@ -284,17 +284,26 @@ GeneratorGetRequestHeader(GeneratorHttpHeader , 
const char *field_name,
   return default_value;
 }
 
-static void
+static TSReturnCode
 GeneratorWriteResponseHeader(GeneratorRequest *grq, TSCont contp)
 {
   GeneratorHttpHeader response;
 
   VDEBUG("writing response header");
 
-  TSReleaseAssert(TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) == TS_SUCCESS);
-  TSReleaseAssert(TSHttpHdrVersionSet(response.buffer, response.header, 
TS_HTTP_VERSION(1, 1)) == TS_SUCCESS);
+  if (TSHttpHdrTypeSet(response.buffer, response.header, 
TS_HTTP_TYPE_RESPONSE) != TS_SUCCESS) {
+VERROR("failed to set type");
+return TS_ERROR;
+  }
+  if (TSHttpHdrVersionSet(response.buffer, response.header, TS_HTTP_VERSION(1, 
1)) != TS_SUCCESS) {
+VERROR("failed to set HTTP version");
+return TS_ERROR;
+  }
+  if (TSHttpHdrStatusSet(response.buffer, response.header, TS_HTTP_STATUS_OK) 
!= TS_SUCCESS) {
+VERROR("failed to set HTTP status");
+return TS_ERROR;
+  }
 
-  TSReleaseAssert(TSHttpHdrStatusSet(response.buffer, response.header, 
TS_HTTP_STATUS_OK) == TS_SUCCESS);
   TSHttpHdrReasonSet(response.buffer, response.header, 
TSHttpHdrReasonLookup(TS_HTTP_STATUS_OK), -1);
 
   // Set the Content-Length header.

[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-10-15 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 12953fc  Updated ChangeLog
12953fc is described below

commit 12953fc5eacc2957abc7575c72a238fa9e29bdee
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:43:03 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.1 | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG-8.1.1 b/CHANGELOG-8.1.1
index 16617d6..0d20151 100644
--- a/CHANGELOG-8.1.1
+++ b/CHANGELOG-8.1.1
@@ -8,4 +8,5 @@ Changes with Apache Traffic Server 8.1.1
   #7217 - Remove usage of stored ACL record, fix ipallow reload
   #7234 -  Do not cache Transfer-Encoding header
   #7244 - Replace existing autest certs with ones from master
+  #7267 - Fix truncated reponse on HTTP/2 graceful shutdown
   #7268 - add support for centos8 to autest



[trafficserver] branch 9.0.x updated: 7096: Synchronize Server Session Management and Network I/O (#7278)

2020-10-15 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 7543be2  7096: Synchronize Server Session Management and Network I/O 
(#7278)
7543be2 is described below

commit 7543be25ba14e36e617f20fc974c29804033a73f
Author: Sudheer Vinukonda 
AuthorDate: Thu Oct 15 17:03:36 2020 -0700

7096: Synchronize Server Session Management and Network I/O (#7278)

1. Session Acquisition with global session pools - Ensure that
the continuation and mutex is preserved through the entire session
context migration mechanism until the SM is attached to the new VC
2. Session Release - Delay clearing of read and write io buffers
to protect against race between do_io_close and net_read_io
3. Fix dangling ssl->vc reference for TLS Session Resumption

(cherry picked from commit a2d15151a5c1a69a3826e086ac497a94a4bfa7ea)
---
 iocore/net/I_NetVConnection.h | 11 +++
 iocore/net/P_UnixNetVConnection.h |  3 ++
 iocore/net/SSLNetVConnection.cc   |  2 --
 iocore/net/SSLUtils.cc|  2 ++
 iocore/net/TLSSessionResumptionSupport.cc |  6 
 iocore/net/TLSSessionResumptionSupport.h  |  1 +
 iocore/net/UnixNetVConnection.cc  | 54 ---
 proxy/http/Http1ServerSession.cc  |  7 ++--
 proxy/http/HttpSM.cc  | 11 +--
 proxy/http/HttpSessionManager.cc  | 27 
 10 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index ca7c3ab..820a790 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -387,6 +387,12 @@ public:
   */
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override = 
0;
 
+  virtual Continuation *
+  read_vio_cont()
+  {
+return nullptr;
+  }
+
   /**
 Initiates write. Thread-safe, may be called when not handling
 an event from the NetVConnection, or the NetVConnection creation
@@ -423,6 +429,11 @@ public:
   */
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override = 0;
 
+  virtual Continuation *
+  write_vio_cont()
+  {
+return nullptr;
+  }
   /**
 Closes the vconnection. A state machine MUST call do_io_close()
 when it has finished with a VConnection. do_io_close() indicates
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index cd94178..1d61200 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -111,6 +111,9 @@ public:
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override;
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override;
 
+  Continuation *read_vio_cont() override;
+  Continuation *write_vio_cont() override;
+
   bool get_data(int id, void *data) override;
 
   Action *send_OOB(Continuation *cont, char *buf, int len) override;
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 3593735..e1b7d99 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -212,7 +212,6 @@ make_ssl_connection(SSL_CTX *ctx, SSLNetVConnection *netvc)
 }
 
 SSLNetVCAttach(ssl, netvc);
-TLSSessionResumptionSupport::bind(ssl, netvc);
   }
 
   return ssl;
@@ -1820,7 +1819,6 @@ SSLNetVConnection::populate(Connection , Continuation 
*c, void *arg)
 
   sslHandshakeStatus = SSL_HANDSHAKE_DONE;
   SSLNetVCAttach(this->ssl, this);
-  TLSSessionResumptionSupport::bind(this->ssl, this);
   return EVENT_DONE;
 }
 
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 442aec3..79be614 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -1700,12 +1700,14 @@ void
 SSLNetVCAttach(SSL *ssl, SSLNetVConnection *vc)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, vc);
+  TLSSessionResumptionSupport::bind(ssl, vc);
 }
 
 void
 SSLNetVCDetach(SSL *ssl)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, nullptr);
+  TLSSessionResumptionSupport::unbind(ssl);
 }
 
 SSLNetVConnection *
diff --git a/iocore/net/TLSSessionResumptionSupport.cc 
b/iocore/net/TLSSessionResumptionSupport.cc
index 8935c99..ab6f38e 100644
--- a/iocore/net/TLSSessionResumptionSupport.cc
+++ b/iocore/net/TLSSessionResumptionSupport.cc
@@ -75,6 +75,12 @@ TLSSessionResumptionSupport::bind(SSL *ssl, 
TLSSessionResumptionSupport *srs)
   SSL_set_ex_data(ssl, _ex_data_index, srs);
 }
 
+void
+TLSSessionResumptionSupport::unbind(SSL *ssl)
+{
+  SSL_set_ex_data(ssl, _ex_data_index, nullptr);
+}
+
 int
 TLSSessionResumptionSupport::processSessionTicket(SSL *ssl, unsigned char 
*keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx,
   HMAC_CTX *hctx, int enc)
diff --git 

[trafficserver] branch 8.1.x updated: Updated ChangeLog

2020-10-15 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 4d0f3e3  Updated ChangeLog
4d0f3e3 is described below

commit 4d0f3e3564682514dd9dc28d8b8e00e01874092a
Author: Leif Hedstrom 
AuthorDate: Thu Oct 15 20:38:13 2020 -0600

Updated ChangeLog
---
 CHANGELOG-8.1.1 | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/CHANGELOG-8.1.1 b/CHANGELOG-8.1.1
index e57de88..16617d6 100644
--- a/CHANGELOG-8.1.1
+++ b/CHANGELOG-8.1.1
@@ -1,4 +1,5 @@
 Changes with Apache Traffic Server 8.1.1
+  #5868 - Update HttpTransact.cc
   #7147 - slice: check if vio is still valid before calling TSVIODone* on 
shutdown
   #7154 - Fixes H2 toggling using ssl_server_name.yaml
   #7156 - Fixes garbled logs when using % log tag
@@ -7,3 +8,4 @@ Changes with Apache Traffic Server 8.1.1
   #7217 - Remove usage of stored ACL record, fix ipallow reload
   #7234 -  Do not cache Transfer-Encoding header
   #7244 - Replace existing autest certs with ones from master
+  #7268 - add support for centos8 to autest



[trafficserver] branch 8.1.x updated: Update HttpTransact.cc

2020-10-15 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 867c0a8  Update HttpTransact.cc
867c0a8 is described below

commit 867c0a8585ffeb286523061ffcaccac0dafff32e
Author: YuanYingdong <1975643...@qq.com>
AuthorDate: Fri Aug 23 20:17:33 2019 +0800

Update HttpTransact.cc

Once we get hit stale and cannot connec t to source site but we decice to 
serve from cache ,we need to set s->source = SOURCE_CACHE or we will get 
coredump in HttpTransact::handle_content_length_header

(cherry picked from commit 5b700d270b021c9facf664914fdefb3887800975)
---
 proxy/http/HttpTransact.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 82da476..e6c481e 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -3729,7 +3729,7 @@ HttpTransact::handle_server_connection_not_open(State *s)
 ink_assert(s->cache_info.object_read != nullptr);
 ink_assert(s->cache_info.action == CACHE_DO_UPDATE || s->cache_info.action 
== CACHE_DO_SERVE);
 ink_assert(s->internal_msg_buffer == nullptr);
-
+s->source = SOURCE_CACHE;
 TxnDebug("http_trans", "[hscno] serving stale doc to client");
 build_response_from_cache(s, HTTP_WARNING_CODE_REVALIDATION_FAILED);
   } else {



[trafficserver] branch 8.1.x updated: Update HttpTransact.cc

2020-10-15 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 867c0a8  Update HttpTransact.cc
867c0a8 is described below

commit 867c0a8585ffeb286523061ffcaccac0dafff32e
Author: YuanYingdong <1975643...@qq.com>
AuthorDate: Fri Aug 23 20:17:33 2019 +0800

Update HttpTransact.cc

Once we get hit stale and cannot connec t to source site but we decice to 
serve from cache ,we need to set s->source = SOURCE_CACHE or we will get 
coredump in HttpTransact::handle_content_length_header

(cherry picked from commit 5b700d270b021c9facf664914fdefb3887800975)
---
 proxy/http/HttpTransact.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 82da476..e6c481e 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -3729,7 +3729,7 @@ HttpTransact::handle_server_connection_not_open(State *s)
 ink_assert(s->cache_info.object_read != nullptr);
 ink_assert(s->cache_info.action == CACHE_DO_UPDATE || s->cache_info.action 
== CACHE_DO_SERVE);
 ink_assert(s->internal_msg_buffer == nullptr);
-
+s->source = SOURCE_CACHE;
 TxnDebug("http_trans", "[hscno] serving stale doc to client");
 build_response_from_cache(s, HTTP_WARNING_CODE_REVALIDATION_FAILED);
   } else {



[trafficserver] branch 8.1.x updated: Update HttpTransact.cc

2020-10-15 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 867c0a8  Update HttpTransact.cc
867c0a8 is described below

commit 867c0a8585ffeb286523061ffcaccac0dafff32e
Author: YuanYingdong <1975643...@qq.com>
AuthorDate: Fri Aug 23 20:17:33 2019 +0800

Update HttpTransact.cc

Once we get hit stale and cannot connec t to source site but we decice to 
serve from cache ,we need to set s->source = SOURCE_CACHE or we will get 
coredump in HttpTransact::handle_content_length_header

(cherry picked from commit 5b700d270b021c9facf664914fdefb3887800975)
---
 proxy/http/HttpTransact.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/proxy/http/HttpTransact.cc b/proxy/http/HttpTransact.cc
index 82da476..e6c481e 100644
--- a/proxy/http/HttpTransact.cc
+++ b/proxy/http/HttpTransact.cc
@@ -3729,7 +3729,7 @@ HttpTransact::handle_server_connection_not_open(State *s)
 ink_assert(s->cache_info.object_read != nullptr);
 ink_assert(s->cache_info.action == CACHE_DO_UPDATE || s->cache_info.action 
== CACHE_DO_SERVE);
 ink_assert(s->internal_msg_buffer == nullptr);
-
+s->source = SOURCE_CACHE;
 TxnDebug("http_trans", "[hscno] serving stale doc to client");
 build_response_from_cache(s, HTTP_WARNING_CODE_REVALIDATION_FAILED);
   } else {



[trafficserver] branch master updated: 7096: Synchronize Server Session Management and Network I/O (#7278)

2020-10-15 Thread sudheerv
This is an automated email from the ASF dual-hosted git repository.

sudheerv 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 a2d1515  7096: Synchronize Server Session Management and Network I/O 
(#7278)
a2d1515 is described below

commit a2d15151a5c1a69a3826e086ac497a94a4bfa7ea
Author: Sudheer Vinukonda 
AuthorDate: Thu Oct 15 17:03:36 2020 -0700

7096: Synchronize Server Session Management and Network I/O (#7278)

1. Session Acquisition with global session pools - Ensure that
the continuation and mutex is preserved through the entire session
context migration mechanism until the SM is attached to the new VC
2. Session Release - Delay clearing of read and write io buffers
to protect against race between do_io_close and net_read_io
3. Fix dangling ssl->vc reference for TLS Session Resumption
---
 iocore/net/I_NetVConnection.h | 11 +++
 iocore/net/P_UnixNetVConnection.h |  3 ++
 iocore/net/SSLNetVConnection.cc   |  2 --
 iocore/net/SSLUtils.cc|  2 ++
 iocore/net/TLSSessionResumptionSupport.cc |  6 
 iocore/net/TLSSessionResumptionSupport.h  |  1 +
 iocore/net/UnixNetVConnection.cc  | 54 ---
 proxy/http/Http1ServerSession.cc  |  7 ++--
 proxy/http/HttpSM.cc  | 11 +--
 proxy/http/HttpSessionManager.cc  | 27 
 10 files changed, 92 insertions(+), 32 deletions(-)

diff --git a/iocore/net/I_NetVConnection.h b/iocore/net/I_NetVConnection.h
index 0609e18..fac5762 100644
--- a/iocore/net/I_NetVConnection.h
+++ b/iocore/net/I_NetVConnection.h
@@ -387,6 +387,12 @@ public:
   */
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override = 
0;
 
+  virtual Continuation *
+  read_vio_cont()
+  {
+return nullptr;
+  }
+
   /**
 Initiates write. Thread-safe, may be called when not handling
 an event from the NetVConnection, or the NetVConnection creation
@@ -423,6 +429,11 @@ public:
   */
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override = 0;
 
+  virtual Continuation *
+  write_vio_cont()
+  {
+return nullptr;
+  }
   /**
 Closes the vconnection. A state machine MUST call do_io_close()
 when it has finished with a VConnection. do_io_close() indicates
diff --git a/iocore/net/P_UnixNetVConnection.h 
b/iocore/net/P_UnixNetVConnection.h
index cd94178..1d61200 100644
--- a/iocore/net/P_UnixNetVConnection.h
+++ b/iocore/net/P_UnixNetVConnection.h
@@ -111,6 +111,9 @@ public:
   VIO *do_io_read(Continuation *c, int64_t nbytes, MIOBuffer *buf) override;
   VIO *do_io_write(Continuation *c, int64_t nbytes, IOBufferReader *buf, bool 
owner = false) override;
 
+  Continuation *read_vio_cont() override;
+  Continuation *write_vio_cont() override;
+
   bool get_data(int id, void *data) override;
 
   Action *send_OOB(Continuation *cont, char *buf, int len) override;
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index f4f656d..ff39b45 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -212,7 +212,6 @@ make_ssl_connection(SSL_CTX *ctx, SSLNetVConnection *netvc)
 }
 
 SSLNetVCAttach(ssl, netvc);
-TLSSessionResumptionSupport::bind(ssl, netvc);
   }
 
   return ssl;
@@ -1821,7 +1820,6 @@ SSLNetVConnection::populate(Connection , Continuation 
*c, void *arg)
 
   sslHandshakeStatus = SSL_HANDSHAKE_DONE;
   SSLNetVCAttach(this->ssl, this);
-  TLSSessionResumptionSupport::bind(this->ssl, this);
   return EVENT_DONE;
 }
 
diff --git a/iocore/net/SSLUtils.cc b/iocore/net/SSLUtils.cc
index 442aec3..79be614 100644
--- a/iocore/net/SSLUtils.cc
+++ b/iocore/net/SSLUtils.cc
@@ -1700,12 +1700,14 @@ void
 SSLNetVCAttach(SSL *ssl, SSLNetVConnection *vc)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, vc);
+  TLSSessionResumptionSupport::bind(ssl, vc);
 }
 
 void
 SSLNetVCDetach(SSL *ssl)
 {
   SSL_set_ex_data(ssl, ssl_vc_index, nullptr);
+  TLSSessionResumptionSupport::unbind(ssl);
 }
 
 SSLNetVConnection *
diff --git a/iocore/net/TLSSessionResumptionSupport.cc 
b/iocore/net/TLSSessionResumptionSupport.cc
index 8935c99..ab6f38e 100644
--- a/iocore/net/TLSSessionResumptionSupport.cc
+++ b/iocore/net/TLSSessionResumptionSupport.cc
@@ -75,6 +75,12 @@ TLSSessionResumptionSupport::bind(SSL *ssl, 
TLSSessionResumptionSupport *srs)
   SSL_set_ex_data(ssl, _ex_data_index, srs);
 }
 
+void
+TLSSessionResumptionSupport::unbind(SSL *ssl)
+{
+  SSL_set_ex_data(ssl, _ex_data_index, nullptr);
+}
+
 int
 TLSSessionResumptionSupport::processSessionTicket(SSL *ssl, unsigned char 
*keyname, unsigned char *iv, EVP_CIPHER_CTX *cipher_ctx,
   HMAC_CTX *hctx, int enc)
diff --git a/iocore/net/TLSSessionResumptionSupport.h 

[trafficserver] branch master updated (82966c6 -> afefa73)

2020-10-15 Thread amc
This is an automated email from the ASF dual-hosted git repository.

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


from 82966c6  Add support for a new (TSMgmtDataTypeGet) mgmt API function 
to retrieve the record data type (#7221)
 add afefa73  HostDB: remove unused field in HostDBApplicationInfo, and 
update remaining types in http_data to fix broken padding. (#7264)

No new revisions were added by this update.

Summary of changes:
 iocore/hostdb/HostDB.cc   |  4 
 iocore/hostdb/I_HostDBProcessor.h | 49 +--
 proxy/http/HttpTransact.h |  8 +++
 3 files changed, 35 insertions(+), 26 deletions(-)



[trafficserver] branch master updated (f033304 -> 82966c6)

2020-10-15 Thread rrm
This is an automated email from the ASF dual-hosted git repository.

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


from f033304  Fix example in default sni.yaml configuration. (#7277)
 add 82966c6  Add support for a new (TSMgmtDataTypeGet) mgmt API function 
to retrieve the record data type (#7221)

No new revisions were added by this update.

Summary of changes:
 ...MimeHdrCopy.en.rst => TSMgmtDataTypeGet.en.rst} | 26 +-
 include/ts/ts.h|  2 ++
 src/traffic_server/InkAPI.cc   |  6 +
 src/traffic_server/InkAPITest.cc   | 16 +
 4 files changed, 39 insertions(+), 11 deletions(-)
 copy doc/developer-guide/api/functions/{TSMimeHdrCopy.en.rst => 
TSMgmtDataTypeGet.en.rst} (62%)



[trafficserver] branch master updated (233f991 -> f033304)

2020-10-15 Thread amc
This is an automated email from the ASF dual-hosted git repository.

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


from 233f991  Fix proxy.process.http.current_client_transactions (#7258)
 add f033304  Fix example in default sni.yaml configuration. (#7277)

No new revisions were added by this update.

Summary of changes:
 configs/sni.yaml.default | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



[trafficserver] branch master updated (233f991 -> f033304)

2020-10-15 Thread amc
This is an automated email from the ASF dual-hosted git repository.

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


from 233f991  Fix proxy.process.http.current_client_transactions (#7258)
 add f033304  Fix example in default sni.yaml configuration. (#7277)

No new revisions were added by this update.

Summary of changes:
 configs/sni.yaml.default | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



[trafficserver] branch master updated (233f991 -> f033304)

2020-10-15 Thread amc
This is an automated email from the ASF dual-hosted git repository.

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


from 233f991  Fix proxy.process.http.current_client_transactions (#7258)
 add f033304  Fix example in default sni.yaml configuration. (#7277)

No new revisions were added by this update.

Summary of changes:
 configs/sni.yaml.default | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



[trafficserver] branch master updated (233f991 -> f033304)

2020-10-15 Thread amc
This is an automated email from the ASF dual-hosted git repository.

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


from 233f991  Fix proxy.process.http.current_client_transactions (#7258)
 add f033304  Fix example in default sni.yaml configuration. (#7277)

No new revisions were added by this update.

Summary of changes:
 configs/sni.yaml.default | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



[trafficserver] branch master updated (233f991 -> f033304)

2020-10-15 Thread amc
This is an automated email from the ASF dual-hosted git repository.

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


from 233f991  Fix proxy.process.http.current_client_transactions (#7258)
 add f033304  Fix example in default sni.yaml configuration. (#7277)

No new revisions were added by this update.

Summary of changes:
 configs/sni.yaml.default | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)



[trafficserver] branch master updated (9499ca9 -> 233f991)

2020-10-15 Thread shinrich
This is an automated email from the ASF dual-hosted git repository.

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


from 9499ca9  Add AuTest for HTTP/2 Graceful Shutdown (#7271)
 add 233f991  Fix proxy.process.http.current_client_transactions (#7258)

No new revisions were added by this update.

Summary of changes:
 proxy/ProxyTransaction.cc| 23 ---
 proxy/ProxyTransaction.h |  4 ++--
 proxy/http/Http1ClientSession.cc | 15 +--
 proxy/http/Http1Transaction.cc   | 18 ++
 proxy/http/HttpSM.cc |  1 +
 proxy/http2/Http2Stream.cc   |  5 +++--
 proxy/http3/Http3Transaction.cc  |  2 +-
 7 files changed, 30 insertions(+), 38 deletions(-)