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

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

Issue 1801943002: [Cronet] Fix race in UploadDataStream.attachToRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2661
Patch Set: 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..01d241e8efaeb0ef5723af93c2e49ff5c4b0547e 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();
}
}
@@ -232,6 +237,10 @@ final class CronetUrlRequest implements UrlRequest {
}
}
+ /*
+ * Starts fully configured request. Could execute on UploadDataProvider executor.
+ * Caller is expected to ensure that request isn't canceled and mUrlRequestAdapter is valid.
+ */
@GuardedBy("mUrlRequestAdapterLock")
private void startInternalLocked() {
if (mDisableCache) {

Powered by Google App Engine
This is Rietveld 408576698