ESME_RINVCMDLEN en SMPP

¿Qué es ESME_RINVCMDLEN?

ESME_RINVCMDLEN (0x00000002) es un código de error de SMPP (Short Message Peer-to-Peer) que indica una longitud de comando inválida en una PDU (Unidad de Datos de Protocolo) de SMPP.

¿Cuándo ocurre?

Este error ocurre cuando el campo de longitud de comando en la PDU de SMPP no coincide con la longitud real de la PDU enviada. Algunas razones comunes incluyen:

  • La longitud del comando se calcula o formatea incorrectamente.
  • PDUs malformadas o truncadas debido a problemas de red.
  • Errores de codificación en la aplicación que construye la PDU.
  • Problemas con la implementación de la biblioteca o cliente SMPP.

¿Cómo solucionarlo?

  • Asegúrate de que la longitud del comando se calcule correctamente como el tamaño total de la PDU, incluyendo la cabecera y el cuerpo.
  • Verifica que tu biblioteca SMPP codifique y estructure correctamente la PDU.
  • Comprueba si hay problemas de red que puedan causar truncamiento o corrupción de la PDU.
  • Habilita depuración/registros en tu cliente SMPP para inspeccionar las PDUs enviadas en crudo.
  • Asegúrate de que tu aplicación utilice la versión correcta del protocolo SMPP y cumpla con sus especificaciones.

Ejemplo de transacción PDU SMPP

PDU correcta

0000001F 00000004 00000000 00000001 74657374 00740000 00010000 00000000

Esta PDU sigue correctamente el formato SMPP:

  • 0000001F → Longitud del comando (31 bytes)
  • 00000004 → ID del comando (Submit_SM)
  • 00000000 → Estado del comando (OK)
  • 00000001 → Número de secuencia
  • 74657374 00 → Mensaje corto "test"

PDU incorrecta (Causando ESME_RINVCMDLEN)

00000010 00000004 00000000 00000001 74657374 0074

Esta PDU incorrecta tiene una longitud de comando inválida:

  • 00000010 → Longitud declarada del comando (16 bytes, pero la PDU real es más larga)
  • La discrepancia entre la longitud declarada y el tamaño real de la PDU causa ESME_RINVCMDLEN.

More information