Merge pull request #2006 from steffen-kiess/posix-sockets-2
[mono.git] / mcs / class / Mono.Posix / Test / Mono.Unix.Native / SocketTest.cs
index aac0a58a688e93000bacc99974f94903b3177bb4..d8db4d2b30cfa0fc33ef62ec1281f07bac132a76 100644 (file)
@@ -146,15 +146,19 @@ namespace MonoTests.Mono.Unix.Native
                public void SockOpt ()
                {
                        WithSockets (UnixAddressFamily.AF_UNIX, UnixSocketType.SOCK_STREAM, 0, (so1, so2) => {
+                               int value;
+                               if (Syscall.getsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_REUSEADDR, out value) < 0)
+                                       UnixMarshal.ThrowExceptionForLastError ();
+                               Assert.AreEqual (0, value);
+
                                // Set SO_REUSEADDR to 1
                                if (Syscall.setsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_REUSEADDR, 1) < 0)
                                        UnixMarshal.ThrowExceptionForLastError ();
 
                                // Get and check SO_REUSEADDR
-                               int value;
                                if (Syscall.getsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_REUSEADDR, out value) < 0)
                                        UnixMarshal.ThrowExceptionForLastError ();
-                               Assert.AreEqual (value, 1);
+                               Assert.AreNotEqual (0, value);
 
                                // Set SO_REUSEADDR to 0
                                if (Syscall.setsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_REUSEADDR, new byte[10], 4) < 0)
@@ -187,7 +191,9 @@ namespace MonoTests.Mono.Unix.Native
                                Linger value;
                                if (Syscall.getsockopt (so1, UnixSocketProtocol.SOL_SOCKET, UnixSocketOptionName.SO_LINGER, out value) < 0)
                                        UnixMarshal.ThrowExceptionForLastError ();
-                               Assert.AreEqual (linger, value);
+                               if (value.l_onoff == 0)
+                                       Assert.Fail ("Linger not enabled");
+                               Assert.AreEqual (linger.l_linger, value.l_linger);
                        });
                }