private bool HandleCompleteWriteError(Ring ring, int result)
        {
            var err = -result;

            if (err == EAGAIN || err == EWOULDBLOCK || err == EINTR)
            {
                Write(ring);
                return(true);
            }

            if (HasFlag(ConnectionState.WriteCancelled) && err == ECANCELED)
            {
                return(false);
            }

            Exception ex;

            if (err == ECONNRESET)
            {
                ex = new ErrnoException(err);
                ex = new ConnectionResetException(ex.Message, ex);
            }
            else
            {
                ex = new ErrnoException(err);
            }

            CompleteOutbound(ring, ex);
            return(false);
        }
Example #2
0
        // Returns whether the read handles are still needed
        private bool HandleCompleteReadError(Ring ring, int result)
        {
            if (result == 0)
            {
                // EOF
                CompleteInbound(ring, null);
                return(false);
            }

            var err = -result;

            if (err == EAGAIN || err == EWOULDBLOCK || err == EINTR)
            {
                Read(ring);
                return(true);
            }

            if (HasFlag(ConnectionState.ReadCancelled) && err == ECANCELED)
            {
                return(false);
            }

            Exception ex;

            if (err == ECONNRESET)
            {
                ex = new ErrnoException(ECONNRESET);
                ex = new ConnectionResetException(ex.Message, ex);
            }
            else
            {
                ex = new ErrnoException(err);
            }

            CompleteInbound(ring, ex);
            return(false);
        }