Index: /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp
===================================================================
--- /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp	(revision 80559)
+++ /trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc.cpp	(revision 80560)
@@ -303,7 +303,9 @@
 }
 
-static void vboxSvcClipboardModeSet(uint32_t u32Mode)
-{
-    switch (u32Mode)
+static int vboxSvcClipboardModeSet(uint32_t uMode)
+{
+    int rc = VERR_NOT_SUPPORTED;
+
+    switch (uMode)
     {
         case VBOX_SHARED_CLIPBOARD_MODE_OFF:
@@ -314,11 +316,20 @@
             RT_FALL_THROUGH();
         case VBOX_SHARED_CLIPBOARD_MODE_BIDIRECTIONAL:
-            g_uMode = u32Mode;
+        {
+            g_uMode = uMode;
+
+            rc = VINF_SUCCESS;
             break;
+        }
 
         default:
+        {
             g_uMode = VBOX_SHARED_CLIPBOARD_MODE_OFF;
             break;
-    }
+        }
+    }
+
+    LogFlowFuncLeaveRC(rc);
+    return rc;
 }
 
@@ -1270,5 +1281,5 @@
         case VBOX_SHARED_CLIPBOARD_GUEST_FN_FORMATS_WRITE:
         {
-            uint32_t u32Formats = 0;
+            uint32_t uFormats = 0;
 
             if (pClient->State.uProtocolVer == 0)
@@ -1284,5 +1295,5 @@
                 else
                 {
-                    rc = HGCMSvcGetU32(&paParms[0], &u32Formats);
+                    rc = HGCMSvcGetU32(&paParms[0], &uFormats);
                 }
             }
@@ -1301,5 +1312,5 @@
                 else
                 {
-                    rc = HGCMSvcGetU32(&paParms[1], &u32Formats);
+                    rc = HGCMSvcGetU32(&paParms[1], &uFormats);
 
                     /** @todo Handle rest. */
@@ -1324,5 +1335,5 @@
                             RT_ZERO(parms);
 
-                            parms.uFormat = u32Formats;
+                            parms.uFormat = uFormats;
 
                             g_ExtState.pfnExtension(g_ExtState.pvExtension, VBOX_CLIPBOARD_EXT_FN_FORMAT_ANNOUNCE, &parms, sizeof(parms));
@@ -1335,5 +1346,5 @@
                         RT_ZERO(formatData);
 
-                        formatData.uFormats = u32Formats;
+                        formatData.uFormats = uFormats;
 
                         rc = VBoxClipboardSvcImplFormatAnnounce(pClient, &cmdCtx, &formatData);
@@ -1661,5 +1672,6 @@
     int rc = VINF_SUCCESS;
 
-    LogFlowFunc(("u32Function=%RU32, cParms=%RU32, paParms=%p\n", u32Function, cParms, paParms));
+    LogFlowFunc(("u32Function=%RU32 (%s), cParms=%RU32, paParms=%p\n",
+                 u32Function, VBoxClipboardHostMsgToStr(u32Function), cParms, paParms));
 
     switch (u32Function)
@@ -1667,12 +1679,23 @@
         case VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE:
         {
-            LogFunc(("VBOX_SHARED_CLIPBOARD_HOST_FN_SET_MODE\n"));
-
             if (cParms != 1)
             {
                 rc = VERR_INVALID_PARAMETER;
             }
-            else if (   paParms[0].type != VBOX_HGCM_SVC_PARM_32BIT   /* mode */
-                    )
+            else
+            {
+                uint32_t u32Mode = VBOX_SHARED_CLIPBOARD_MODE_OFF;
+
+                rc = HGCMSvcGetU32(&paParms[0], &u32Mode);
+                if (RT_SUCCESS(rc))
+                    rc = vboxSvcClipboardModeSet(u32Mode);
+            }
+
+            break;
+        }
+
+        case VBOX_SHARED_CLIPBOARD_HOST_FN_SET_HEADLESS:
+        {
+            if (cParms != 1)
             {
                 rc = VERR_INVALID_PARAMETER;
@@ -1680,29 +1703,14 @@
             else
             {
-                uint32_t u32Mode = VBOX_SHARED_CLIPBOARD_MODE_OFF;
-
-                rc = HGCMSvcGetU32(&paParms[0], &u32Mode);
-
-                /* The setter takes care of invalid values. */
-                vboxSvcClipboardModeSet(u32Mode);
-            }
-        } break;
-
-        case VBOX_SHARED_CLIPBOARD_HOST_FN_SET_HEADLESS:
-        {
-            uint32_t u32Headless = g_fHeadless;
-
-            rc = VERR_INVALID_PARAMETER;
-            if (cParms != 1)
-                break;
-
-            rc = HGCMSvcGetU32(&paParms[0], &u32Headless);
-            if (RT_SUCCESS(rc))
-                LogFlowFunc(("VBOX_SHARED_CLIPBOARD_HOST_FN_SET_HEADLESS, u32Headless=%u\n",
-                            (unsigned) u32Headless));
-
-            g_fHeadless = RT_BOOL(u32Headless);
-
-        } break;
+                uint32_t uHeadless;
+                rc = HGCMSvcGetU32(&paParms[0], &uHeadless);
+                if (RT_SUCCESS(rc))
+                {
+                    g_fHeadless = RT_BOOL(uHeadless);
+                    LogRel(("Shared Clipboard: Service running in %s mode\n", g_fHeadless ? "headless" : "normal"));
+                }
+            }
+            break;
+        }
 
         default:
@@ -1713,5 +1721,6 @@
             rc = VERR_NOT_IMPLEMENTED;
 #endif
-        } break;
+            break;
+        }
     }
 
