K2InformaticsGmbH / smpp_parser

A parser for SMPP protocol PDUs
Apache License 2.0
3 stars 1 forks source link

Unpack error {'ESME_RINVTLVSTREAM', "Error in the optional part of the PDU Body"} (1). #39

Closed walter-weinmann closed 6 years ago

walter-weinmann commented 6 years ago

Example:

 {"query_broadcast_sm_resp",
  "00 00 00 69 80 00 01 12 00 00 00 00 B3 DA 76 D9 74 68 69 73 5F 63 6F 75 6C "
  "64 5F 62 65 5F 61 5F 6D 65 73 73 61 67 65 5F 69 64 00 04 24 00 01 07 06 06 "
  "00 23 01 6D 79 5F 62 72 6F 61 64 63 61 73 74 5F 61 72 65 61 5F 69 64 65 6E "
  "74 69 66 69 65 72 5F 30 30 30 30 34 06 08 00 01 55 06 09 00 12 30 34 30 35 "
  "31 31 32 35 00"}
f().
D = <<"00 00 00 69 80 00 01 12 00 00 00 00 B3 DA 76 D9 74 68 69 73 5F 63 6F 75 6C 64 5F 62 65 5F 61 5F 6D 65 73 73 61 67 65 5F 69 64 00 04 24 00 01 07 06 06 00 23 01 6D 79 5F 62 72 6F 61 64 63 61 73 74 5F 61 72 65 61 5F 69 64 65 6E 74 69 66 69 65 72 5F 30 30 30 30 34 06 08 00 01 55 06 09 00 12 30 34 30 35 31 31 32 35 00">>.
{ok, DStr} = smpp:decode(D).
smpp:encode(DStr).
DStr == D.
c-bik commented 6 years ago

@walter-weinmann looks like this PDU is malformed:

00 00 00 69 % command_length (105)
80 00 01 12 % command_id (query_broadcast_sm_resp)
00 00 00 00 % command_status (ESME_ROK)
B3 DA 76 D9 % sequence_number (3017438937)
% message_id ("this_could_be_a_message_id\0")
74 68 69 73 5F 63 6F 75 6C 64 5F 62 65 5F 61 5F 6D 65 73 73 61 67 65 5F 69 64 00
% message_payload TLV
04 24 00 01 07 06 06 00 23 01 6D 79 5F 62 72 6F 61 64 63 61 73 74 5F 61 72 65 61 5F 69 64 65 6E 74 69 66 69 65 72 5F 30 30 30 30 34 06 08 00 01 55 06 09 00 12 30 34 30 35 31 31 32 35 00

Expected: image image

walter-weinmann commented 6 years ago

Test data generated in the wrong format.