diff --git a/bin/enum_gen b/bin/enum_gen index cc53b57..46f05e6 100755 Binary files a/bin/enum_gen and b/bin/enum_gen differ diff --git a/lib/openflow/hello.ex b/lib/openflow/hello.ex index 463e32e..aa3da17 100644 --- a/lib/openflow/hello.ex +++ b/lib/openflow/hello.ex @@ -23,8 +23,9 @@ defmodule Openflow.Hello do def supported_version?(%Hello{elements: []}), do: false def supported_version?(%Hello{elements: elements}) do - versionbitmaps = for {:versionbitmap, versions} <- elements, do: versions - Enum.any?(versionbitmaps, fn versions -> 4 in versions end) + elements + |> Enum.reduce([], fn({:versionbitmap, versions}, acc) -> acc ++ versions end) + |> Enum.any?(fn(version) -> version == 4 end) end def read(binary), do: %Hello{elements: decode([], binary)} diff --git a/lib/tres/secure_channel.ex b/lib/tres/secure_channel.ex index 91f11be..8d7911b 100644 --- a/lib/tres/secure_channel.ex +++ b/lib/tres/secure_channel.ex @@ -16,7 +16,7 @@ defmodule Tres.SecureChannel do @supported_version 4 - @hello_handshake_timeout 1000 + @hello_handshake_timeout 3000 @features_handshake_timeout 1000 @ping_timeout 5000 # @transaction_timeout 5000 @@ -402,10 +402,10 @@ defmodule Tres.SecureChannel do end defp handle_hello_handshake_1(hello, state_data) do - maybe_cancel_timer(state_data.timer_ref) State.set_transaction_id(state_data.xid, hello.xid) if Openflow.Hello.supported_version?(hello) do + :ok = maybe_cancel_timer(state_data.timer_ref) {:next_state, :CONNECTING, %{state_data | timer_ref: nil}} else close_connection(:failed_version_negotiation, state_data)