From d5b8b0b19c8da551e2c0b42fb16d54adc8346911 Mon Sep 17 00:00:00 2001 From: Fijxu Date: Wed, 18 Sep 2024 18:14:28 -0300 Subject: [PATCH] SigHelper: Reconnect to signature helper --- src/invidious/helpers/sig_helper.cr | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/invidious/helpers/sig_helper.cr b/src/invidious/helpers/sig_helper.cr index 9e72c1c7..9eff852f 100644 --- a/src/invidious/helpers/sig_helper.cr +++ b/src/invidious/helpers/sig_helper.cr @@ -176,7 +176,9 @@ module Invidious::SigHelper @conn : Connection - def initialize(uri_or_path) + @uri_or_path : String + + def initialize(@uri_or_path) @conn = Connection.new(uri_or_path) listen end @@ -186,10 +188,26 @@ module Invidious::SigHelper LOGGER.debug("SigHelper: Multiplexor listening") - # TODO: reopen socket if unexpectedly closed spawn do loop do - receive_data + begin + receive_data + rescue ex + LOGGER.info("SigHelper: Connection to helper died with '#{ex.message}' trying to reconnect...") + # We close the socket because for some reason is not closed. + @conn.close + loop do + begin + @conn = Connection.new(@uri_or_path) + LOGGER.info("SigHelper: Reconnected to SigHelper!") + rescue ex + LOGGER.debug("SigHelper: Reconnection to helper unsuccessful with error '#{ex.message}' retrying") + sleep 500.milliseconds + next + end + break if !@conn.closed? + end + end Fiber.yield end end