Skip to content

Commit 272e6e9

Browse files
committed
Merge pull request restsharp#380 from ixkor/FastAbortBug
Fix bug with no setting ResponseStatus.Aborted if the request was aborted just after starting.
2 parents 14c0e61 + b5b559b commit 272e6e9

File tree

2 files changed

+20
-37
lines changed

2 files changed

+20
-37
lines changed

RestSharp/Http.Async.cs

+19-36
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,26 @@ private HttpWebRequest GetStyleMethodInternalAsync(string method, Action<HttpRes
110110
}
111111
catch(Exception ex)
112112
{
113-
var response = new HttpResponse();
114-
response.ErrorMessage = ex.Message;
115-
response.ErrorException = ex;
116-
response.ResponseStatus = ResponseStatus.Error;
117-
ExecuteCallback(response, callback);
113+
ExecuteCallback(CreateErrorResponse(ex), callback);
118114
}
119115
return webRequest;
120116
}
121117

118+
private HttpResponse CreateErrorResponse(Exception ex)
119+
{
120+
var response = new HttpResponse();
121+
if (ex is WebException && ((WebException)ex).Status == WebExceptionStatus.RequestCanceled)
122+
{
123+
response.ResponseStatus = _timeoutState.TimedOut ? ResponseStatus.TimedOut : ResponseStatus.Aborted;
124+
return response;
125+
}
126+
127+
response.ErrorMessage = ex.Message;
128+
response.ErrorException = ex;
129+
response.ResponseStatus = ResponseStatus.Error;
130+
return response;
131+
}
132+
122133
private HttpWebRequest PutPostInternalAsync(string method, Action<HttpResponse> callback)
123134
{
124135
HttpWebRequest webRequest = null;
@@ -130,11 +141,7 @@ private HttpWebRequest PutPostInternalAsync(string method, Action<HttpResponse>
130141
}
131142
catch(Exception ex)
132143
{
133-
var response = new HttpResponse();
134-
response.ErrorMessage = ex.Message;
135-
response.ErrorException = ex;
136-
response.ResponseStatus = ResponseStatus.Error;
137-
ExecuteCallback(response, callback);
144+
ExecuteCallback(CreateErrorResponse(ex), callback);
138145
}
139146

140147
return webRequest;
@@ -221,21 +228,7 @@ private void RequestStreamCallback(IAsyncResult result, Action<HttpResponse> cal
221228
}
222229
catch (Exception ex)
223230
{
224-
HttpResponse response;
225-
if (ex is WebException && ((WebException)ex).Status == WebExceptionStatus.RequestCanceled)
226-
{
227-
response = new HttpResponse {ResponseStatus = ResponseStatus.TimedOut};
228-
ExecuteCallback (response, callback);
229-
return;
230-
}
231-
232-
response = new HttpResponse
233-
{
234-
ErrorMessage = ex.Message,
235-
ErrorException = ex,
236-
ResponseStatus = ResponseStatus.Error
237-
};
238-
ExecuteCallback(response, callback);
231+
ExecuteCallback(CreateErrorResponse(ex), callback);
239232
return;
240233
}
241234

@@ -328,17 +321,7 @@ private void ResponseCallback(IAsyncResult result, Action<HttpResponse> callback
328321
}
329322
catch(Exception ex)
330323
{
331-
if(ex is WebException && ((WebException)ex).Status == WebExceptionStatus.RequestCanceled)
332-
{
333-
response.ResponseStatus = ResponseStatus.Aborted;
334-
ExecuteCallback(response, callback);
335-
return;
336-
}
337-
338-
response.ErrorMessage = ex.Message;
339-
response.ErrorException = ex;
340-
response.ResponseStatus = ResponseStatus.Error;
341-
ExecuteCallback(response, callback);
324+
ExecuteCallback(CreateErrorResponse(ex), callback);
342325
}
343326
}
344327

RestSharp/RestClient.Async.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ public virtual RestRequestAsyncHandle ExecuteAsyncPost<T>(IRestRequest request,
150150
private void DeserializeResponse<T>(IRestRequest request, Action<IRestResponse<T>, RestRequestAsyncHandle> callback, IRestResponse response, RestRequestAsyncHandle asyncHandle)
151151
{
152152
IRestResponse<T> restResponse = response as RestResponse<T>;
153-
if (response.ResponseStatus != ResponseStatus.Aborted)
153+
if (response.ResponseStatus == ResponseStatus.Completed)
154154
{
155155
restResponse = Deserialize<T>(request, response);
156156
}

0 commit comments

Comments
 (0)