diff options
author | Yash Tibrewal <yashkt@google.com> | 2018-10-25 12:30:46 -0700 |
---|---|---|
committer | Yash Tibrewal <yashkt@google.com> | 2018-10-25 12:30:46 -0700 |
commit | 07504e66f321744ad76254c9be5a655edb943813 (patch) | |
tree | 312b693fd9fc630dabbf7d13e53d7caf07a9af24 /src/core/lib/iomgr/tcp_client_custom.cc | |
parent | cad9be088920b6e02a91d21a78f0e98d8c8d9f20 (diff) |
Don't unnecessarily create exec_ctx
Diffstat (limited to 'src/core/lib/iomgr/tcp_client_custom.cc')
-rw-r--r-- | src/core/lib/iomgr/tcp_client_custom.cc | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/core/lib/iomgr/tcp_client_custom.cc b/src/core/lib/iomgr/tcp_client_custom.cc index 9389861d07..73344b18d8 100644 --- a/src/core/lib/iomgr/tcp_client_custom.cc +++ b/src/core/lib/iomgr/tcp_client_custom.cc @@ -81,9 +81,8 @@ static void on_alarm(void* acp, grpc_error* error) { } } -static void custom_connect_callback(grpc_custom_socket* socket, - grpc_error* error) { - grpc_core::ExecCtx exec_ctx; +static void custom_connect_callback_internal(grpc_custom_socket* socket, + grpc_error* error) { grpc_custom_tcp_connect* connect = socket->connector; int done; grpc_closure* closure = connect->closure; @@ -100,6 +99,18 @@ static void custom_connect_callback(grpc_custom_socket* socket, GRPC_CLOSURE_SCHED(closure, error); } +static void custom_connect_callback(grpc_custom_socket* socket, + grpc_error* error) { + if (grpc_core::ExecCtx::Get() == nullptr) { + /* If we are being run on a thread which does not have an exec_ctx created + * yet, we should create one. */ + grpc_core::ExecCtx exec_ctx; + custom_connect_callback_internal(socket, error); + } else { + custom_connect_callback_internal(socket, error); + } +} + static void tcp_connect(grpc_closure* closure, grpc_endpoint** ep, grpc_pollset_set* interested_parties, const grpc_channel_args* channel_args, |