New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 602316 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Apr 2016
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 3
Type: Bug



Sign in to add a comment

CronetBidirectionalStream's last write may not have a corresponding onWriteCompleted

Project Member Reported by xunji...@chromium.org, Apr 11 2016

Issue description

If last write completes after read side is closed, we won't post a onWriteCompleted call to the executor, because we do an early return when maybeSucceedLocked() is true.

Should we not do early return here?

CronetBidirectionalStream.java:

    private final class OnWriteCompletedRunnable implements Runnable {
        // Buffer passed back from current invocation of onWriteCompleted.
        ByteBuffer mByteBuffer;
        // End of stream flag from current call to write.
        boolean mEndOfStream;

        @Override
        public void run() {
            try {
                // Null out mByteBuffer, to pass buffer ownership to callback or release if done.
                ByteBuffer buffer = mByteBuffer;
                mByteBuffer = null;
                synchronized (mNativeStreamLock) {
                    if (isDoneLocked()) {
                        return;
                    }
                    if (mEndOfStream) {
                        mWriteState = State.WRITING_DONE;
                        if (maybeSucceedLocked()) {
                            return;
                        }
                    } else {
                        mWriteState = State.WAITING_FOR_WRITE;
                    }
                }
                mCallback.onWriteCompleted(CronetBidirectionalStream.this, mResponseInfo, buffer);
            } catch (Exception e) {
                onCallbackException(e);
            }
        }
    }

 
Owner: xunji...@chromium.org
Status: Started (was: Untriaged)
Will be fixed together in https://codereview.chromium.org/1856073002/
Status: Fixed (was: Started)

Sign in to add a comment