handle EPROTOTYPE on OSX (dotnet/corefx#37208)
authorTomas Weinfurt <tweinfurt@yahoo.com>
Wed, 1 May 2019 02:05:55 +0000 (19:05 -0700)
committerStephen Toub <stoub@microsoft.com>
Wed, 1 May 2019 02:05:55 +0000 (22:05 -0400)
Commit migrated from https://github.com/dotnet/corefx/commit/dda3289ce64a68613057758f53c20cc4768548de

src/libraries/Native/Unix/System.Native/pal_networking.c

index b95346b..0412144 100644 (file)
@@ -1268,7 +1268,12 @@ int32_t SystemNative_SendMessage(intptr_t socket, MessageHeader* messageHeader,
     ConvertMessageHeaderToMsghdr(&header, messageHeader, fd);
 
     ssize_t res;
+#if defined(__APPLE__) && __APPLE__
+    // possible OSX kernel bug:  #31927
+    while ((res = sendmsg(fd, &header, socketFlags)) < 0 && (errno == EINTR || errno == EPROTOTYPE));
+#else
     while ((res = sendmsg(fd, &header, socketFlags)) < 0 && errno == EINTR);
+#endif
     if (res != -1)
     {
         *sent = res;