Example #1
0
        internal Socket UpdateAcceptSocket(Socket socket, EndPoint remoteEP, bool needCancelSelect) {
            //
            // Internal state of the socket is inherited from listener
            //
            socket.addressFamily    = addressFamily;
            socket.socketType       = socketType;
            socket.protocolType     = protocolType;
            socket.m_RightEndPoint  = m_RightEndPoint;
            socket.m_RemoteEndPoint = remoteEP;
            //
            // the socket is connected
            //
            socket.SetToConnected();
            //
            // if the socket is returned by an Endb), the socket might have
            // inherited the WSAEventSelect() call from the accepting socket.
            // we need to cancel this otherwise the socket will be in non-blocking
            // mode and we cannot force blocking mode using the ioctlsocket() in
            // Socket.set_Blocking(), since it fails returing 10022 as documented in MSDN.
            // (note that the m_AsyncEvent event will not be created in this case.
            //

            socket.willBlock = willBlock;
            if (needCancelSelect) {
                socket.UnsetAsyncEventSelect();
            }
            else {
                // We need to make sure the Socket is in the right blocking state
                // even if we don't have to call UnsetAsyncEventSelect
                socket.InternalSetBlocking(willBlock);
            }

            return socket;
        }
Example #2
0
 internal Socket UpdateAcceptSocket(Socket socket, EndPoint remoteEP, bool needCancelSelect)
 {
     socket.addressFamily = this.addressFamily;
       socket.socketType = this.socketType;
       socket.protocolType = this.protocolType;
       socket.m_RightEndPoint = this.m_RightEndPoint;
       socket.m_RemoteEndPoint = remoteEP;
       socket.SetToConnected();
       socket.willBlock = this.willBlock;
       if (needCancelSelect)
     socket.UnsetAsyncEventSelect();
       else
     socket.InternalSetBlocking(this.willBlock);
       return socket;
 }