public Bytes[] ReadV() { if (tcpSession.CurrentState < TcpState.ESTABLISHED) { state = State.Closed; return(null); // connection closed } Bytes[] data = tcpSession.ReadV(); if (data == null) { if (tcpSession.CurrentState != TcpState.ESTABLISHED) { state = State.Closed; return(null); // connection closed } else { // Must be in the ROReadResult state. Here, there is // no ConnectionClosed message. state = State.Zombie; return(null); // no more data -> Zombie } } else { if (tcpSession.AckNow == true) { tcpSession.SendPacket(TcpFlags.ACK, false); } return(data); } }