Index: net/http/http_network_transaction.cc |
=================================================================== |
--- net/http/http_network_transaction.cc (revision 17313) |
+++ net/http/http_network_transaction.cc (working copy) |
@@ -362,6 +362,8 @@ |
return LOAD_STATE_WAITING_FOR_RESPONSE; |
case STATE_READ_BODY_COMPLETE: |
return LOAD_STATE_READING_RESPONSE; |
+ case STATE_WAITING_FOR_USER_ACTION: |
+ return LOAD_STATE_WAITING_FOR_USER_ACTION; |
default: |
return LOAD_STATE_IDLE; |
} |
@@ -500,12 +502,20 @@ |
TRACE_EVENT_END("http.drain_body_for_auth_restart", |
request_, request_->url.spec()); |
break; |
+ case STATE_WAITING_FOR_USER_ACTION: |
+ // When this transcation is suspended for some error such as invalid SSL |
+ // certification, the state becomes STATE_WAITING_FOR_USER_ACTION. You |
+ // can check if this transaction is in this state by calling |
+ // GetLoadState() and compare with LOAD_STATE_WAITING_FOR_USER_ACTION. |
+ break; |
default: |
NOTREACHED() << "bad state"; |
rv = ERR_FAILED; |
break; |
} |
- } while (rv != ERR_IO_PENDING && next_state_ != STATE_NONE); |
+ } while (rv != ERR_IO_PENDING && |
+ next_state_ != STATE_NONE && |
+ next_state_ != STATE_WAITING_FOR_USER_ACTION); |
return rv; |
} |
@@ -662,6 +672,7 @@ |
if (result == OK) { |
next_state_ = STATE_WRITE_HEADERS; |
} else { |
+ next_state_ = STATE_WAITING_FOR_USER_ACTION; |
result = HandleSSLHandshakeError(result); |
} |
return result; |