[X2Go-Commits] [x2goclient] 02/06: Fix crashes when syn reply arriving after the session is started, when using broker

git-admin at x2go.org git-admin at x2go.org
Fri Dec 15 21:23:03 CET 2023


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goclient.

commit 6371ab16d4a9f288d2d054799ed4e532064b57cb
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date:   Mon Jul 10 12:10:57 2023 +0200

    Fix crashes when syn reply arriving after the session is started, when using broker
---
 debian/changelog     |  4 ++++
 src/onmainwindow.cpp | 33 +++++++++++++++++++++++++++++++++
 src/onmainwindow.h   |  2 ++
 3 files changed, 39 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index a17d1f5f..2b9cc33b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,7 +1,11 @@
 x2goclient (4.1.2.4-0x2go1) UNRELEASED; urgency=medium
 
+  [ X2Go Release Manager ]
   * Continue development
 
+  [ Oleksandr Shneyder ]
+  * Fix crashes when syn reply arriving after the session is started, when using broker
+
  -- X2Go Release Manager <git-admin at x2go.org>  Thu, 29 Jun 2023 20:54:03 +0200
 
 x2goclient (4.1.2.3-0x2go1) unstable; urgency=medium
diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp
index 33132f77..3d577590 100644
--- a/src/onmainwindow.cpp
+++ b/src/onmainwindow.cpp
@@ -78,6 +78,7 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
 
     setFocusPolicy ( Qt::NoFocus );
     installTranslator();
+    ignoreBrokerSessions=false;
     autoresume=true;
     cleanAllFiles=false;
     drawMenu=true;
@@ -2349,6 +2350,11 @@ void ONMainWindow::slotConfig()
 void ONMainWindow::slotReadSessions()
 {
 
+    if(brokerMode&&ignoreBrokerSessions)
+    {
+        x2goDebug<<"Looks like session is already started, not reading sessions";
+        return;
+    }
     users->show();
     ln->show();
 
@@ -3313,6 +3319,11 @@ void ONMainWindow::slotSshServerAuthError ( int error, QString sshMessage, SshMa
         activateWindow();
         raise();
     }
+    if(brokerMode)
+    {
+        ignoreBrokerSessions=false;
+    }
+
     if(brokerMode && config.brokerSyncTimeout && !(brokerSyncTimer->isActive()))
     {
             brokerSyncTimer->start();
@@ -3452,6 +3463,11 @@ void ONMainWindow::slotSshUserAuthError ( QString error )
     pass->setFocus();
     pass->selectAll();
     passForm->setEnabled ( true );
+    if(brokerMode)
+    {
+        ignoreBrokerSessions=false;
+    }
+
     if(brokerMode && config.brokerSyncTimeout && !(brokerSyncTimer->isActive()))
     {
             brokerSyncTimer->start();
@@ -3830,7 +3846,10 @@ bool ONMainWindow::startSession ( const QString& sid, CONTYPE conType )
     bool proxyKrbLogin=false;
 
     if(brokerMode)
+    {
         brokerSyncTimer->stop();
+        ignoreBrokerSessions=true;
+    }
 
     user=getCurrentUname();
     runRemoteCommand=true;
@@ -3869,6 +3888,10 @@ bool ONMainWindow::startSession ( const QString& sid, CONTYPE conType )
 
             setEnabled(true);
             passForm->setEnabled(true);
+            if(brokerMode)
+            {
+                ignoreBrokerSessions=false;
+            }
             if(config.brokerSyncTimeout && !(brokerSyncTimer->isActive()))
             {
                 brokerSyncTimer->start();
@@ -5564,6 +5587,10 @@ void ONMainWindow::slotRetSuspSess ( bool result, QString output,
     }
     else
     {
+        if(brokerMode)
+        {
+            ignoreBrokerSessions=false;
+        }
         if(brokerMode && config.brokerSyncTimeout && !(brokerSyncTimer->isActive()))
         {
             brokerSyncTimer->start();
@@ -5665,6 +5692,11 @@ void ONMainWindow::slotRetTermSess ( bool result,  QString output,
     }
     if ( selectSessionDlg->isVisible() )
         selectSessionDlg->setEnabled ( true );
+    if(brokerMode)
+    {
+        ignoreBrokerSessions=false;
+    }
+
     if(brokerMode && config.brokerSyncTimeout && !(brokerSyncTimer->isActive()))
     {
             brokerSyncTimer->start();
@@ -6713,6 +6745,7 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
 {
     if(brokerMode)
     {
+        ignoreBrokerSessions=false;
         sendEventToBroker(FINISHED);
     }
 #ifdef Q_OS_DARWIN
diff --git a/src/onmainwindow.h b/src/onmainwindow.h
index 322e331a..9b4a0bd3 100644
--- a/src/onmainwindow.h
+++ b/src/onmainwindow.h
@@ -594,6 +594,8 @@ private:
     QStringList _transApplicationsNames;
     QString portableDataPath;
     QString proxyErrString;
+/* don't sync sessions from broker if the session already started */
+    bool ignoreBrokerSessions;
     bool haveTerminal;
     bool proxyRunning;
     bool drawMenu;

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git


More information about the x2go-commits mailing list