sccp_codec: make sure we also accept list input, not just binary
diff --git a/src/sccp_codec.erl b/src/sccp_codec.erl
index 8a191fa..044dd75 100644
--- a/src/sccp_codec.erl
+++ b/src/sccp_codec.erl
@@ -31,6 +31,11 @@
-compile({parse_transform, exprecs}).
-export_records([global_title, sccp_addr, sccp_msg]).
+binarify(In) when is_binary(In) ->
+ In;
+binarify(In) when is_list(In) ->
+ list_to_binary(In).
+
parse_point_code(BinPC, PCind) when is_binary(BinPC) ->
case PCind of
1 ->
@@ -354,13 +359,13 @@
encode_sccp_msgt(?SCCP_MSGT_DT1, Params) ->
DstLocalRef = proplists:get_value(dst_local_ref, Params),
SegmReass = proplists:get_value(segm_reass, Params),
- UserData = proplists:get_value(user_data, Params),
+ UserData = binarify(proplists:get_value(user_data, Params)),
UserDataLen = byte_size(UserData),
<<?SCCP_MSGT_DT1:8, DstLocalRef:24/big, SegmReass:8, 1:8, UserDataLen:8, UserData/binary>>;
encode_sccp_msgt(?SCCP_MSGT_DT2, Params) ->
DstLocalRef = proplists:get_value(dst_local_ref, Params),
SeqSegm = proplists:get_value(seq_segm, Params),
- UserData = proplists:get_value(user_data, Params),
+ UserData = binarify(proplists:get_value(user_data, Params)),
UserDataLen = byte_size(UserData),
<<?SCCP_MSGT_DT2:8, DstLocalRef:24/big, SeqSegm:16, 1:8, UserDataLen:8, UserData/binary>>;
encode_sccp_msgt(?SCCP_MSGT_AK, Params) ->
@@ -376,7 +381,7 @@
CallingParty = proplists:get_value(calling_party_addr, Params),
CallingPartyEnc = encode_sccp_addr(CallingParty),
CallingPartyLen = byte_size(CallingPartyEnc),
- UserData = proplists:get_value(user_data, Params),
+ UserData = binarify(proplists:get_value(user_data, Params)),
UserDataLen = byte_size(UserData),
% variable part
CalledPartyPtr = 3,
@@ -394,7 +399,7 @@
CallingParty = proplists:get_value(calling_party_addr, Params),
CallingPartyEnc = encode_sccp_addr(CallingParty),
CallingPartyLen = byte_size(CallingPartyEnc),
- UserData = proplists:get_value(user_data, Params),
+ UserData = binarify(proplists:get_value(user_data, Params)),
UserDataLen = byte_size(UserData),
% variable part
CalledPartyPtr = 3,
@@ -406,7 +411,7 @@
<<?SCCP_MSGT_UDTS:8, ReturnCause:8, CalledPartyPtr:8, CallingPartyPtr:8, DataPtr:8, Remain/binary>>;
encode_sccp_msgt(?SCCP_MSGT_ED, Params) ->
DstLocalRef = proplists:get_value(dst_local_ref, Params),
- UserData = proplists:get_value(user_data, Params),
+ UserData = binarify(proplists:get_value(user_data, Params)),
UserDataLen = byte_size(UserData),
DataPtr = 1,
<<?SCCP_MSGT_ED:8, DstLocalRef:24/big, DataPtr:8, UserDataLen:8, UserData/binary>>;