Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(337)

Unified Diff: components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java

Issue 1777333002: [Cronet] Fix race in UploadDataStream.attachToRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: One more assert. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java
diff --git a/components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java b/components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java
index e03e97dde1463e8ce594a9b54d2bc6355fd0c5de..d0a72fa350b5993fcced5d1a59e6509dd2a5e92d 100644
--- a/components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java
+++ b/components/cronet/android/java/src/org/chromium/net/CronetUrlRequest.java
@@ -211,10 +211,15 @@ final class CronetUrlRequest implements UrlRequest {
"Requests with upload data must have a Content-Type.");
}
mStarted = true;
- mUploadDataStream.attachToRequest(this, mUrlRequestAdapter, new Runnable() {
+ mUploadDataStream.postTaskToExecutor(new Runnable() {
@Override
public void run() {
+ mUploadDataStream.initializeWithRequest(CronetUrlRequest.this);
synchronized (mUrlRequestAdapterLock) {
+ if (isDoneLocked()) {
+ return;
+ }
+ mUploadDataStream.attachNativeAdapterToRequest(mUrlRequestAdapter);
startInternalLocked();
}
}
@@ -234,6 +239,7 @@ final class CronetUrlRequest implements UrlRequest {
@GuardedBy("mUrlRequestAdapterLock")
private void startInternalLocked() {
+ // Caller is expected to ensure that request isn't done and mUrlRequestAdapter is valid.
xunjieli 2016/03/10 22:40:54 nit: maybe make this comment to the method level (
mef 2016/03/11 15:43:06 Done. I wonder whether we should just put isDoneLo
xunjieli 2016/03/11 15:44:32 I am not sure. Your call :)
if (mDisableCache) {
nativeDisableCache(mUrlRequestAdapter);
}

Powered by Google App Engine
This is Rietveld 408576698