CDRIVER-3823 ignore SIGPIPE on osx #716
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
MSG_NOSIGNAL
, the flag that we currently use to ignoreSIGPIPE
on POSIX systems, is not supported on OSX. Instead, OSX offers theSO_NOSIGPIPE
flag that can be set as a socket option before performing writes.I had asked @kmahar to test a different solution for ignoring
SIGPIPE
:signal(SIGPIPE, SIG_IGN);
Upon further research, this solution isn't ideal, because it ignores
SIGPIPE
for the entire program, including any user code running a level above the C driver. In the case that a user is interested inSIGPIPE
for some reason, setting the handler toSIG_IGN
like this would also captureSIGPIPE
in user code. TheSO_NOSIGPIPE
solution is less intrusive for a library like ours.