You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by du...@apache.org on 2019/02/11 16:30:18 UTC
[trafficserver] branch master updated: ssl handshake fix
This is an automated email from the ASF dual-hosted git repository.
duke8253 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 059e92a ssl handshake fix
059e92a is described below
commit 059e92a2a717a6d44fe553c82f8faf83ca7bcace
Author: Fei Deng <du...@gmail.com>
AuthorDate: Fri Feb 8 14:26:32 2019 -0600
ssl handshake fix
---
iocore/net/SSLNetVConnection.cc | 7 +++++++
src/traffic_server/traffic_server.cc | 5 +++++
2 files changed, 12 insertions(+)
diff --git a/iocore/net/SSLNetVConnection.cc b/iocore/net/SSLNetVConnection.cc
index 86cc813..14712ee 100644
--- a/iocore/net/SSLNetVConnection.cc
+++ b/iocore/net/SSLNetVConnection.cc
@@ -73,6 +73,8 @@ void SSL_set0_rbio(SSL *ssl, BIO *rbio);
ClassAllocator<SSLNetVConnection> sslNetVCAllocator("sslNetVCAllocator");
+bool stop_ssl_handshake = false;
+
namespace
{
/// Callback to get two locks.
@@ -937,9 +939,14 @@ SSLNetVConnection::free(EThread *t)
THREAD_FREE(this, sslNetVCAllocator, t);
}
}
+
int
SSLNetVConnection::sslStartHandShake(int event, int &err)
{
+ if (stop_ssl_handshake) {
+ Debug("ssl", "Stopping handshake due to server shutting down.");
+ return EVENT_ERROR;
+ }
if (sslHandshakeBeginTime == 0) {
sslHandshakeBeginTime = Thread::get_hrtime();
// net_activity will not be triggered until after the handshake
diff --git a/src/traffic_server/traffic_server.cc b/src/traffic_server/traffic_server.cc
index 712328b..2b9eaaa 100644
--- a/src/traffic_server/traffic_server.cc
+++ b/src/traffic_server/traffic_server.cc
@@ -173,6 +173,9 @@ static int delay_listen_for_cache_p;
// Keeps track if the server is in draining state, follows the proxy.node.config.draining metric
bool ts_is_draining = false;
+// Flag to stop ssl handshakes during shutdown.
+extern bool stop_ssl_handshake;
+
AppVersionInfo appVersionInfo; // Build info for this application
static ArgumentDescription argument_descriptions[] = {
@@ -222,6 +225,8 @@ struct AutoStopCont : public Continuation {
int
mainEvent(int /* event */, Event * /* e */)
{
+ stop_ssl_handshake = true;
+
APIHook *hook = lifecycle_hooks->get(TS_LIFECYCLE_SHUTDOWN_HOOK);
while (hook) {
SCOPED_MUTEX_LOCK(lock, hook->m_cont->mutex, this_ethread());