public void AcceptReceive ()
{
#if !MOONLIGHT
Socket acc_socket = null;
try {
if (result.AcceptSocket == null) {
acc_socket = result.Sock.Accept ();
} else {
acc_socket = result.AcceptSocket;
result.Sock.Accept (acc_socket);
}
} catch (Exception e) {
result.Complete (e);
return;
}
/* It seems the MS runtime
* special-cases 0-length requested
* receive data. See bug 464201.
*/
int total = 0;
if (result.Size > 0) {
try {
SocketError error;
total = acc_socket.Receive_nochecks (result.Buffer,
result.Offset,
result.Size,
result.SockFlags,
out error);
if (error != 0) {
result.Complete (new SocketException ((int) error));
return;
}
} catch (Exception e) {
result.Complete (e);
return;
}
}
result.Complete (acc_socket, total);
#endif
}