ESME_RINVCMDLEN in SMPP

What is ESME_RINVCMDLEN?

ESME_RINVCMDLEN (0x00000002) is an SMPP (Short Message Peer-to-Peer) error code that indicates an invalid command length in an SMPP PDU (Protocol Data Unit).

When Does It Happen?

This error occurs when the command length field in the SMPP PDU does not match the actual length of the PDU being sent. Some common reasons include:

  • The command length is incorrectly calculated or formatted.
  • Malformed or truncated PDUs due to network issues.
  • Encoding errors in the application constructing the PDU.
  • Issues with the SMPP library or client implementation.

How to Solve It?

  • Ensure the command length is correctly calculated as the total size of the PDU, including the header and body.
  • Verify that your SMPP library correctly encodes and structures the PDU.
  • Check for network issues that may cause truncation or corruption of the PDU.
  • Enable debugging/logging in your SMPP client to inspect the raw PDUs being sent.
  • Ensure your application is using the correct SMPP protocol version and conforms to its specifications.

Example SMPP PDU Transaction

Correct PDU

0000001F 00000004 00000000 00000001 74657374 00740000 00010000 00000000

This PDU correctly follows the SMPP format:

  • 0000001F → Command Length (31 bytes)
  • 00000004 → Command ID (Submit_SM)
  • 00000000 → Command Status (OK)
  • 00000001 → Sequence Number
  • 74657374 00 → Short Message "test"

Incorrect PDU (Causing ESME_RINVCMDLEN)

00000010 00000004 00000000 00000001 74657374 0074

This incorrect PDU has an invalid command length:

  • 00000010 → Declared Command Length (16 bytes, but actual PDU is longer)
  • Mismatch between declared length and actual PDU size causes ESME_RINVCMDLEN.

More information