diff --git a/SOURCES/tigervnc-tolerate-specifying-boolparam.patch b/SOURCES/tigervnc-tolerate-specifying-boolparam.patch
new file mode 100644
index 0000000..70ddef3
--- /dev/null
+++ b/SOURCES/tigervnc-tolerate-specifying-boolparam.patch
@@ -0,0 +1,149 @@
+From 38c6848b30cb1908171f2b4628e345fbf6727b39 Mon Sep 17 00:00:00 2001
+From: Pierre Ossman <ossman@cendio.se>
+Date: Fri, 18 Sep 2020 10:44:32 +0200
+Subject: [PATCH] Tolerate specifying -BoolParam 0 and similar
+
+This is needed by vncserver which doesn't know which parameters are
+boolean, and it cannot use the -Param=Value form as that isn't tolerated
+by the Xorg code.
+---
+ unix/vncserver/vncserver.in    |  8 ++++----
+ unix/xserver/hw/vnc/RFBGlue.cc | 16 ++++++++++++++++
+ unix/xserver/hw/vnc/RFBGlue.h  |  1 +
+ unix/xserver/hw/vnc/xvnc.c     | 14 ++++++++++++++
+ vncviewer/vncviewer.cxx        | 20 ++++++++++++++++++++
+ 5 files changed, 55 insertions(+), 4 deletions(-)
+
+diff --git a/unix/vncserver/vncserver.in b/unix/vncserver/vncserver.in
+index 25fbbd315..261b258f1 100755
+--- a/unix/vncserver/vncserver.in
++++ b/unix/vncserver/vncserver.in
+@@ -107,7 +107,7 @@ $default_opts{rfbwait} = 30000;
+ $default_opts{rfbauth} = "$vncUserDir/passwd";
+ $default_opts{rfbport} = $vncPort;
+ $default_opts{fp} = $fontPath if ($fontPath);
+-$default_opts{pn} = "";
++$default_opts{pn} = undef;
+ 
+ # Load user-overrideable system defaults
+ LoadConfig($vncSystemConfigDefaultsFile);
+@@ -242,13 +242,13 @@ push(@cmd, "@CMAKE_INSTALL_FULL_BINDIR@/Xvnc", ":$displayNumber");
+ 
+ foreach my $k (sort keys %config) {
+   push(@cmd, "-$k");
+-  push(@cmd, $config{$k}) if $config{$k};
++  push(@cmd, $config{$k}) if defined($config{$k});
+   delete $default_opts{$k}; # file options take precedence
+ }
+ 
+ foreach my $k (sort keys %default_opts) {
+   push(@cmd, "-$k");
+-  push(@cmd, $default_opts{$k}) if $default_opts{$k};
++  push(@cmd, $default_opts{$k}) if defined($default_opts{$k});
+ }
+ 
+ warn "\nNew '$desktopName' desktop is $host:$displayNumber\n\n";
+@@ -291,7 +291,7 @@ sub LoadConfig {
+           # current config file being loaded defined the logical opposite setting
+           # (NeverShared vs. AlwaysShared, etc etc).
+           $toggle = lc($1); # must normalize key case
+-          $config{$toggle} = $k;
++          $config{$toggle} = undef;
+         }
+       }
+       close(IN);
+diff --git a/unix/xserver/hw/vnc/RFBGlue.cc b/unix/xserver/hw/vnc/RFBGlue.cc
+index f108fae43..7c32bea8f 100644
+--- a/unix/xserver/hw/vnc/RFBGlue.cc
++++ b/unix/xserver/hw/vnc/RFBGlue.cc
+@@ -143,6 +143,22 @@ const char* vncGetParamDesc(const char *name)
+   return param->getDescription();
+ }
+ 
++int vncIsParamBool(const char *name)
++{
++  VoidParameter *param;
++  BoolParameter *bparam;
++
++  param = rfb::Configuration::getParam(name);
++  if (param == NULL)
++    return false;
++
++  bparam = dynamic_cast<BoolParameter*>(param);
++  if (bparam == NULL)
++    return false;
++
++  return true;
++}
++
+ int vncGetParamCount(void)
+ {
+   int count;
+diff --git a/unix/xserver/hw/vnc/RFBGlue.h b/unix/xserver/hw/vnc/RFBGlue.h
+index 112405b84..695cea105 100644
+--- a/unix/xserver/hw/vnc/RFBGlue.h
++++ b/unix/xserver/hw/vnc/RFBGlue.h
+@@ -41,6 +41,7 @@ int vncSetParam(const char *name, const char *value);
+ int vncSetParamSimple(const char *nameAndValue);
+ char* vncGetParam(const char *name);
+ const char* vncGetParamDesc(const char *name);
++int vncIsParamBool(const char *name);
+ 
+ int vncGetParamCount(void);
+ char *vncGetParamList(void);
+diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c
+index 4eb0b0b13..5744acac8 100644
+--- a/unix/xserver/hw/vnc/xvnc.c
++++ b/unix/xserver/hw/vnc/xvnc.c
+@@ -618,6 +618,20 @@ ddxProcessArgument(int argc, char *argv[], int i)
+         exit(0);
+     }
+ 
++    /* We need to resolve an ambiguity for booleans */
++    if (argv[i][0] == '-' && i+1 < argc &&
++        vncIsParamBool(&argv[i][1])) {
++        if ((strcasecmp(argv[i+1], "0") == 0) ||
++            (strcasecmp(argv[i+1], "1") == 0) ||
++            (strcasecmp(argv[i+1], "true") == 0) ||
++            (strcasecmp(argv[i+1], "false") == 0) ||
++            (strcasecmp(argv[i+1], "yes") == 0) ||
++            (strcasecmp(argv[i+1], "no") == 0)) {
++            vncSetParam(&argv[i][1], argv[i+1]);
++            return 2;
++        }
++    }
++
+     if (vncSetParamSimple(argv[i]))
+ 	return 1;
+     
+diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
+index d4dd3063c..77ba3d3f4 100644
+--- a/vncviewer/vncviewer.cxx
++++ b/vncviewer/vncviewer.cxx
+@@ -556,6 +556,26 @@ int main(int argc, char** argv)
+   }
+ 
+   for (int i = 1; i < argc;) {
++    /* We need to resolve an ambiguity for booleans */
++    if (argv[i][0] == '-' && i+1 < argc) {
++        VoidParameter *param;
++
++        param = Configuration::getParam(&argv[i][1]);
++        if ((param != NULL) &&
++            (dynamic_cast<BoolParameter*>(param) != NULL)) {
++          if ((strcasecmp(argv[i+1], "0") == 0) ||
++              (strcasecmp(argv[i+1], "1") == 0) ||
++              (strcasecmp(argv[i+1], "true") == 0) ||
++              (strcasecmp(argv[i+1], "false") == 0) ||
++              (strcasecmp(argv[i+1], "yes") == 0) ||
++              (strcasecmp(argv[i+1], "no") == 0)) {
++              param->setParam(argv[i+1]);
++              i += 2;
++              continue;
++          }
++      }
++    }
++
+     if (Configuration::setParam(argv[i])) {
+       i++;
+       continue;
diff --git a/SPECS/tigervnc.spec b/SPECS/tigervnc.spec
index d78ce25..820d7f7 100644
--- a/SPECS/tigervnc.spec
+++ b/SPECS/tigervnc.spec
@@ -1,6 +1,6 @@
 Name:           tigervnc
 Version:        1.10.1
-Release:        7%{?dist}
+Release:        9%{?dist}
 Summary:        A TigerVNC remote display system
 
 %global _hardened_build 1
@@ -27,6 +27,7 @@ Patch14:        tigervnc-provide-correct-dimensions-for-xshm-setup.patch
 # Upstream patches
 Patch50:        tigervnc-systemd-support.patch
 Patch51:        tigervnc-remove-trailing-spaces-in-user-name.patch
+Patch52:        tigervnc-tolerate-specifying-boolparam.patch
 
 # This is tigervnc-%%{version}/unix/xserver116.patch rebased on the latest xorg
 Patch100:       tigervnc-xserver120.patch
@@ -184,6 +185,7 @@ popd
 
 %patch50 -p1 -b .tigervnc-systemd-support
 %patch51 -p1 -b .remove-trailing-spaces-in-user-name
+%patch52 -p1 -b .tolerate-specifying-boolparam
 
 %build
 %ifarch sparcv9 sparc64 s390 s390x
@@ -349,6 +351,14 @@ fi
 
 
 %changelog
+* Tue Oct 6 2020 Jan Grulich <jgrulich@redhat.com> - 1.10.1-9
+- Bump build for gating issue
+  Resolves: bz#1883432
+
+* Wed Sep 30 2020 Jan Grulich <jgrulich@redhat.com> - 1.10.1-8
+- Tolerate specifying -BoolParam 0 and similar
+  Resolves: bz#1883432
+
 * Wed Jul 08 2020 Jan Grulich <jgrulich@redhat.com> - 1.10.1-7
 - Enable server module on s390x
   Resolves: bz#1854925