From 91b537c1086aaf8bb5c353d5ec769f22dfb1fc34 Mon Sep 17 00:00:00 2001 From: Ian Sinclair Date: Fri, 26 Nov 2021 16:42:28 -0500 Subject: [PATCH 1/3] fix(socket) - add handle_info :ssl_error add handler for error condition to avoid crash on error Closes #https://github.com/codedge-llc/kadabra/issues/44 --- CHANGELOG.md | 4 ++++ lib/socket.ex | 5 +++++ mix.exs | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10299f3..1b115b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## v0.6.1 + +- Added handle_info for :ssl_error + ## v0.6.0 **Security** diff --git a/lib/socket.ex b/lib/socket.ex index b1bb956..18694aa 100644 --- a/lib/socket.ex +++ b/lib/socket.ex @@ -192,4 +192,9 @@ defmodule Kadabra.Socket do Kernel.send(state.active_user, {:closed, self()}) {:noreply, %{state | socket: nil}} end + + def handle_info({:ssl_error, _socket, _reason}, state) do + Kernel.send(state.active_user, {:closed, self()}) + {:noreply, %{state | socket: nil}} + end end diff --git a/mix.exs b/mix.exs index dbf7cb8..c7d6d58 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule Kadabra.Mixfile do use Mix.Project - @version "0.6.0" + @version "0.6.1" def project do [ From f0e08d93ff1afc09cd2e3da48c9233d9cd16bd52 Mon Sep 17 00:00:00 2001 From: Ian Sinclair Date: Tue, 19 Sep 2023 13:00:52 -0400 Subject: [PATCH 2/3] Support Elixir 1.14 --- .tool-versions | 3 ++- lib/frame/continuation.ex | 2 +- lib/frame/data.ex | 2 +- lib/frame/headers.ex | 2 +- lib/frame/ping.ex | 2 +- lib/frame/push_promise.ex | 2 +- lib/frame/settings.ex | 2 +- 7 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.tool-versions b/.tool-versions index fa6f17c..20ee69b 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1 +1,2 @@ -elixir 1.11.3 +erlang 25.3.2.5 +elixir 1.14.5-otp-25 diff --git a/lib/frame/continuation.ex b/lib/frame/continuation.ex index f6e2195..d25def8 100644 --- a/lib/frame/continuation.ex +++ b/lib/frame/continuation.ex @@ -3,7 +3,7 @@ defmodule Kadabra.Frame.Continuation do defstruct [:header_block_fragment, :stream_id, end_headers: false] - use Bitwise + import Bitwise @type t :: %__MODULE__{ end_headers: boolean, diff --git a/lib/frame/data.ex b/lib/frame/data.ex index fc6d127..2608be0 100644 --- a/lib/frame/data.ex +++ b/lib/frame/data.ex @@ -3,7 +3,7 @@ defmodule Kadabra.Frame.Data do defstruct [:stream_id, :data, end_stream: false] - use Bitwise + import Bitwise alias Kadabra.Frame diff --git a/lib/frame/headers.ex b/lib/frame/headers.ex index 94b07e7..7c7310c 100644 --- a/lib/frame/headers.ex +++ b/lib/frame/headers.ex @@ -21,7 +21,7 @@ defmodule Kadabra.Frame.Headers do weight: non_neg_integer } - use Bitwise + import Bitwise alias Kadabra.Frame diff --git a/lib/frame/ping.ex b/lib/frame/ping.ex index 95f29f2..80cfd0f 100644 --- a/lib/frame/ping.ex +++ b/lib/frame/ping.ex @@ -3,7 +3,7 @@ defmodule Kadabra.Frame.Ping do defstruct [:data, stream_id: 0, ack: false] - use Bitwise + import Bitwise alias Kadabra.Frame diff --git a/lib/frame/push_promise.ex b/lib/frame/push_promise.ex index 581aa6d..461a3a2 100644 --- a/lib/frame/push_promise.ex +++ b/lib/frame/push_promise.ex @@ -5,7 +5,7 @@ defmodule Kadabra.Frame.PushPromise do header_block_fragment: nil, stream_id: nil - use Bitwise + import Bitwise alias Kadabra.Frame diff --git a/lib/frame/settings.ex b/lib/frame/settings.ex index ec09b29..b36e553 100644 --- a/lib/frame/settings.ex +++ b/lib/frame/settings.ex @@ -3,7 +3,7 @@ defmodule Kadabra.Frame.Settings do defstruct [:settings, ack: false] - use Bitwise + import Bitwise alias Kadabra.Connection From c0a98f790bd7da1da8372b775fe9cbd9fb90191c Mon Sep 17 00:00:00 2001 From: zeeshan Date: Sat, 4 Jul 2026 20:48:24 +0500 Subject: [PATCH 3/3] feat(socket) - add custom hostname verification for SSL connections Enhance SSL configuration by adding a custom hostname check using public_key's match function. This improves security during SSL handshakes. --- lib/socket.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/socket.ex b/lib/socket.ex index 18694aa..11e7659 100644 --- a/lib/socket.ex +++ b/lib/socket.ex @@ -86,6 +86,8 @@ defmodule Kadabra.Socket do {:verify, :verify_peer}, {:depth, 99}, {:cacerts, :certifi.cacerts()}, + {:customize_hostname_check, + [{:match_fun, :public_key.pkix_verify_hostname_match_fun(:https)}]}, {:alpn_advertised_protocols, [<<"h2">>]}, :binary ]