Skip to content

Commit 4d2db82

Browse files
Fix several continuations inside of HttpClient.
This was causing errors to happen at certain parts of the process to be discarded, leading to crashes because we never read from the Task.Exception. Fixes #81.
1 parent 325a5ad commit 4d2db82

File tree

5 files changed

+26
-27
lines changed

5 files changed

+26
-27
lines changed

Parse/Internal/HttpClient.Android.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,7 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
6666

6767
uploadTask = copyTask.Safe().ContinueWith(_ => {
6868
return request.GetRequestStreamAsync();
69-
}).Unwrap()
70-
.OnSuccess(t => {
69+
}).Unwrap().OnSuccess(t => {
7170
var requestStream = t.Result;
7271

7372
int bufferSize = 4096;
@@ -89,14 +88,14 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
8988
});
9089
}).ContinueWith(_ => {
9190
requestStream.Close();
92-
});
91+
return _;
92+
}).Unwrap();
9393
}).Unwrap();
9494
}
9595

96-
return uploadTask.Safe().ContinueWith(_ => {
96+
return uploadTask.Safe().OnSuccess(_ => {
9797
return request.GetResponseAsync();
98-
}).Unwrap()
99-
.ContinueWith(t => {
98+
}).Unwrap().OnSuccess(t => {
10099
// Handle canceled
101100
cancellationToken.ThrowIfCancellationRequested();
102101

Parse/Internal/HttpClient.NetFx45.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
6565

6666
uploadTask = copyTask.Safe().ContinueWith(_ => {
6767
return request.GetRequestStreamAsync();
68-
}).Unwrap()
69-
.OnSuccess(t => {
68+
}).Unwrap().OnSuccess(t => {
7069
var requestStream = t.Result;
7170

7271
int bufferSize = 4096;
@@ -89,14 +88,14 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
8988
}).ContinueWith(_ => {
9089
//requestStream.Flush();
9190
requestStream.Dispose();
92-
});
91+
return _;
92+
}).Unwrap();
9393
}).Unwrap();
9494
}
9595

96-
return uploadTask.Safe().ContinueWith(_ => {
96+
return uploadTask.Safe().OnSuccess(_ => {
9797
return request.GetResponseAsync();
98-
}).Unwrap()
99-
.ContinueWith(t => {
98+
}).Unwrap().OnSuccess(t => {
10099
// Handle canceled
101100
cancellationToken.ThrowIfCancellationRequested();
102101

@@ -147,7 +146,8 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
147146
});
148147
}).ContinueWith(_ => {
149148
responseStream.Dispose();
150-
149+
return _;
150+
}).Unwrap().OnSuccess(_ => {
151151
// If getting stream size is not supported, then report download only once.
152152
if (totalLength == -1) {
153153
downloadProgress.Report(new ParseDownloadProgressEventArgs { Progress = 1.0 });

Parse/Internal/HttpClient.Phone.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,8 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
9494
});
9595
}).ContinueWith(_ => {
9696
requestStream.Close();
97-
});
97+
return _;
98+
}).Unwrap();
9899
}).Unwrap();
99100
}
100101

Parse/Internal/HttpClient.WinRT.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
6565

6666
uploadTask = copyTask.Safe().ContinueWith(_ => {
6767
return request.GetRequestStreamAsync();
68-
}).Unwrap()
69-
.OnSuccess(t => {
68+
}).Unwrap().OnSuccess(t => {
7069
var requestStream = t.Result;
7170

7271
int bufferSize = 4096;
@@ -89,14 +88,14 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
8988
}).ContinueWith(_ => {
9089
//requestStream.Flush();
9190
requestStream.Dispose();
92-
});
91+
return _;
92+
}).Unwrap();
9393
}).Unwrap();
9494
}
9595

96-
return uploadTask.Safe().ContinueWith(_ => {
96+
return uploadTask.Safe().OnSuccess(_ => {
9797
return request.GetResponseAsync();
98-
}).Unwrap()
99-
.ContinueWith(t => {
98+
}).Unwrap().OnSuccess(t => {
10099
// Handle canceled
101100
cancellationToken.ThrowIfCancellationRequested();
102101

@@ -147,7 +146,8 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
147146
});
148147
}).ContinueWith(_ => {
149148
responseStream.Dispose();
150-
149+
return _;
150+
}).Unwrap().OnSuccess(_ => {
151151
// If getting stream size is not supported, then report download only once.
152152
if (totalLength == -1) {
153153
downloadProgress.Report(new ParseDownloadProgressEventArgs { Progress = 1.0 });

Parse/Internal/HttpClient.iOS.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,7 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
6767

6868
uploadTask = copyTask.Safe().ContinueWith(_ => {
6969
return request.GetRequestStreamAsync();
70-
}).Unwrap()
71-
.OnSuccess(t => {
70+
}).Unwrap().OnSuccess(t => {
7271
var requestStream = t.Result;
7372

7473
int bufferSize = 4096;
@@ -90,14 +89,14 @@ public Task<Tuple<HttpStatusCode, string>> ExecuteAsync(HttpRequest httpRequest,
9089
});
9190
}).ContinueWith(_ => {
9291
requestStream.Close();
93-
});
92+
return _;
93+
}).Unwrap();
9494
}).Unwrap();
9595
}
9696

97-
return uploadTask.Safe().ContinueWith(_ => {
97+
return uploadTask.Safe().OnSuccess(_ => {
9898
return request.GetResponseAsync();
99-
}).Unwrap()
100-
.ContinueWith(t => {
99+
}).Unwrap().OnSuccess(t => {
101100
// Handle canceled
102101
cancellationToken.ThrowIfCancellationRequested();
103102

0 commit comments

Comments
 (0)