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 <[email protected]>
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 <[email protected]>  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
_______________________________________________
x2go-commits mailing list
[email protected]
https://lists.x2go.org/listinfo/x2go-commits

Reply via email to