tcap_tco_server: Fix ASN.1 encode of TR-UNI.req

Handle the return value of the asn1 encoder, considering its use of
iolists as well as the {ok, ...} return tuple
This commit is contained in:
Harald Welte 2011-10-15 21:48:43 +02:00
parent a4df76e84d
commit e5a830d607
1 changed files with 17 additions and 9 deletions

View File

@ -487,15 +487,23 @@ handle_cast({'TR', 'UNI', request, UniParams}, State)
{SequenceControl, ReturnOption, Importance} = UniParams#'TR-UNI'.qos,
DialoguePortion = (UniParams#'TR-UNI'.userData)#'TR-user-data'.dialoguePortion,
ComponentPortion = (UniParams#'TR-UNI'.userData)#'TR-user-data'.componentPortion,
TPDU = 'TR':encode('TCMessage', {unidirectional, #'Unidirectional'{
dialoguePortion = DialoguePortion, components = ComponentPortion}}),
SccpParams = #'N-UNITDATA'{calledAddress = UniParams#'TR-UNI'.destAddress,
callingAddress = UniParams#'TR-UNI'.origAddress,
sequenceControl = SequenceControl, returnOption = ReturnOption,
importance = Importance, userData = TPDU},
Module = State#state.module,
Module:send_primitive({'N', 'UNITDATA', request, SccpParams}, State#state.ext_state),
{noreply, State};
case 'TR':encode('TCMessage', {unidirectional, #'Unidirectional'{
dialoguePortion = DialoguePortion, components = ComponentPortion}}) of
{ok, TPDU} ->
TpduBin = iolist_to_binary(TPDU),
SccpParams = #'N-UNITDATA'{calledAddress = UniParams#'TR-UNI'.destAddress,
callingAddress = UniParams#'TR-UNI'.origAddress,
sequenceControl = SequenceControl, returnOption = ReturnOption,
importance = Importance, userData = TpduBin},
Module = State#state.module,
Module:send_primitive({'N', 'UNITDATA', request, SccpParams}, State#state.ext_state),
{noreply, State};
{error, Err} ->
error_logger:error_report(["Error generating ASN1", {error, Err},
{dialogue_portion, DialoguePortion},
{components, ComponentPortion}]),
{noreply, State}
end;
handle_cast({'TR', 'BEGIN', request, BeginParams}, State)
when is_record(BeginParams, 'TR-BEGIN') ->
% Create a Transaction State Machine (TSM)