secure_channel: Fix transactional_send API to accept xid from handler processes

This commit is contained in:
Eishun Kondoh 2018-03-19 23:39:55 +09:00
parent cf5a09dfb4
commit bb74f3d8c4

View file

@ -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