diff options
| author | LLLL Colonq <llll@colonq> | 2025-06-12 21:56:22 -0400 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2025-06-12 21:56:22 -0400 |
| commit | 0f8a0bf2c0dce27cb832896731e2047e07310ebc (patch) | |
| tree | 063e068dca876db0375b02ae6d3e4fbe89785ff7 | |
| parent | c45abd29a5e4a9146cbe94789b7b3787eb02e5a5 (diff) | |
fig-bus: Properly handle bus close, wait longer between restarts
| -rw-r--r-- | fig-bus/src/Fig/Bus/Binary/Utils.hs | 15 | ||||
| -rw-r--r-- | fig-web/src/Fig/Web/Secure.hs | 1 | ||||
| -rw-r--r-- | flake.nix | 14 |
3 files changed, 14 insertions, 16 deletions
diff --git a/fig-bus/src/Fig/Bus/Binary/Utils.hs b/fig-bus/src/Fig/Bus/Binary/Utils.hs index a270fcc..8add010 100644 --- a/fig-bus/src/Fig/Bus/Binary/Utils.hs +++ b/fig-bus/src/Fig/Bus/Binary/Utils.hs @@ -15,13 +15,14 @@ intFromLEBytes [] = 0 intFromLEBytes (x:xs) = shiftL (intFromLEBytes xs) 8 .|. fromIntegral x readLengthPrefixed :: Handle -> IO (Maybe ByteString) -readLengthPrefixed h = do - n <- hGet h 4 - case intFromLEBytes (BS.unpack n) of - 0 -> pure $ Just "" - len -> do - x <- hGet h len - pure $ Just x +readLengthPrefixed h = hGet h 4 >>= \case + n | BS.null n -> pure Nothing + n -> + case intFromLEBytes (BS.unpack n) of + 0 -> pure $ Just "" + len -> do + x <- hGet h len + pure $ Just x readEvent :: Handle -> IO (Maybe EventType) readEvent h = do diff --git a/fig-web/src/Fig/Web/Secure.hs b/fig-web/src/Fig/Web/Secure.hs index 9626aaa..303089b 100644 --- a/fig-web/src/Fig/Web/Secure.hs +++ b/fig-web/src/Fig/Web/Secure.hs @@ -57,6 +57,7 @@ app args = do ] Wai.Static.<|> Wai.Static.hasPrefix "assets" Wai.Static.<|> Wai.Static.hasPrefix "newton" + Wai.Static.<|> Wai.Static.hasPrefix "ranch" , Wai.Static.addBase args.cfg.assetPath ] onGet "/" do @@ -43,10 +43,7 @@ fig-monitor-twitch = self.callCabal2nix "fig-monitor-twitch" ./fig-monitor-twitch {}; fig-monitor-discord = self.callCabal2nix "fig-monitor-discord" ./fig-monitor-discord {}; fig-monitor-irc = self.callCabal2nix "fig-monitor-irc" ./fig-monitor-irc {}; - fig-monitor-bullfrog = self.callCabal2nix "fig-monitor-bullfrog" ./fig-monitor-bullfrog {}; fig-bridge-irc-discord = self.callCabal2nix "fig-bridge-irc-discord" ./fig-bridge-irc-discord {}; - fig-bless = self.callCabal2nix "fig-bless" ./fig-bless {}; - fig-emulator-gb = self.callCabal2nix "fig-emulator-gb" ./fig-emulator-gb {}; fig-web = self.callCabal2nix "fig-web" ./fig-web {}; }; haskellPackages = pkgs.haskell.packages.ghc94.override { @@ -152,8 +149,13 @@ systemd.services."colonq.fig-monitor-twitch-live-watcher" = { wantedBy = ["multi-user.target"]; after = ["colonq.fig-bus.service"]; + unitConfig = { + StartLimitInterval = "3600"; + StartLimitBurst = "5"; + }; serviceConfig = { Restart = "on-failure"; + RestartSec = "300"; ExecStart = "${haskellPackages.fig-monitor-twitch}/bin/fig-monitor-twitch live-checker --bus-host ${cfg.busHost} --bus-port ${toString cfg.busPort} --config ${cfg.configFile}"; DynamicUser = "yes"; RuntimeDirectory = "colonq.fig-monitor-twitch-live-watcher"; @@ -403,11 +405,8 @@ fig-monitor-twitch fig-monitor-discord fig-monitor-irc - fig-monitor-bullfrog fig-bridge-irc-discord - fig-bless fig-web - fig-emulator-gb ]; withHoogle = true; buildInputs = [ @@ -424,10 +423,7 @@ figMonitorTwitch = haskellPackages.fig-monitor-twitch; figMonitorDiscord = haskellPackages.fig-monitor-discord; figMonitorIRC = haskellPackages.fig-monitor-irc; - figMonitorBullfrog = haskellPackages.fig-monitor-bullfrog; figBridgeIRCDiscord = haskellPackages.fig-bridge-irc-discord; - figBless = haskellPackages.fig-bless; - figEmulatorGB = haskellPackages.fig-emulator-gb; figWeb = haskellPackages.fig-web; }; apps.x86_64-linux.default = { |
