Repository: netty/netty
File: transport-classes-io_uring/src/main/java/io/netty/channel/uring/AbstractIoUringChannel.java (Java)

Code before:
                                // This was a "normal" read and the user did signal we should continue reading.
                                // Let's schedule the read now.
                                doBeginReadNow();
                            }
                        } else {
                            // The readComplete(...) was triggered by a multi-shot read. Because of this the state
                            // machine is a bit more complicated.
                            if (res == Native.ERRNO_ECANCELED_NEGATIVE) {
                                // The readComplete(...) was triggered because the previous read was cancelled.
                                // In this case we we need to check if the user did signal the desire to read again
                                // in the meantime. If this is the case we need to schedule the read to ensure
                                // we not stale.
                                if (pending) {
                                    doBeginReadNow();
                                }
                            } else if (!readPending) {
                                // Cancel the multi-shot read now as the user did not signal that we want to keep
                                // reading while we handle the completion event.
                                cancelOutstandingReads(registration, numOutstandingReads);
                            }
                        }
                    } else if (res == Native.ERRNO_ECANCELED_NEGATIVE) {
                        // The readComplete(...) was triggered because the previous read was cancelled.
                        // In this case we we need to check if the user did signal the desire to read again
                        // in the meantime. If this is the case we need to schedule the read to ensure
                        // we not stale.
                        if (pending) {
                            doBeginReadNow();
                        }
                        doBeginReadNow();
                    }
                } finally {
                    socketIsEmpty = false;
                    inReadComplete = false;
                }
            }
        }

        /**
         * Called once a read was completed.
         */
        protected abstract void readComplete0(byte op, int res, int flags, short data, int outstandingCompletes);

        /**
         * Called once POLLRDHUP event is ready to be processed
         */
        private void pollRdHup(int res) {
            ioState &= ~POLL_RDHUP_SCHEDULED;
            pollRdhupId = 0;
            if (res == Native.ERRNO_ECANCELED_NEGATIVE) {
                return;

Review comment (suggestion):
```suggestion
                        // we do not stall.
```

Code after:
                                // This was a "normal" read and the user did signal we should continue reading.
                                // Let's schedule the read now.
                                doBeginReadNow();
                            }
                        } else {
                            // The readComplete(...) was triggered by a multi-shot read. Because of this the state
                            // machine is a bit more complicated.
                            if (res == Native.ERRNO_ECANCELED_NEGATIVE) {
                                // The readComplete(...) was triggered because the previous read was cancelled.
                                // In this case we we need to check if the user did signal the desire to read again
                                // in the meantime. If this is the case we need to schedule the read to ensure
                                // we do not stall.
                                if (pending) {
                                    doBeginReadNow();
                                }
                            } else if (!readPending) {
                                // Cancel the multi-shot read now as the user did not signal that we want to keep
                                // reading while we handle the completion event.
                                cancelOutstandingReads(registration, numOutstandingReads);
                            }
                        }
                    } else if (res == Native.ERRNO_ECANCELED_NEGATIVE) {
                        // The readComplete(...) was triggered because the previous read was cancelled.
                        // In this case we we need to check if the user did signal the desire to read again
                        // in the meantime. If this is the case we need to schedule the read to ensure
                        // we do not stall.
                        if (pending) {
                            doBeginReadNow();
                        }
                        doBeginReadNow();
                    }
                } finally {
                    socketIsEmpty = false;
                    inReadComplete = false;
                }
            }
        }

        /**
         * Called once a read was completed.
         */
        protected abstract void readComplete0(byte op, int res, int flags, short data, int outstandingCompletes);

        /**
         * Called once POLLRDHUP event is ready to be processed
         */
        private void pollRdHup(int res) {
            ioState &= ~POLL_RDHUP_SCHEDULED;
            pollRdhupId = 0;
            if (res == Native.ERRNO_ECANCELED_NEGATIVE) {
                return;