From: Subodh Iyengar Date: Tue, 20 Sep 2016 23:25:32 +0000 (-0700) Subject: Fix detaching from evb X-Git-Tag: v2016.09.26.00~8 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=992ac3ae3d854a6f30fa3d39d337ff1ef3c860ea;p=folly.git 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 --- 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 {