From 1992b7e79e0714a4951133c3a84c5c2c44212723 Mon Sep 17 00:00:00 2001 From: Moishe Lettvin Date: Wed, 14 Feb 2024 12:10:47 -0500 Subject: [PATCH] fix sigint handling --- src/dailyai/services/base_transport_service.py | 2 ++ src/dailyai/services/daily_transport_service.py | 3 +++ src/dailyai/services/{to_be_updated => }/playht_ai_service.py | 0 3 files changed, 5 insertions(+) rename src/dailyai/services/{to_be_updated => }/playht_ai_service.py (100%) diff --git a/src/dailyai/services/base_transport_service.py b/src/dailyai/services/base_transport_service.py index beaab2b20..530990cfa 100644 --- a/src/dailyai/services/base_transport_service.py +++ b/src/dailyai/services/base_transport_service.py @@ -91,6 +91,8 @@ class BaseTransportService(): self._receive_audio_thread.join() def _post_run(self): + # Note that this function must be idempotent! It can be called multiple times + # if, for example, a keyboard interrupt occurs. pass def stop(self): diff --git a/src/dailyai/services/daily_transport_service.py b/src/dailyai/services/daily_transport_service.py index f29633d87..44c2f63fb 100644 --- a/src/dailyai/services/daily_transport_service.py +++ b/src/dailyai/services/daily_transport_service.py @@ -194,10 +194,13 @@ class DailyTransportService(BaseTransportService, EventHandler): if self._token and self._start_transcription: self.client.start_transcription(self.transcription_settings) + self.original_sigint_handler = signal.getsignal(signal.SIGINT) signal.signal(signal.SIGINT, self.process_interrupt_handler) def process_interrupt_handler(self, signum, frame): self._post_run() + if callable(self.original_sigint_handler): + self.original_sigint_handler(signum, frame) def _post_run(self): self.client.leave() diff --git a/src/dailyai/services/to_be_updated/playht_ai_service.py b/src/dailyai/services/playht_ai_service.py similarity index 100% rename from src/dailyai/services/to_be_updated/playht_ai_service.py rename to src/dailyai/services/playht_ai_service.py