Skip to content

Commit dc71b18

Browse files
committed
Merge pull request restsharp#493 from staticcat/Http-Sync-Handle-Timeout
Http.Sync now handles timeout responses raised as WebExceptions. These a...
2 parents fa894e8 + b1ec79a commit dc71b18

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

RestSharp/Http.Sync.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,21 +149,35 @@ partial void AddSyncHeaderActions()
149149
_restrictedHeaderActions.Add("User-Agent", (r, v) => r.UserAgent = v);
150150
}
151151

152-
private HttpResponse GetResponse(HttpWebRequest request)
152+
private void ExtractErrorResponse(HttpResponse httpResponse, Exception ex)
153153
{
154-
var response = new HttpResponse();
155-
response.ResponseStatus = ResponseStatus.None;
154+
var webException = ex as WebException;
155+
156+
if (webException != null && webException.Status == WebExceptionStatus.Timeout)
157+
{
158+
httpResponse.ResponseStatus = ResponseStatus.TimedOut;
159+
httpResponse.ErrorMessage = ex.Message;
160+
httpResponse.ErrorException = webException;
161+
return;
162+
}
163+
164+
httpResponse.ErrorMessage = ex.Message;
165+
httpResponse.ErrorException = ex;
166+
httpResponse.ResponseStatus = ResponseStatus.Error;
167+
}
156168

169+
private HttpResponse GetResponse(HttpWebRequest request)
170+
{
171+
var response = new HttpResponse { ResponseStatus = ResponseStatus.None };
172+
157173
try
158174
{
159175
var webResponse = GetRawResponse(request);
160176
ExtractResponseData(response, webResponse);
161177
}
162178
catch (Exception ex)
163179
{
164-
response.ErrorMessage = ex.Message;
165-
response.ErrorException = ex;
166-
response.ResponseStatus = ResponseStatus.Error;
180+
ExtractErrorResponse(response, ex);
167181
}
168182

169183
return response;

0 commit comments

Comments
 (0)