diff --git a/rfb/Configuration.cxx b/rfb/Configuration.cxx
index fc68210..f4b9f95 100644
--- a/rfb/Configuration.cxx
+++ b/rfb/Configuration.cxx
@@ -1,4 +1,5 @@
 /* Copyright (C) 2002-2004 RealVNC Ltd.  All Rights Reserved.
+ * Copyright (C) 2004 Peter Astrand, Cendio AB.  All Rights Reserved.
  *    
  * This is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -68,8 +69,8 @@
     {
       bool b = current->setParam(val);
       current->setHasBeenSet(); 
-      if (b && immutable)
-        current->setImmutable();
+      if (b && immutable) 
+	current->setImmutable();
       return b;
     }
     current = current->_next;
@@ -93,8 +94,8 @@
       if (strcasecmp(current->getName(), config) == 0) {
         bool b = current->setParam();
 	current->setHasBeenSet(); 
-        if (b && immutable)
-          current->setImmutable();
+        if (b && immutable) 
+	  current->setImmutable();
         return b;
       }
       current = current->_next;
@@ -225,6 +226,13 @@
   return param->isBool();
 }
 
+void
+AliasParameter::setImmutable() {
+  vlog.debug("set immutable %s (Alias)", getName());
+  param->setImmutable();
+}
+
+
 // -=- BoolParameter
 
 BoolParameter::BoolParameter(const char* name_, const char* desc_, bool v)
@@ -389,7 +397,7 @@
 #ifdef WIN32
   Lock l(configLock);
 #endif
-  if (immutable) return;
+  if (immutable) return; 
   vlog.debug("set %s(Binary)", getName());
   delete [] value; value = 0;
   if (len) {
