This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2goclient. commit 94b93f57c643a4660822831c54390d40d40240a4 Author: Mihai Moldovan <ionic@ionic.de> Date: Sat May 12 00:31:19 2018 +0200 {src/{onmainwindow.{cpp,h},help.cpp},man/man1/x2goclient.1}: add new option --xserver-start-limit, replacing the formerly hardcoded limit of three tries. --- debian/changelog | 3 +++ man/man1/x2goclient.1 | 8 ++++++++ src/help.cpp | 5 +++++ src/onmainwindow.cpp | 38 ++++++++++++++++++++++++++++++++++---- src/onmainwindow.h | 1 + 5 files changed, 51 insertions(+), 4 deletions(-) diff --git a/debian/changelog b/debian/changelog index cfcbac6..e030e15 100644 --- a/debian/changelog +++ b/debian/changelog @@ -57,6 +57,9 @@ x2goclient (4.1.2.0-0x2go1) UNRELEASED; urgency=medium check if the server binary actually is still alive before doing the TCP connection checks. A dead server won't be able to listen on a socket in the first place. + - {src/{onmainwindow.{cpp,h},help.cpp},man/man1/x2goclient.1}: add new + option --xserver-start-limit, replacing the formerly hardcoded limit of + three tries. * x2goclient.spec: - Remove plugin references. * debian/rules: diff --git a/man/man1/x2goclient.1 b/man/man1/x2goclient.1 index 5c566e7..bf2360c 100644 --- a/man/man1/x2goclient.1 +++ b/man/man1/x2goclient.1 @@ -102,6 +102,14 @@ If a directory is given, will randomly pick an SVG file inside of it. \*(T<\fB\-\-branding=<svg\-file>\fR\*(T> Use a custom icon (SVG format) for additional branding to replace the default in the lower left corner of X2Go Client's main window. +.SH MISCELLANEOUS OPTIONS +These options change X2Go Client's behavior globally. Some might not be available on all platforms. +.TP +\*(T<\fB\-\-xserver-start-limit=<num>\fR\*(T> (Windows-only) +Limit the X.Org Server start count to at most <num> tries. Default: \fB3\fR. +If \fB<num>\fR is zero or a negative number, no limit is imposed. +The limits for \fB<num>\fR are platform dependent. If the passed value is out of bounds, X2Go Client falls back to the default value. + .SH SESSION PROFILE DEFAULTS You can set certain defaults for session profiles via command line switches using the following options: .TP diff --git a/src/help.cpp b/src/help.cpp index d5343e8..cec2a40 100644 --- a/src/help.cpp +++ b/src/help.cpp @@ -162,6 +162,11 @@ help::params_t help::build_params () { ADD_OPT ("--broker-logoutbt", QT_TRANSLATE_NOOP ("Help", "Enables broker logout button.")); ADD_OPT ("--background=<svg-file|dir>", QT_TRANSLATE_NOOP ("Help", "Use a custom/branded background image (SVG format) for X2Go Client's main window. If a directory is given, will randomly pick an SVG file inside of it.")); ADD_OPT ("--branding=<svg-file>", QT_TRANSLATE_NOOP ("Help", "Use a custom icon (SVG format) for additional branding to replace the default in the lower left corner of X2Go Client's main window.")); +#if defined (Q_OS_WIN) + ADD_OPT ("--xserver-start-limit=<num>", QT_TRANSLATE_NOOP ("Help", "Limit the X.Org Server start count to at most <num> tries. Default: \"3\"." NEWLINE + "If <num> is zero or a negative number, no limit is imposed." NEWLINE + "The limits for <num> are platform dependent. If the passed value is out of bounds, X2Go Client falls back to the default value.")); +#endif /* defined (Q_OS_WIN) */ # undef NEWLINE # undef ADD_OPT diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp index 0e4e18b..0b6ec1f 100644 --- a/src/onmainwindow.cpp +++ b/src/onmainwindow.cpp @@ -172,6 +172,7 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent ) xorg=0l; xDisplay=0; x_start_tries_ = 0; + x_start_limit_ = 3; #endif if(X2goSettings::centralSettings()) @@ -7667,6 +7668,30 @@ bool ONMainWindow::parseParameter ( QString param ) OnFile=value; return true; } +#if defined(Q_OS_WIN) + if ("--xserver-start-limit" == setting) { + bool conv_ret = false; + signed long long conv = value.toLongLong (&conv_ret); + + if (conv_ret) { + if (0 >= conv) { + x2goDebug << "Not limiting X.Org Server starts."; + + x_start_limit_ = -1; + { + else { + x_start_limit = conv; + + x2goDebug << "Limiting X.Org Server starts to " << x_start_limit << " tries."; + } + } + else { + x2goDebug << "Conversion for --xserver-start-limit value " << value << " failed; assuming default of 3."; + + x_start_limit = 3; + } + } +#endif /* defined(Q_OS_WIN) */ printError ( param ); return false; @@ -10062,6 +10087,11 @@ void ONMainWindow::startXOrg (std::size_t start_offset) //check connection in slot and launch setWinServerReady waitingForX=0; x_start_tries_ += 1; + + if (0 == x_start_limit_) { + x2goWarningf(9) << "X.Org Server start limit set to invalid value zero!"; + } + QTimer::singleShot(1000, this, SLOT(slotCheckXOrgConnection())); } // #endif @@ -10077,8 +10107,8 @@ void ONMainWindow::slotCheckXOrgConnection() * Process died (crashed, terminated, whatever). We need to restart it, unless we already tried * to do so multiple times unsuccessfully. */ - if (3 < x_start_tries_) { - x2goDebug << "Unable to start X.Org Server for three times, terminating."; + if (x_start_limit_ < x_start_tries_) { + x2goDebug << "Unable to start X.Org Server for " << x_start_limit_ << " times, terminating."; QMessageBox::critical (NULL, QString::null, tr ("X.Org Server did not launch correctly after three tries.\n" @@ -10110,11 +10140,11 @@ void ONMainWindow::slotCheckXOrgConnection() if (waitingForX > 10) { /* - * Timeout reached. If we tried starting the X.Org Server less than three times, + * Timeout reached. If we tried starting the X.Org Server less times than the limit, * continue doing so (with a higher DISPLAY value). * Otherwise error out. */ - if (3 >= x_start_tries_) { + if (x_start_limit_ >= x_start_tries_) { /* * Server might still be running here, but deleting the QProcess object * should kill it. diff --git a/src/onmainwindow.h b/src/onmainwindow.h index d979c75..dad4f1f 100644 --- a/src/onmainwindow.h +++ b/src/onmainwindow.h @@ -877,6 +877,7 @@ private: QString xorgHeight; int waitingForX; std::size_t x_start_tries_; + std::ssize_t x_start_limit_; QRect dispGeometry; #endif -- Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git