diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2016-07-28 12:14:22 +0200 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2016-07-28 12:14:22 +0200 |
commit | 443b52723e9d790e3a619406bcd8b0dd32390dc3 (patch) | |
tree | 3dc9faf4fe851d1d9a1c5062638cbd3874857163 /nx-X11/programs/Xserver/hw/nxagent/Args.c | |
parent | e1c85caacca67ea3d25319f2fe0a2985845bf1e9 (diff) | |
parent | 64a83d1e08fd8224a065d6e3548be6323127d4df (diff) | |
download | nx-libs-443b52723e9d790e3a619406bcd8b0dd32390dc3.tar.gz nx-libs-443b52723e9d790e3a619406bcd8b0dd32390dc3.tar.bz2 nx-libs-443b52723e9d790e3a619406bcd8b0dd32390dc3.zip |
Merge branch 'Ionic-feature/reconnect-checks' into 3.6.x
Attributes GH PR #183: https://github.com/ArcticaProject/nx-libs/pull/183
Together with PR #143 this fixes ArcticaProject/nx-libs#132.
t merges an updated upstream into a topic branch.
Diffstat (limited to 'nx-X11/programs/Xserver/hw/nxagent/Args.c')
-rw-r--r-- | nx-X11/programs/Xserver/hw/nxagent/Args.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Args.c b/nx-X11/programs/Xserver/hw/nxagent/Args.c index 832595786..9e54c0073 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Args.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Args.c @@ -1405,6 +1405,82 @@ static void nxagentParseOptions(char *name, char *value) return; } + else if (!strcmp(name, "tolerancechecks")) + { + if (strcmp(value, "strict") == 0) + { + nxagentChangeOption(ReconnectTolerance, ToleranceChecksStrict); + } + else if (strcmp(value, "safe") == 0) + { + nxagentChangeOption(ReconnectTolerance, ToleranceChecksSafe); + } + else if (strcmp(value, "risky") == 0) + { + nxagentChangeOption(ReconnectTolerance, ToleranceChecksRisky); + } + else if (strcmp(value, "none") == 0) + { + nxagentChangeOption(ReconnectTolerance, ToleranceChecksBypass); + } + else + { + /* + * Check for a matching integer. Or any integer, really. + */ + long tolerance_parse = 0; + + errno = 0; + tolerance_parse = strtol(value, NULL, 10); + + if ((errno) && (0 == tolerance_parse)) + { + fprintf(stderr, "nxagentParseOptions: Unable to convert value [%s] of option [%s]. " + "Ignoring option.\n", + validateString(value), validateString(name)); + + return; + } + + if ((long) UINT_MAX < tolerance_parse) + { + tolerance_parse = UINT_MAX; + + fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] " + "out of range, clamped to [%u].\n", + validateString(value), validateString(name), tolerance_parse); + } + + if (0 > tolerance_parse) + { + tolerance_parse = 0; + + fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of option [%s] " + "out of range, clamped to [%u].\n", + validateString(value), validateString(name), tolerance_parse); + } + + #ifdef TEST + switch (tolerance_parse) { + case ToleranceChecksStrict: + case ToleranceChecksSafe: + case ToleranceChecksRisky: + case ToleranceChecksBypass: + break; + default: + fprintf(stderr, "nxagentParseOptions: Warning: value [%s] of " + "option [%s] unknown, will be mapped to " + "\"Bypass\" [%u] value internally.\n", + validateString(value), validateString(name), + (unsigned int)ToleranceChecksBypass); + } + #endif + + nxagentChangeOption(ReconnectTolerance, tolerance_parse); + } + + return; + } else { #ifdef DEBUG |