Chromium Code Reviews| Index: sync/engine/net/server_connection_manager.cc |
| diff --git a/sync/engine/net/server_connection_manager.cc b/sync/engine/net/server_connection_manager.cc |
| index 4927acdaa75630bca9ed3fbee6c25060aa1553f5..272ae04f3cfd44fc464cb4958b8565b45e1f111a 100644 |
| --- a/sync/engine/net/server_connection_manager.cc |
| +++ b/sync/engine/net/server_connection_manager.cc |
| @@ -233,6 +233,14 @@ bool ServerConnectionManager::SetAuthToken(const std::string& auth_token) { |
| previously_invalidated_token = std::string(); |
| return true; |
| } |
| + |
| + // This could happen in case like server outage/bug. E.g. token returned by |
| + // first request is considered invalid by authentication server and because |
|
tim (not reviewing)
2013/11/07 22:07:13
invalid by 'sync server' ?
haitaol1
2013/11/08 15:23:03
Done.
|
| + // of token server's caching policy, etc, same token is returned on second |
| + // request. Need to notify sync frontend again to request new token, |
| + // otherwise backend will stay in SYNC_AUTH_ERROR state while fronend thinks |
|
tim (not reviewing)
2013/11/07 22:07:13
nit - while frontend*
haitaol1
2013/11/08 15:23:03
Done.
|
| + // everything is fine and takes no actions. |
| + SetServerStatus(HttpResponse::SYNC_AUTH_ERROR); |
| return false; |
| } |
| @@ -252,8 +260,12 @@ void ServerConnectionManager::InvalidateAndClearAuthToken() { |
| void ServerConnectionManager::SetServerStatus( |
| HttpResponse::ServerConnectionCode server_status) { |
| - if (server_status_ == server_status) |
| + // SYNC_AUTH_ERROR is permanent error. Need to notify observer to take |
| + // action externally to resolve. |
| + if (server_status != HttpResponse::SYNC_AUTH_ERROR && |
| + server_status_ == server_status) { |
| return; |
| + } |
| server_status_ = server_status; |
| NotifyStatusChanged(); |
| } |