Disable SIGPIPE on send()ing to a Socket on OS X. #131
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.
Previously,
std.socket
code assumed thatMSG_NOSIGNAL
existed on all platforms, which is not the case –std.c.osx.socket
actually has a comment saying »Not defined in OS X, but we'll use them anyway«. This led toSocket.send()
raisingSIGPIPE
on OS X if the peer had already closed the connection.With this commit,
std.socket
sets theSO_NOSIGPIPE
socket option on systems that support it for the same effect asMSG_NOSIGNAL
on Linux.Strictly speaking, removing the
NOSIGNAL
SocketFlag
is a breaking API change, but I do not think there is any code actually using it, as it has always been set implicitly anyway.