* master: (27 commits)
Revert "Surface exceptions in gevent IO manager"
Fast-path for no-error case for grpc_error_get_status.
Fix multiprocessing example for MacOS.
Add example Python server using compression.
Update googletest version to v1.8.1
Hail mary.
Update Protobuf version
Also updated fedora 2.2 and 2.3 dockerfiles
Fix ios simulator failure
Pin bundler where needed
Resolve xcodebuild issue on Mac
Fix hard written port
Drop support for ruby < 2.3; update and unskip distrib tests
Unref unselected subchannels in Pick First.
fix run_one_test
More run_tests.py script fix
fix tests so that they run
Clang tidy
add tests for bad stream IDs
Another python fix.
...
For each client side call, we execute grpc_error_get_status; in the common case
that there is no error, we save roughly 30 instructions and a call to strlen.
A closer reading of the API for getsockopt revealed that we were
depending on an implementation detail of getsockopt on Linux. This
assumption breaks down on MacOS.
getsockopt merely guarantees that it will return on 0 in case of failure
and a value greater than 0 in case of success. There is no guarantee as
to *which* non-zero value you will receive. On Linux, it seems to be 1,
the value which was explicitly set. On MacOS, it seems to be the value
of the FLAG which was set, i.e. 512 for SO_REUSEPORT.
This commit ensures the check we use does not rely on either of these
implementation details.
Bazel builds of test/cpp/end2end:end2end_test were failing on Mac OS with v1.8.0 due to missing gtest symbols. The issue is not seen in v1.8.1. A WORKSPACE file was added to gtest repo in 1.8.1, so gtest.BUILD can be removed.