You've already forked linux-packaging-mono
Imported Upstream version 4.8.0.309
Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
This commit is contained in:
parent
ee1447783b
commit
94b2861243
@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
@ -9,6 +10,9 @@ namespace MonoTests.System.Net.Sockets
|
||||
public class SocketAcceptAsyncTest
|
||||
{
|
||||
[Test]
|
||||
#if FEATURE_NO_BSD_SOCKETS
|
||||
[ExpectedException (typeof (PlatformNotSupportedException))]
|
||||
#endif
|
||||
public void AcceptAsyncShouldUseAcceptSocketFromEventArgs()
|
||||
{
|
||||
var readyEvent = new ManualResetEvent(false);
|
||||
@ -18,27 +22,40 @@ namespace MonoTests.System.Net.Sockets
|
||||
var serverSocket = new Socket(
|
||||
AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
Socket acceptedSocket = null;
|
||||
|
||||
Exception ex = null;
|
||||
ThreadPool.QueueUserWorkItem(_ =>
|
||||
{
|
||||
listenSocket.Bind(new IPEndPoint(IPAddress.Loopback, 0));
|
||||
listenSocket.Listen(1);
|
||||
SocketAsyncEventArgs asyncEventArgs;
|
||||
try {
|
||||
listenSocket.Bind(new IPEndPoint(IPAddress.Loopback, 0));
|
||||
listenSocket.Listen(1);
|
||||
|
||||
var asyncEventArgs = new SocketAsyncEventArgs {AcceptSocket = serverSocket};
|
||||
asyncEventArgs.Completed += (s, e) =>
|
||||
{
|
||||
acceptedSocket = e.AcceptSocket;
|
||||
mainEvent.Set();
|
||||
};
|
||||
asyncEventArgs = new SocketAsyncEventArgs {AcceptSocket = serverSocket};
|
||||
asyncEventArgs.Completed += (s, e) =>
|
||||
{
|
||||
acceptedSocket = e.AcceptSocket;
|
||||
mainEvent.Set();
|
||||
};
|
||||
|
||||
readyEvent.Set();
|
||||
|
||||
if (listenSocket.AcceptAsync(asyncEventArgs))
|
||||
} catch (Exception e) {
|
||||
ex = e;
|
||||
return;
|
||||
acceptedSocket = asyncEventArgs.AcceptSocket;
|
||||
mainEvent.Set();
|
||||
} finally {
|
||||
readyEvent.Set();
|
||||
}
|
||||
|
||||
try {
|
||||
if (listenSocket.AcceptAsync(asyncEventArgs))
|
||||
return;
|
||||
acceptedSocket = asyncEventArgs.AcceptSocket;
|
||||
mainEvent.Set();
|
||||
} catch (Exception e) {
|
||||
ex = e;
|
||||
}
|
||||
});
|
||||
Assert.IsTrue(readyEvent.WaitOne(1500));
|
||||
if (ex != null)
|
||||
throw ex;
|
||||
|
||||
var clientSocket = new Socket(
|
||||
AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||
|
Reference in New Issue
Block a user