ESME_RINVTLVSTREAM in SMPP

What is ESME_RINVTLVSTREAM?

ESME_RINVTLVSTREAM (Error Code: 0x00000069) is an SMPP error indicating that the Tag-Length-Value (TLV) fields in the request are incorrectly formatted, corrupt, or do not conform to the expected structure.

Possible Causes

  • The TLV parameters are not formatted correctly (e.g., incorrect length values).
  • Multiple TLV fields are overlapping or misaligned.
  • The request contains an unexpected TLV structure.
  • Invalid or corrupted data in the TLV section of the PDU.

When Does It Happen?

This error occurs when an ESME sends an SMPP request with improperly structured TLV parameters, causing the SMSC to reject the request.

Example SMPP PDU Transaction

Request PDU (submit_sm) Sent by ESME with an Invalid TLV Stream

00000040 (Length)
00000004 (Command ID for submit_sm)
00000000 (Command Status)
00000001 (Sequence Number)
00 (Service Type)
01 (Source Address TON - International)
01 (Source Address NPI - ISDN)
31323334 00 (Source Address: "1234")
01 (Destination Address TON - International)
01 (Destination Address NPI - ISDN)
39383736 00 (Destination Address: "9876")
00 (ESM Class)
00 (Protocol ID)
00 (Priority Flag)
00000000 (Schedule Delivery Time - Not Set)
00000000 (Validity Period - Not Set)
00 (Replace If Present Flag)
00 (Sm Default Msg ID)
0005 (Message Length)
48656C6C 6F (Message: "Hello")
0421 0003 0102 (Invalid TLV: Incorrect Length)

Response PDU (submit_sm_resp) with ESME_RINVTLVSTREAM

00000010 (Length)
80000004 (Command ID for submit_sm_resp)
00000069 (Command Status - ESME_RINVTLVSTREAM)
00000001 (Sequence Number)

Issue: The TLV (Tag 0x0421) has an incorrect length (3 bytes instead of expected 1 or 2).

How to Solve It?

  • Validate the TLV structure against the SMPP specification.
  • Ensure the TLV length fields accurately represent the actual data length.
  • Check for overlapping TLVs or misaligned data.
  • Use a packet analyzer or SMPP simulator to debug and inspect the request.
  • Remove suspect TLVs and test without them to confirm the root cause.

Correcting the TLV formatting and ensuring proper length encoding will resolve this issue.

More information