Disconnected ESME socket leaves esme entry in smsc->esme_list
esme_link_read_cb() dead socket check in src/libmsc/smpp_smsc.c calls smpp_esme_put() but this does not result in removal of the esme from smsc->esme_list if there is more than one user.
This leads to the wqueue filling up, but because the socket is already gone it is never emptied leading to error messages such as: DLGLOBAL <001e> write_queue.c:112 wqueue(0x7f8bc392f6e0) is full. Rejecting msgb
This is static analysis, this same bug probably exists in legacy code in osmo-msc libmsc/smpp_smsc.c