Merge "Temporary hack to fix TLS bug." into cobalt-v1.6.x
diff --git a/BUILD.gn b/BUILD.gn
index 9b19967..064096d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -12,9 +12,13 @@
     ".",
     "include/",
   ]
-  defines = [ "GRPC_USE_PROTO_LITE" ]
+  defines = [
+    "GRPC_USE_PROTO_LITE",
+  ]
 }
 
+
+
 source_set("gpr") {
   sources = [
     "include/grpc/impl/codegen/atm.h",
@@ -119,10 +123,16 @@
     "src/core/lib/support/tmpfile_windows.c",
     "src/core/lib/support/wrap_memcpy.c",
   ]
+  deps = [
+  ]
 
-  public_configs = [ ":grpc_config" ]
+  public_configs = [
+    ":grpc_config",
+  ]
 }
 
+
+
 source_set("grpc") {
   sources = [
     "include/grpc/byte_buffer.h",
@@ -235,7 +245,10 @@
     "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.c",
     "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.c",
     "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h",
+    "src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c",
     "src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.c",
+    "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.c",
+    "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h",
     "src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.c",
     "src/core/ext/filters/client_channel/resolver_factory.c",
     "src/core/ext/filters/client_channel/resolver_factory.h",
@@ -289,6 +302,7 @@
     "src/core/ext/transport/chttp2/transport/chttp2_plugin.c",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.c",
     "src/core/ext/transport/chttp2/transport/chttp2_transport.h",
+    "src/core/ext/transport/chttp2/transport/flow_control.c",
     "src/core/ext/transport/chttp2/transport/frame.h",
     "src/core/ext/transport/chttp2/transport/frame_data.c",
     "src/core/ext/transport/chttp2/transport/frame_data.h",
@@ -322,6 +336,9 @@
     "src/core/ext/transport/chttp2/transport/varint.c",
     "src/core/ext/transport/chttp2/transport/varint.h",
     "src/core/ext/transport/chttp2/transport/writing.c",
+    "src/core/ext/transport/inproc/inproc_plugin.c",
+    "src/core/ext/transport/inproc/inproc_transport.c",
+    "src/core/ext/transport/inproc/inproc_transport.h",
     "src/core/lib/channel/channel_args.c",
     "src/core/lib/channel/channel_args.h",
     "src/core/lib/channel/channel_stack.c",
@@ -341,6 +358,8 @@
     "src/core/lib/compression/compression.c",
     "src/core/lib/compression/message_compress.c",
     "src/core/lib/compression/message_compress.h",
+    "src/core/lib/compression/stream_compression.c",
+    "src/core/lib/compression/stream_compression.h",
     "src/core/lib/debug/trace.c",
     "src/core/lib/debug/trace.h",
     "src/core/lib/http/format_request.c",
@@ -382,6 +401,10 @@
     "src/core/lib/iomgr/exec_ctx.h",
     "src/core/lib/iomgr/executor.c",
     "src/core/lib/iomgr/executor.h",
+    "src/core/lib/iomgr/gethostname.h",
+    "src/core/lib/iomgr/gethostname_fallback.c",
+    "src/core/lib/iomgr/gethostname_host_name_max.c",
+    "src/core/lib/iomgr/gethostname_sysconf.c",
     "src/core/lib/iomgr/iocp_windows.c",
     "src/core/lib/iomgr/iocp_windows.h",
     "src/core/lib/iomgr/iomgr.c",
@@ -390,6 +413,7 @@
     "src/core/lib/iomgr/iomgr_posix.c",
     "src/core/lib/iomgr/iomgr_posix.h",
     "src/core/lib/iomgr/iomgr_uv.c",
+    "src/core/lib/iomgr/iomgr_uv.h",
     "src/core/lib/iomgr/iomgr_windows.c",
     "src/core/lib/iomgr/is_epollexclusive_available.c",
     "src/core/lib/iomgr/is_epollexclusive_available.h",
@@ -397,6 +421,7 @@
     "src/core/lib/iomgr/load_file.h",
     "src/core/lib/iomgr/lockfree_event.c",
     "src/core/lib/iomgr/lockfree_event.h",
+    "src/core/lib/iomgr/nameser.h",
     "src/core/lib/iomgr/network_status_tracker.c",
     "src/core/lib/iomgr/network_status_tracker.h",
     "src/core/lib/iomgr/polling_entity.c",
@@ -479,11 +504,6 @@
     "src/core/lib/iomgr/wakeup_fd_pipe.h",
     "src/core/lib/iomgr/wakeup_fd_posix.c",
     "src/core/lib/iomgr/wakeup_fd_posix.h",
-    "src/core/lib/iomgr/workqueue.h",
-    "src/core/lib/iomgr/workqueue_uv.c",
-    "src/core/lib/iomgr/workqueue_uv.h",
-    "src/core/lib/iomgr/workqueue_windows.c",
-    "src/core/lib/iomgr/workqueue_windows.h",
     "src/core/lib/json/json.c",
     "src/core/lib/json/json.h",
     "src/core/lib/json/json_common.h",
@@ -546,6 +566,7 @@
     "src/core/lib/slice/slice_string_helpers.c",
     "src/core/lib/slice/slice_string_helpers.h",
     "src/core/lib/surface/alarm.c",
+    "src/core/lib/surface/alarm_internal.h",
     "src/core/lib/surface/api_trace.c",
     "src/core/lib/surface/api_trace.h",
     "src/core/lib/surface/byte_buffer.c",
@@ -609,6 +630,8 @@
     "src/core/plugin_registry/grpc_plugin_registry.c",
     "src/core/tsi/fake_transport_security.c",
     "src/core/tsi/fake_transport_security.h",
+    "src/core/tsi/gts_transport_security.c",
+    "src/core/tsi/gts_transport_security.h",
     "src/core/tsi/ssl_transport_security.c",
     "src/core/tsi/ssl_transport_security.h",
     "src/core/tsi/ssl_types.h",
@@ -616,15 +639,20 @@
     "src/core/tsi/transport_security.h",
     "src/core/tsi/transport_security_adapter.c",
     "src/core/tsi/transport_security_adapter.h",
+    "src/core/tsi/transport_security_grpc.c",
+    "src/core/tsi/transport_security_grpc.h",
     "src/core/tsi/transport_security_interface.h",
   ]
   deps = [
-    ":gpr",
     "//third_party/boringssl",
     "//third_party/cares",
     "//third_party/zlib",
+    ":gpr",
   ]
-  public_configs = [ ":grpc_config" ]
+
+  public_configs = [
+    ":grpc_config",
+  ]
 }
 
 source_set("nanopb") {
@@ -718,6 +746,12 @@
     "include/grpc++/support/stub_options.h",
     "include/grpc++/support/sync_stream.h",
     "include/grpc++/support/time.h",
+    "include/grpc/byte_buffer.h",
+    "include/grpc/byte_buffer_reader.h",
+    "include/grpc/compression.h",
+    "include/grpc/grpc.h",
+    "include/grpc/grpc_posix.h",
+    "include/grpc/grpc_security_constants.h",
     "include/grpc/impl/codegen/atm.h",
     "include/grpc/impl/codegen/atm_gcc_atomic.h",
     "include/grpc/impl/codegen/atm_gcc_sync.h",
@@ -737,6 +771,171 @@
     "include/grpc/impl/codegen/sync_generic.h",
     "include/grpc/impl/codegen/sync_posix.h",
     "include/grpc/impl/codegen/sync_windows.h",
+    "include/grpc/load_reporting.h",
+    "include/grpc/slice.h",
+    "include/grpc/slice_buffer.h",
+    "include/grpc/status.h",
+    "include/grpc/support/alloc.h",
+    "include/grpc/support/atm.h",
+    "include/grpc/support/atm_gcc_atomic.h",
+    "include/grpc/support/atm_gcc_sync.h",
+    "include/grpc/support/atm_windows.h",
+    "include/grpc/support/avl.h",
+    "include/grpc/support/cmdline.h",
+    "include/grpc/support/cpu.h",
+    "include/grpc/support/histogram.h",
+    "include/grpc/support/host_port.h",
+    "include/grpc/support/log.h",
+    "include/grpc/support/log_windows.h",
+    "include/grpc/support/port_platform.h",
+    "include/grpc/support/string_util.h",
+    "include/grpc/support/subprocess.h",
+    "include/grpc/support/sync.h",
+    "include/grpc/support/sync_generic.h",
+    "include/grpc/support/sync_posix.h",
+    "include/grpc/support/sync_windows.h",
+    "include/grpc/support/thd.h",
+    "include/grpc/support/time.h",
+    "include/grpc/support/tls.h",
+    "include/grpc/support/tls_gcc.h",
+    "include/grpc/support/tls_msvc.h",
+    "include/grpc/support/tls_pthread.h",
+    "include/grpc/support/useful.h",
+    "include/grpc/support/workaround_list.h",
+    "src/core/ext/transport/inproc/inproc_transport.h",
+    "src/core/lib/channel/channel_args.h",
+    "src/core/lib/channel/channel_stack.h",
+    "src/core/lib/channel/channel_stack_builder.h",
+    "src/core/lib/channel/connected_channel.h",
+    "src/core/lib/channel/context.h",
+    "src/core/lib/channel/handshaker.h",
+    "src/core/lib/channel/handshaker_factory.h",
+    "src/core/lib/channel/handshaker_registry.h",
+    "src/core/lib/compression/algorithm_metadata.h",
+    "src/core/lib/compression/message_compress.h",
+    "src/core/lib/compression/stream_compression.h",
+    "src/core/lib/debug/trace.h",
+    "src/core/lib/http/format_request.h",
+    "src/core/lib/http/httpcli.h",
+    "src/core/lib/http/parser.h",
+    "src/core/lib/iomgr/closure.h",
+    "src/core/lib/iomgr/combiner.h",
+    "src/core/lib/iomgr/endpoint.h",
+    "src/core/lib/iomgr/endpoint_pair.h",
+    "src/core/lib/iomgr/error.h",
+    "src/core/lib/iomgr/error_internal.h",
+    "src/core/lib/iomgr/ev_epoll1_linux.h",
+    "src/core/lib/iomgr/ev_epoll_limited_pollers_linux.h",
+    "src/core/lib/iomgr/ev_epoll_thread_pool_linux.h",
+    "src/core/lib/iomgr/ev_epollex_linux.h",
+    "src/core/lib/iomgr/ev_epollsig_linux.h",
+    "src/core/lib/iomgr/ev_poll_posix.h",
+    "src/core/lib/iomgr/ev_posix.h",
+    "src/core/lib/iomgr/exec_ctx.h",
+    "src/core/lib/iomgr/executor.h",
+    "src/core/lib/iomgr/gethostname.h",
+    "src/core/lib/iomgr/iocp_windows.h",
+    "src/core/lib/iomgr/iomgr.h",
+    "src/core/lib/iomgr/iomgr_internal.h",
+    "src/core/lib/iomgr/iomgr_posix.h",
+    "src/core/lib/iomgr/iomgr_uv.h",
+    "src/core/lib/iomgr/is_epollexclusive_available.h",
+    "src/core/lib/iomgr/load_file.h",
+    "src/core/lib/iomgr/lockfree_event.h",
+    "src/core/lib/iomgr/nameser.h",
+    "src/core/lib/iomgr/network_status_tracker.h",
+    "src/core/lib/iomgr/polling_entity.h",
+    "src/core/lib/iomgr/pollset.h",
+    "src/core/lib/iomgr/pollset_set.h",
+    "src/core/lib/iomgr/pollset_set_windows.h",
+    "src/core/lib/iomgr/pollset_uv.h",
+    "src/core/lib/iomgr/pollset_windows.h",
+    "src/core/lib/iomgr/port.h",
+    "src/core/lib/iomgr/resolve_address.h",
+    "src/core/lib/iomgr/resource_quota.h",
+    "src/core/lib/iomgr/sockaddr.h",
+    "src/core/lib/iomgr/sockaddr_posix.h",
+    "src/core/lib/iomgr/sockaddr_utils.h",
+    "src/core/lib/iomgr/sockaddr_windows.h",
+    "src/core/lib/iomgr/socket_factory_posix.h",
+    "src/core/lib/iomgr/socket_mutator.h",
+    "src/core/lib/iomgr/socket_utils.h",
+    "src/core/lib/iomgr/socket_utils_posix.h",
+    "src/core/lib/iomgr/socket_windows.h",
+    "src/core/lib/iomgr/sys_epoll_wrapper.h",
+    "src/core/lib/iomgr/tcp_client.h",
+    "src/core/lib/iomgr/tcp_client_posix.h",
+    "src/core/lib/iomgr/tcp_posix.h",
+    "src/core/lib/iomgr/tcp_server.h",
+    "src/core/lib/iomgr/tcp_server_utils_posix.h",
+    "src/core/lib/iomgr/tcp_uv.h",
+    "src/core/lib/iomgr/tcp_windows.h",
+    "src/core/lib/iomgr/time_averaged_stats.h",
+    "src/core/lib/iomgr/timer.h",
+    "src/core/lib/iomgr/timer_generic.h",
+    "src/core/lib/iomgr/timer_heap.h",
+    "src/core/lib/iomgr/timer_manager.h",
+    "src/core/lib/iomgr/timer_uv.h",
+    "src/core/lib/iomgr/udp_server.h",
+    "src/core/lib/iomgr/unix_sockets_posix.h",
+    "src/core/lib/iomgr/wakeup_fd_cv.h",
+    "src/core/lib/iomgr/wakeup_fd_pipe.h",
+    "src/core/lib/iomgr/wakeup_fd_posix.h",
+    "src/core/lib/json/json.h",
+    "src/core/lib/json/json_common.h",
+    "src/core/lib/json/json_reader.h",
+    "src/core/lib/json/json_writer.h",
+    "src/core/lib/profiling/timers.h",
+    "src/core/lib/slice/b64.h",
+    "src/core/lib/slice/percent_encoding.h",
+    "src/core/lib/slice/slice_hash_table.h",
+    "src/core/lib/slice/slice_internal.h",
+    "src/core/lib/slice/slice_string_helpers.h",
+    "src/core/lib/support/arena.h",
+    "src/core/lib/support/atomic.h",
+    "src/core/lib/support/atomic_with_atm.h",
+    "src/core/lib/support/atomic_with_std.h",
+    "src/core/lib/support/backoff.h",
+    "src/core/lib/support/block_annotate.h",
+    "src/core/lib/support/env.h",
+    "src/core/lib/support/memory.h",
+    "src/core/lib/support/mpscq.h",
+    "src/core/lib/support/murmur_hash.h",
+    "src/core/lib/support/spinlock.h",
+    "src/core/lib/support/stack_lockfree.h",
+    "src/core/lib/support/string.h",
+    "src/core/lib/support/string_windows.h",
+    "src/core/lib/support/thd_internal.h",
+    "src/core/lib/support/time_precise.h",
+    "src/core/lib/support/tmpfile.h",
+    "src/core/lib/surface/alarm_internal.h",
+    "src/core/lib/surface/api_trace.h",
+    "src/core/lib/surface/call.h",
+    "src/core/lib/surface/call_test_only.h",
+    "src/core/lib/surface/channel.h",
+    "src/core/lib/surface/channel_init.h",
+    "src/core/lib/surface/channel_stack_type.h",
+    "src/core/lib/surface/completion_queue.h",
+    "src/core/lib/surface/completion_queue_factory.h",
+    "src/core/lib/surface/event_string.h",
+    "src/core/lib/surface/init.h",
+    "src/core/lib/surface/lame_client.h",
+    "src/core/lib/surface/server.h",
+    "src/core/lib/surface/validate_metadata.h",
+    "src/core/lib/transport/bdp_estimator.h",
+    "src/core/lib/transport/byte_stream.h",
+    "src/core/lib/transport/connectivity_state.h",
+    "src/core/lib/transport/error_utils.h",
+    "src/core/lib/transport/http2_errors.h",
+    "src/core/lib/transport/metadata.h",
+    "src/core/lib/transport/metadata_batch.h",
+    "src/core/lib/transport/pid_controller.h",
+    "src/core/lib/transport/service_config.h",
+    "src/core/lib/transport/static_metadata.h",
+    "src/core/lib/transport/status_conversion.h",
+    "src/core/lib/transport/timeout_encoding.h",
+    "src/core/lib/transport/transport.h",
+    "src/core/lib/transport/transport_impl.h",
     "src/cpp/client/channel_cc.cc",
     "src/cpp/client/client_context.cc",
     "src/cpp/client/create_channel.cc",
@@ -791,64 +990,82 @@
     "src/cpp/util/time_cc.cc",
   ]
   deps = [
-    ":grpc",
-    ":nanopb",
     "//third_party/boringssl",
     "//third_party/protobuf:protobuf_lite",
+    ":grpc",
+    ":gpr",
+    ":nanopb",
   ]
