[trafficserver] branch 8.1.x updated: Fix truncated reponse on HTTP/2 graceful shutdown (#7267)
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
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
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)
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
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)
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)
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)
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)
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)
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
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)
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)
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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
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
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)
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)
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)
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)
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)
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
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)
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
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
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
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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(-)