AccountState: Treat *any* 503 as a temporary error. #3113
authorChristian Kamm <kamm@incasoftware.de>
Fri, 24 Apr 2015 09:32:47 +0000 (11:32 +0200)
committerChristian Kamm <kamm@incasoftware.de>
Thu, 7 May 2015 07:21:52 +0000 (09:21 +0200)
src/gui/accountsettings.cpp
src/gui/accountstate.cpp
src/gui/accountstate.h
src/gui/application.cpp
src/gui/owncloudgui.cpp
src/libsync/connectionvalidator.cpp
src/libsync/connectionvalidator.h

index f46cf80b13113d4502975b270e0350b1dd37498c..919bae587df7fa303e86b11c0abbf05c7f2f3935 100644 (file)
@@ -234,7 +234,7 @@ void AccountSettings::slotAddFolder( Folder *folder )
     if( ! folder || folder->alias().isEmpty() ) return;
 
     QStandardItem *item = new QStandardItem();
-    folderToModelItem( item, folder, _accountState && _accountState->isConnectedOrMaintenance());
+    folderToModelItem( item, folder, _accountState && _accountState->isConnectedOrTemporarilyUnavailable());
     _model->appendRow( item );
     // in order to update the enabled state of the "Sync now" button
     connect(folder, SIGNAL(syncStateChange()), this, SLOT(slotFolderSyncStateChange()), Qt::UniqueConnection);
@@ -537,7 +537,7 @@ void AccountSettings::slotUpdateFolderState( Folder *folder )
     }
 
     if( item ) {
-        folderToModelItem( item, folder, _accountState->isConnectedOrMaintenance() );
+        folderToModelItem( item, folder, _accountState->isConnectedOrTemporarilyUnavailable() );
     } else {
         // the dialog is not visible.
     }
@@ -794,7 +794,7 @@ void AccountSettings::slotAccountStateChanged(int state)
         foreach (Folder *folder, folderMan->map().values()) {
             slotUpdateFolderState(folder);
         }
-        if (state == AccountState::Connected || state == AccountState::ServerMaintenance) {
+        if (state == AccountState::Connected || state == AccountState::ServiceUnavailable) {
             QString user;
             if (AbstractCredentials *cred = account->credentials()) {
                user = cred->user();
index 43f876246af26556f94f88fb0c836b96f168ff23..a2c9cf63e43d6bbb461afade35367d701b128116 100644 (file)
@@ -129,8 +129,8 @@ QString AccountState::stateString(State state)
         return QLatin1String("Disconnected");
     case Connected:
         return QLatin1String("Connected");
-    case ServerMaintenance:
-        return QLatin1String("ServerMaintenance");
+    case ServiceUnavailable:
+        return QLatin1String("ServiceUnavailable");
     case NetworkError:
         return QLatin1String("NetworkError");
     case ConfigurationError:
@@ -158,9 +158,9 @@ bool AccountState::isConnected() const
     return _state == Connected;
 }
 
-bool AccountState::isConnectedOrMaintenance() const
+bool AccountState::isConnectedOrTemporarilyUnavailable() const
 {
-    return isConnected() || _state == ServerMaintenance;
+    return isConnected() || _state == ServiceUnavailable;
 }
 
 QuotaInfo *AccountState::quotaInfo()
@@ -234,8 +234,8 @@ void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status sta
     case ConnectionValidator::UserCanceledCredentials:
         setState(SignedOut);
         break;
-    case ConnectionValidator::ServerMaintenance:
-        setState(ServerMaintenance);
+    case ConnectionValidator::ServiceUnavailable:
+        setState(ServiceUnavailable);
         break;
     case ConnectionValidator::Timeout:
         setState(NetworkError);
index 8da575be4886571c0aa3da8b63c0d8288c089a25..c21b25ead399fd657f673872178362ec1031bc98 100644 (file)
@@ -67,9 +67,9 @@ public:
         /// The account is successfully talking to the server.
         Connected,
 
-        /// The account is talking to the server, but the server is in
-        /// maintenance mode.
-        ServerMaintenance,
+        /// There's a temporary problem with talking to the server,
+        /// don't bother the user too much and try again.
+        ServiceUnavailable,
 
         /// Could not communicate with the server for some reason.
         /// We assume this may resolve itself over time and will try
@@ -100,7 +100,7 @@ public:
     void setSignedOut(bool signedOut);
 
     bool isConnected() const;
-    bool isConnectedOrMaintenance() const;
+    bool isConnectedOrTemporarilyUnavailable() const;
 
     QuotaInfo *quotaInfo();
 
index 946384ea1abe42b41f870fb8e0554de6865fe92b..2ed510cbe5835df1cfb79679fc4c3174275ab2ff 100644 (file)
@@ -270,7 +270,7 @@ void Application::slotAccountStateChanged(int state)
         folderMan->setSyncEnabled(true);
         folderMan->slotScheduleAllFolders();
         break;
-    case AccountState::ServerMaintenance:
+    case AccountState::ServiceUnavailable:
     case AccountState::SignedOut:
     case AccountState::ConfigurationError:
     case AccountState::NetworkError:
index 48ec2b526a91d28339013ceac0e3b18391ea4872..6894483827c02022c2a73a6bda9275aedeec2346 100644 (file)
@@ -221,7 +221,7 @@ void ownCloudGui::slotComputeOverallSyncStatus()
             _tray->setToolTip(tr("Please sign in"));
             return;
         }
-        if (!a->isConnectedOrMaintenance()) {
+        if (!a->isConnectedOrTemporarilyUnavailable()) {
             _tray->setIcon(Theme::instance()->folderOfflineIcon(true));
             _tray->setToolTip(tr("Disconnected from server"));
             return;
index b79b11b4d04322ebac934fa699e805508a90d724..89e61eda8c0eb1c5c6b533ae630bc848b33b1b24 100644 (file)
@@ -48,8 +48,8 @@ QString ConnectionValidator::statusString( Status stat )
         return QLatin1String("Status not found");
     case UserCanceledCredentials:
         return QLatin1String("User canceled credentials");
-    case ServerMaintenance:
-        return QLatin1String("Server in maintenance mode");
+    case ServiceUnavailable:
+        return QLatin1String("Service unavailable");
     case Timeout:
         return QLatin1String("Timeout");
     }
@@ -192,13 +192,8 @@ void ConnectionValidator::slotAuthFailed(QNetworkReply *reply)
         const int httpStatus =
                 reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
         if ( httpStatus == 503 ) {
-            // Is this a maintenance mode reply from the server
-            // or a regular 503 from somewhere else?
-            QByteArray body = reply->readAll();
-            if ( body.contains("Sabre\\DAV\\Exception\\ServiceUnavailable") ) {
-                _errors.clear();
-                stat = ServerMaintenance;
-            }
+            _errors.clear();
+            stat = ServiceUnavailable;
         }
     }
 
index 92ffae505a060bf24cbabaa3784a47a08a6e2fe5..4beb8dfba2ef27c0e25f426abd1e9c0fa939e5d7 100644 (file)
@@ -77,7 +77,7 @@ public:
         CredentialsWrong,
         StatusNotFound,
         UserCanceledCredentials,
-        ServerMaintenance,
+        ServiceUnavailable,
         // actually also used for other errors on the authed request
         Timeout
     };