While we nowadays can work much better with package upgrades relating
the cluster stack it still happens that a pve-cluster upgrade can
produce a false-positive 401 (auth failure) code for a currently
valid ticket, e.g., because a pmxcfs lock was requested but the
pmxcfs was currently not mounted due an upgrade triggered restart.

A frequent case for a few false positive 401 is also a cluster
creation, especially if not done over the web GUI.

Thus add a counter, which gets set to 0 on each successful login or
ticket renewal and gets increased on each 401 error. Only show the
logged out window if we get five or more 401 responses. While 5 may
sound a bit much one needs to remember that we always have quite a
few API call in flight (resource update store, stores from current
panel ...) and thus, if one got really auth denied it will still show
quite fast (1 to 5 seconds, depending on which panel is currently
opened). Further, the backend naturally does not allows to do
anything during this time, this has no security implications
whatsoever.

Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com>
---
 www/manager6/Workspace.js | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/www/manager6/Workspace.js b/www/manager6/Workspace.js
index 1d343525..db846efc 100644
--- a/www/manager6/Workspace.js
+++ b/www/manager6/Workspace.js
@@ -27,6 +27,7 @@ Ext.define('PVE.Workspace', {
        if (loginData.cap) {
            Ext.state.Manager.set('GuiCap', loginData.cap);
        }
+       me.response401count = 0;
 
        me.onLogin(loginData);
     },
@@ -60,7 +61,12 @@ Ext.define('PVE.Workspace', {
        // fixme: what about other errors
        Ext.Ajax.on('requestexception', function(conn, response, options) {
            if (response.status == 401 && !PVE.Utils.silenceAuthFailures) { // 
auth failure
-               me.showLogin();
+               // don't immediately show as logged out to cope better with 
some big
+               // upgrades, which may temporarily produce a false positive 401 
err
+               me.response401count++;
+               if (me.response401count > 5) {
+                   me.showLogin();
+               }
            }
        });
 
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to