ESME_RINVCMDLEN dans SMPP

Qu'est-ce que ESME_RINVCMDLEN ?

ESME_RINVCMDLEN (0x00000002) est un code d'erreur SMPP (Short Message Peer-to-Peer) qui indique une longueur de commande invalide dans une PDU SMPP (Protocol Data Unit).

Quand cela se produit-il ?

Cette erreur se produit lorsque le champ de longueur de commande dans la PDU SMPP ne correspond pas à la longueur réelle de la PDU envoyée. Voici quelques raisons courantes :

  • La longueur de commande est incorrectement calculée ou formatée.
  • PDU malformées ou tronquées en raison de problèmes réseau.
  • Erreurs d'encodage dans l'application construisant la PDU.
  • Problèmes avec la bibliothèque SMPP ou l'implémentation du client.

Comment la résoudre ?

  • Assurez-vous que la longueur de commande est correctement calculée comme la taille totale de la PDU, y compris l'en-tête et le corps.
  • Vérifiez que votre bibliothèque SMPP encode et structure correctement la PDU.
  • Recherchez les problèmes réseau pouvant causer une troncation ou une corruption de la PDU.
  • Activez le débogage/la journalisation dans votre client SMPP pour inspecter les PDU brutes envoyées.
  • Assurez-vous que votre application utilise la bonne version du protocole SMPP et respecte ses spécifications.

Exemple de transaction PDU SMPP

PDU correcte

0000001F 00000004 00000000 00000001 74657374 00740000 00010000 00000000

Cette PDU suit correctement le format SMPP :

  • 0000001F → Longueur de commande (31 octets)
  • 00000004 → ID de commande (Submit_SM)
  • 00000000 → Statut de commande (OK)
  • 00000001 → Numéro de séquence
  • 74657374 00 → Message court "test"

PDU incorrecte (provoquant ESME_RINVCMDLEN)

00000010 00000004 00000000 00000001 74657374 0074

Cette PDU incorrecte a une longueur de commande invalide :

  • 00000010 → Longueur de commande déclarée (16 octets, mais la PDU réelle est plus longue)
  • Le décalage entre la longueur déclarée et la taille réelle de la PDU provoque ESME_RINVCMDLEN.

More information