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@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@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