From e5f49b420ce0e66c9cc2c34d3f1cb3f7d0b67b5f Mon Sep 17 00:00:00 2001 From: Steven Nguyen <1477010+stnguyen90@users.noreply.github.com> Date: Wed, 8 May 2024 22:48:25 +0000 Subject: [PATCH] fix(realtime): handle SQL error code 'HY000' SQL can throw an error where the code is a string like 'HY000', but $server->close() expects an integer. This change ensures we only pass an integer into $server->close(). --- app/realtime.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/realtime.php b/app/realtime.php index 3be7c45723..6f327fbaff 100644 --- a/app/realtime.php +++ b/app/realtime.php @@ -511,16 +511,22 @@ $server->onOpen(function (int $connection, SwooleRequest $request) use ($server, } catch (Throwable $th) { call_user_func($logError, $th, "initServer"); + // Handle SQL error code is 'HY000' + $code = $th->getCode(); + if (!is_int($code)) { + $code = 500; + } + $response = [ 'type' => 'error', 'data' => [ - 'code' => $th->getCode(), + 'code' => $code, 'message' => $th->getMessage() ] ]; $server->send([$connection], json_encode($response)); - $server->close($connection, $th->getCode()); + $server->close($connection, $code); if (App::isDevelopment()) { Console::error('[Error] Connection Error');