diff --git a/rebar.config b/rebar.config index 7eb849a..95a74fe 100644 --- a/rebar.config +++ b/rebar.config @@ -1,2 +1,2 @@ {sub_dirs, ["rel"]}. -{asn1_opts, [ber_bin]}. +{asn1_opts, [ber,verbose]}. diff --git a/src/map_codec.erl b/src/map_codec.erl index eb1f814..90d51d3 100644 --- a/src/map_codec.erl +++ b/src/map_codec.erl @@ -72,7 +72,10 @@ encode_addr_string(#party_number{nature_of_addr_ind = NatureIsup, binary_to_list(Bin). parse_tcap_msg(MsgBin) when is_binary(MsgBin) -> - case asn1rt:decode('map', 'MapSpecificPDUs', MsgBin) of + Msg = binary_to_list(MsgBin), + parse_tcap_msg(Msg); +parse_tcap_msg(Msg) when is_list(Msg) -> + case asn1rt:decode('map', 'MapSpecificPDUs', Msg) of {ok, {Type, TcapMsgDec}} -> {Type, TcapMsgDec}; Error -> @@ -80,4 +83,9 @@ parse_tcap_msg(MsgBin) when is_binary(MsgBin) -> end. encode_tcap_msgt(Type, TcapMsgDec) -> - asn1rt:encode('map', Type, TcapMsgDec). + case asn1rt:encode('map', Type, TcapMsgDec) of + {ok, List} -> + list_to_binary(List); + Error -> + Error + end.