From 4b2cf48808fda182b7fe7763e18c4635e4e2df2a Mon Sep 17 00:00:00 2001 From: Jakub Pisarek <99591440+sgfn@users.noreply.github.com> Date: Mon, 16 Feb 2026 12:59:21 +0100 Subject: [PATCH 1/2] Fix FunctionClauseError when attempting to handle message in error state --- lib/ex_turn/client.ex | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/ex_turn/client.ex b/lib/ex_turn/client.ex index dda067b..14d5c3e 100644 --- a/lib/ex_turn/client.ex +++ b/lib/ex_turn/client.ex @@ -233,7 +233,7 @@ defmodule ExTURN.Client do case {permission, channel} do {false, nil} -> Logger.warning(""" - Tyring to send data but there is no permission for: #{inspect(ip)}. Ignoring. + Trying to send data but there is no permission for: #{inspect(ip)}. Ignoring. """) {:ok, client} @@ -262,7 +262,12 @@ defmodule ExTURN.Client do end @spec handle_message(t(), message()) :: on_handle_message() - def handle_message(%__MODULE__{state: state} = client, msg) when state != :error do + def handle_message(%__MODULE__{state: :error} = client, _msg) do + Logger.debug("Trying to handle internal/external message in state: error. Ignoring.") + {:error, :invalid_state, client} + end + + def handle_message(client, msg) do do_handle_message(client, msg) end From 6c87349a19b91a53d4f80f5588230a00aa3d995d Mon Sep 17 00:00:00 2001 From: Jakub Pisarek <99591440+sgfn@users.noreply.github.com> Date: Wed, 18 Feb 2026 13:23:06 +0100 Subject: [PATCH 2/2] Add test case, release 0.2.1 --- README.md | 2 +- mix.exs | 2 +- test/ex_turn/client_test.exs | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d5b9e6c..ffbfd49 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Implements: ```elixir def deps do [ - {:ex_turn, "~> 0.2.0"} + {:ex_turn, "~> 0.2.1"} ] end ``` diff --git a/mix.exs b/mix.exs index 19c7e2a..f427de1 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule ExTURN.MixProject do use Mix.Project - @version "0.2.0" + @version "0.2.1" @source_url "https://github.com/elixir-webrtc/ex_turn" def project do diff --git a/test/ex_turn/client_test.exs b/test/ex_turn/client_test.exs index a43fc29..1806c99 100644 --- a/test/ex_turn/client_test.exs +++ b/test/ex_turn/client_test.exs @@ -304,6 +304,9 @@ defmodule ExTURN.ClientTest do msg = {:socket_data, @turn_ip, @turn_port, data} assert {:ok, %Client{}} = Client.handle_message(client, msg) + + client = %{client | state: :error} + assert {:error, :invalid_state, ^client} = Client.handle_message(client, msg) end end