diff --git a/lib/tres/secure_channel.ex b/lib/tres/secure_channel.ex index 8e7ffc8..5093032 100644 --- a/lib/tres/secure_channel.ex +++ b/lib/tres/secure_channel.ex @@ -489,7 +489,7 @@ defmodule Tres.SecureChannel do {:keep_state, %{state_data | ping_timer_ref: nil, ping_xid: nil}} end - defp xactional_send_message(message, state_data) do + defp xactional_send_message(%{xid: 0} = message, state_data) do xid = State.increment_transaction_id(state_data.xid) messages = [ @@ -500,6 +500,17 @@ defmodule Tres.SecureChannel do XACT_KV.insert(state_data.xact_kv_ref, xid, message) send_message(messages, state_data) end + defp xactional_send_message(%{xid: xid} = message, state_data) do + _ = State.set_transaction_id(state_data.xid, xid) + + messages = [ + %{message | xid: xid}, + %{Openflow.Barrier.Request.new() | xid: xid} + ] + + XACT_KV.insert(state_data.xact_kv_ref, xid, message) + send_message(messages, state_data) + end defp send_message(message, %State{socket: socket, transport: transport}) do if is_list(message) do