What you need
Ask your provider for:Which bind type
The limits that apply to you
Your provider sets these; knowing they exist saves guessing at a refused bind.
Window size is the one that shapes your throughput. It is how many
submit_sm you may have
outstanding without a response. A client that waits for each response before sending the next is
limited by round-trip time no matter how large the window is.
If your bind is refused
Four causes, and the refusal does not always distinguish them:1
Wrong credential type
An HTTP login. Refused as an authentication failure.
2
Wrong system_id or password
Case-sensitive, both.
3
A limit already reached
Another session of yours is still open — including a stale one the far end has not yet timed out.
4
Your IP is not allowed
If an allow list is configured, everything else can be right and the bind still fails.
Keeping the session alive
Sendenquire_link on an interval — every 30 seconds is typical. It is how both ends notice a
connection that has died without a FIN, which is the normal outcome of a NAT timeout or a
firewall reaping an idle flow.
Your library almost certainly does this for you. Confirm it, because a session that is dead but not
closed accepts your submit_sm into a socket buffer and loses them.
No bind address on the listener
Worth knowing if you are asking your provider to restrict access: both listeners bind every interface, and there is no bind-address setting — the underlying library has no such option. Restricting exposure is done with a firewall, a network namespace, or by binding the container to one interface. If your provider tells you a listener is “only on the internal interface”, that is something they arranged around the gateway, not in it.Related
Submitting messages
submit_sm, encoding, and the fields that matter.Listener settings
Every listener and vendor property.