diff --git a/htools/Ganeti/Queryd.hs b/htools/Ganeti/Queryd.hs index c7d417a7e8f80353b86a94dfe04b662c92a65f84..2e421e73a2776997c86fc123f118276b6f9caf34 100644 --- a/htools/Ganeti/Queryd.hs +++ b/htools/Ganeti/Queryd.hs @@ -139,9 +139,10 @@ handleClientMsg client creader args = do call_result <- handleCallWrapper cfg args (!status, !rval) <- case call_result of - Bad x -> do - logWarning $ "Failed to execute request: " ++ x - return (False, JSString $ J.toJSString x) + Bad err -> do + let errmsg = "Failed to execute request: " ++ err + logWarning errmsg + return (False, showJSON errmsg) Ok result -> do logDebug $ "Result " ++ show (pp_value result) return (True, result) @@ -159,8 +160,11 @@ handleClient client creader = do return False RecvOk payload -> case validateCall payload >>= decodeCall of - Bad err -> logWarning ("Failed to parse request: " ++ err) >> - return False + Bad err -> do + let errmsg = "Failed to parse request: " ++ err + logWarning errmsg + sendMsg client $ buildResponse False (showJSON errmsg) + return False Ok args -> handleClientMsg client creader args -- | Main client loop: runs one loop of 'handleClient', and if that