-  public_configs = [ ":grpc_config" ]
+
+  public_configs = [
+    ":grpc_config",
+  ]
 }
 
 # Only compile the plugin for the host architecture.
 if (current_toolchain == host_toolchain) {
-  source_set("grpc_plugin_support") {
-    sources = [
-      "include/grpc++/impl/codegen/config_protobuf.h",
-      "src/compiler/config.h",
-      "src/compiler/cpp_generator.cc",
-      "src/compiler/cpp_generator.h",
-      "src/compiler/cpp_generator_helpers.h",
-      "src/compiler/csharp_generator.cc",
-      "src/compiler/csharp_generator.h",
-      "src/compiler/csharp_generator_helpers.h",
-      "src/compiler/generator_helpers.h",
-      "src/compiler/node_generator.cc",
-      "src/compiler/node_generator.h",
-      "src/compiler/node_generator_helpers.h",
-      "src/compiler/objective_c_generator.cc",
-      "src/compiler/objective_c_generator.h",
-      "src/compiler/objective_c_generator_helpers.h",
-      "src/compiler/php_generator.cc",
-      "src/compiler/php_generator.h",
-      "src/compiler/php_generator_helpers.h",
-      "src/compiler/protobuf_plugin.h",
-      "src/compiler/python_generator.cc",
-      "src/compiler/python_generator.h",
-      "src/compiler/python_generator_helpers.h",
-      "src/compiler/python_private_generator.h",
-      "src/compiler/ruby_generator.cc",
-      "src/compiler/ruby_generator.h",
-      "src/compiler/ruby_generator_helpers-inl.h",
-      "src/compiler/ruby_generator_map-inl.h",
-      "src/compiler/ruby_generator_string-inl.h",
-      "src/compiler/schema_interface.h",
-    ]
-    deps = [
-      "//third_party/protobuf:protoc_lib",
-    ]
 
-    public_configs = [ ":grpc_config" ]
-  }
 
-  executable("grpc_cpp_plugin") {
-    sources = [
-      "src/compiler/cpp_plugin.cc",
-    ]
-    deps = [
-      ":grpc_plugin_support",
-      "//third_party/protobuf:protoc_lib",
-    ]
-    configs += [ "//third_party/protobuf:protobuf_config" ]
-    public_configs = [ ":grpc_config" ]
-  }
+source_set("grpc_plugin_support") {
+  sources = [
+    "include/grpc++/impl/codegen/config_protobuf.h",
+    "src/compiler/config.h",
+    "src/compiler/cpp_generator.cc",
+    "src/compiler/cpp_generator.h",
+    "src/compiler/cpp_generator_helpers.h",
+    "src/compiler/csharp_generator.cc",
+    "src/compiler/csharp_generator.h",
+    "src/compiler/csharp_generator_helpers.h",
+    "src/compiler/generator_helpers.h",
+    "src/compiler/node_generator.cc",
+    "src/compiler/node_generator.h",
+    "src/compiler/node_generator_helpers.h",
+    "src/compiler/objective_c_generator.cc",
+    "src/compiler/objective_c_generator.h",
+    "src/compiler/objective_c_generator_helpers.h",
+    "src/compiler/php_generator.cc",
+    "src/compiler/php_generator.h",
+    "src/compiler/php_generator_helpers.h",
+    "src/compiler/protobuf_plugin.h",
+    "src/compiler/python_generator.cc",
+    "src/compiler/python_generator.h",
+    "src/compiler/python_generator_helpers.h",
+    "src/compiler/python_private_generator.h",
+    "src/compiler/ruby_generator.cc",
+    "src/compiler/ruby_generator.h",
+    "src/compiler/ruby_generator_helpers-inl.h",
+    "src/compiler/ruby_generator_map-inl.h",
+    "src/compiler/ruby_generator_string-inl.h",
+    "src/compiler/schema_interface.h",
+  ]
+  deps = [
+    "//third_party/protobuf:protoc_lib",
+  ]
+
+  public_configs = [
+    ":grpc_config",
+  ]
 }
+
+}
+# Only compile the plugin for the host architecture.
+if (current_toolchain == host_toolchain) {
+
+executable("grpc_cpp_plugin") {
+  sources = [
+    "src/compiler/cpp_plugin.cc",
+  ]
+  deps = [
+    "//third_party/protobuf:protoc_lib",
+    ":grpc_plugin_support",
+  ]
+
+  configs += [
+    "//third_party/protobuf:protobuf_config",
+  ]
+  public_configs = [ ":grpc_config" ]
+}
+
+}
+
+