| Index: net/http/http_network_transaction.cc
|
| diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
|
| index 4a669e2b3e1022f8aa9dee0483635ef1536301c5..456a871d22c66ce2b868f7905866c19456ecc79f 100644
|
| --- a/net/http/http_network_transaction.cc
|
| +++ b/net/http/http_network_transaction.cc
|
| @@ -1548,13 +1548,6 @@ int HttpNetworkTransaction::HandleIOError(int error) {
|
| error = OK;
|
| }
|
| break;
|
| - case ERR_QUIC_BROKEN_ERROR:
|
| - DCHECK(GetResponseHeaders() == nullptr);
|
| - net_log_.AddEventWithNetErrorCode(
|
| - NetLogEventType::HTTP_TRANSACTION_RESTART_AFTER_ERROR, error);
|
| - ResetConnectionAndRequestForResend();
|
| - error = OK;
|
| - break;
|
| case ERR_SPDY_PING_FAILED:
|
| case ERR_SPDY_SERVER_REFUSED_STREAM:
|
| case ERR_QUIC_HANDSHAKE_FAILED:
|
| @@ -1563,6 +1556,19 @@ int HttpNetworkTransaction::HandleIOError(int error) {
|
| ResetConnectionAndRequestForResend();
|
| error = OK;
|
| break;
|
| + case ERR_QUIC_PROTOCOL_ERROR: {
|
| + AlternativeService alternative_service;
|
| + if (GetResponseHeaders() == nullptr &&
|
| + stream_->GetAlternativeService(&alternative_service) &&
|
| + session_->http_server_properties()->IsAlternativeServiceBroken(
|
| + alternative_service)) {
|
| + net_log_.AddEventWithNetErrorCode(
|
| + NetLogEventType::HTTP_TRANSACTION_RESTART_AFTER_ERROR, error);
|
| + ResetConnectionAndRequestForResend();
|
| + error = OK;
|
| + }
|
| + break;
|
| + }
|
| case ERR_MISDIRECTED_REQUEST:
|
| // If this is the second try, just give up.
|
| if (!enable_ip_based_pooling_ && !enable_alternative_services_)
|
|
|