Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Apr 24, 2024. It is now read-only.

Commit 6681d8c

Browse files
committed
Retry post if network error occurs
1 parent 405a52e commit 6681d8c

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

Analytics/Request/BlockingRequestHandler.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -225,19 +225,32 @@ public async Task MakeRequest(Batch batch)
225225
if (_client.Config.CompressRequest)
226226
content.Headers.ContentEncoding.Add("gzip");
227227

228-
var response = await _httpClient.PostAsync(uri, content).ConfigureAwait(false);
228+
HttpResponseMessage response = null;
229+
bool retry = false;
230+
try
231+
{
232+
response = await _httpClient.PostAsync(uri, content).ConfigureAwait(false);
233+
}
234+
catch (System.Threading.Tasks.TaskCanceledException)
235+
{
236+
retry = true;
237+
}
238+
catch (System.Exception e)
239+
{
240+
throw e;
241+
}
229242

230243
watch.Stop();
231244

232-
if (response.StatusCode == HttpStatusCode.OK)
245+
if (response != null && response.StatusCode == HttpStatusCode.OK)
233246
{
234247
Succeed(batch, watch.ElapsedMilliseconds);
235248
break;
236249
}
237250
else
238251
{
239-
statusCode = (int)response.StatusCode;
240-
if ((statusCode >= 500 && statusCode <= 600) || statusCode == 429)
252+
statusCode = response != null ? (int)response.StatusCode : 0;
253+
if ((statusCode >= 500 && statusCode <= 600) || statusCode == 429 || retry)
241254
{
242255
// If status code is greater than 500 and less than 600, it indicates server error
243256
// Error code 429 indicates rate limited.

0 commit comments

Comments
 (0)