The errors are handled in three ways:
Errors authoritatively unrecoverable - no retries are attempted, the SMS fails immediately
Examples: unknownSubscriber, callBarred, teleserviceNotProvisioned, equipmentProtocolError, equipmentNotSM-Equipped
Errors caused by temporary subscriber or memory unavailability - they have their own large retry interval and immediate retry on notification
Examples: absentSubscriber, unidentifiedSubscriber, memoryCapacityExceeded, sc-Congestion, sm-DeliveryFailure
Any other errors - it is unlikely the message will pass through but we retry anyway
Example:
If the firewall responds with an incorrect error (for example, “Invoke-IncorrectParameter”), it will fall in the 3rd case, causing a few retries followed by message drop.
In this scenario, the problem would be in the SMS User Data.
A SMS firewall in the visited MSC detects an incorrect User Data Header and returns this unexpected error (the standard has no support for firewalls).
If there wasn’t any firewall, the phone would have rejected the message with equipmentProtocolError telling us that it will never accept it because it is malformed.