From f840e8fd34798c1e719ff94caba9f3d35725c412 Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Sun, 22 Mar 2026 17:16:31 -0500 Subject: [PATCH] fix: guard APRS send_message when disconnected --- lib/aprsme/is/is.ex | 5 ++++- test/aprsme/is_test.exs | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/aprsme/is/is.ex b/lib/aprsme/is/is.ex index cdec341..d93704a 100644 --- a/lib/aprsme/is/is.ex +++ b/lib/aprsme/is/is.ex @@ -189,7 +189,10 @@ defmodule Aprsme.Is do end def send_message(message) do - GenServer.call(__MODULE__, {:send_message, message}) + case Process.whereis(__MODULE__) do + nil -> {:error, :not_connected} + _pid -> GenServer.call(__MODULE__, {:send_message, message}) + end end # Server methods diff --git a/test/aprsme/is_test.exs b/test/aprsme/is_test.exs index 15b74c5..2297f4b 100644 --- a/test/aprsme/is_test.exs +++ b/test/aprsme/is_test.exs @@ -195,6 +195,12 @@ defmodule Aprsme.IsTest do end end + describe "send_message/1 when GenServer is not running" do + test "returns not_connected instead of crashing" do + assert Aprsme.Is.send_message("test message") == {:error, :not_connected} + end + end + describe "handle_info(:aprsme_no_message_timeout, ...)" do test "ignores timeout when socket is nil" do state = build_state(%{socket: nil})