264
268
const char **http_response_data,
265
269
PRUint32 *http_response_data_len)
271
PR_LOG(gPIPNSSLog, PR_LOG_DEBUG,
272
("nsNSSHttpRequestSession::trySendAndReceiveFcn to %s\n", mURL.get()));
267
274
if (nsIThread::IsMainThread())
290
297
return SECFailure;
300
const int max_retries = 5;
302
PRBool retryable_error = PR_FALSE;
303
SECStatus result_sec_status = SECFailure;
311
PR_LOG(gPIPNSSLog, PR_LOG_DEBUG,
312
("nsNSSHttpRequestSession::trySendAndReceiveFcn - sleeping and retrying: %d of %d\n",
313
retry_count, max_retries));
316
PR_Sleep( PR_MillisecondsToInterval(300) * retry_count );
320
retryable_error = PR_FALSE;
323
internal_send_receive_attempt(retryable_error, pPollDesc, http_response_code,
324
http_response_content_type, http_response_headers,
325
http_response_data, http_response_data_len);
327
while (retryable_error &&
328
retry_count < max_retries);
334
PR_LOG(gPIPNSSLog, PR_LOG_DEBUG,
335
("nsNSSHttpRequestSession::trySendAndReceiveFcn - still failing, giving up...\n"));
337
PR_LOG(gPIPNSSLog, PR_LOG_DEBUG,
338
("nsNSSHttpRequestSession::trySendAndReceiveFcn - success at attempt %d\n",
343
return result_sec_status;
347
nsNSSHttpRequestSession::internal_send_receive_attempt(PRBool &retryable_error,
348
PRPollDesc **pPollDesc,
349
PRUint16 *http_response_code,
350
const char **http_response_content_type,
351
const char **http_response_headers,
352
const char **http_response_data,
353
PRUint32 *http_response_data_len)
293
355
if (pPollDesc) *pPollDesc = nsnull;
294
356
if (http_response_code) *http_response_code = 0;
295
357
if (http_response_content_type) *http_response_content_type = 0;
385
447
return SECFailure;
387
449
if (NS_FAILED(mListener->mResultCode))
451
if (mListener->mResultCode == NS_ERROR_CONNECTION_REFUSED
453
mListener->mResultCode == NS_ERROR_NET_RESET)
455
retryable_error = PR_TRUE;
388
457
return SECFailure;
390
460
if (http_response_code)
391
461
*http_response_code = mListener->mHttpResponseCode;
524
594
nsresult rv = aLoader->GetRequest(getter_AddRefs(req));
597
if (NS_FAILED(aStatus))
599
PR_LOG(gPIPNSSLog, PR_LOG_DEBUG,
600
("nsHTTPListener::OnStreamComplete status failed %d", aStatus));
526
604
if (NS_SUCCEEDED(rv))
527
605
hchan = do_QueryInterface(req, &rv);