From 992ac3ae3d854a6f30fa3d39d337ff1ef3c860ea Mon Sep 17 00:00:00 2001 From: Subodh Iyengar Date: Tue, 20 Sep 2016 16:25:32 -0700 Subject: [PATCH] Fix detaching from evb Summary: When we attach and detach from the event base threads during connections in the case of SSL it could result in a crash while using TFO. When TFO was enabled connectTimeout_ was set, which was not detached. In the case when we would fall back from TFO in case TFO did not succeed, we would try and schedule a connect timeout again. However because we are now scheduled in a new evb thread, this would cause the scheduleTimeout to assert that it was not in the correct evb thread. This fixes the issue by attaching and detaching connect timeouts as well. Reviewed By: ngoyal Differential Revision: D3892490 fbshipit-source-id: 278c0b8029022144cd59366ceb0ce83f0a60a307 --- folly/io/async/AsyncSSLSocket.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/folly/io/async/AsyncSSLSocket.h b/folly/io/async/AsyncSSLSocket.h index 2e09935c..45fbaea4 100644 --- a/folly/io/async/AsyncSSLSocket.h +++ b/folly/io/async/AsyncSSLSocket.h @@ -479,11 +479,13 @@ class AsyncSSLSocket : public virtual AsyncSocket { virtual void attachEventBase(EventBase* eventBase) override { AsyncSocket::attachEventBase(eventBase); handshakeTimeout_.attachEventBase(eventBase); + connectionTimeout_.attachEventBase(eventBase); } virtual void detachEventBase() override { AsyncSocket::detachEventBase(); handshakeTimeout_.detachEventBase(); + connectionTimeout_.detachEventBase(); } virtual bool isDetachable() const override { -- 2.34.1