SMPP: Introduce ESME reference coounting

In case a ESME disappears after SUBMIT-SM but before the MT-SMS
is delivered (transaction mode), we have to make sure the esme
structure still exists.
diff --git a/openbsc/src/libmsc/smpp_openbsc.c b/openbsc/src/libmsc/smpp_openbsc.c
index 32dac61..f155e9c 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -43,7 +43,7 @@
 
 #include "smpp_smsc.h"
 
-
+/*! \brief find gsm_subscriber for a given SMPP NPI/TON/Address */
 static struct gsm_subscriber *subscr_by_dst(struct gsm_network *net,
 					    uint8_t npi, uint8_t ton, const char *addr)
 {
@@ -65,6 +65,7 @@
 	return subscr;
 }
 
+/*! \brief find a TLV with given tag in list of libsmpp34 TLVs */
 struct tlv_t *find_tlv(struct tlv_t *head, uint16_t tag)
 {
 	struct tlv_t *t;
@@ -76,7 +77,7 @@
 	return NULL;
 }
 
-/* convert from submit_sm_t to gsm_sms */
+/*! \brief convert from submit_sm_t to gsm_sms */
 static int submit_to_sms(struct gsm_sms **psms, struct gsm_network *net,
 			 const struct submit_sm_t *submit)
 {
@@ -156,6 +157,7 @@
 	return ESME_ROK;
 }
 
+/*! \brief handle incoming libsmpp34 ssubmit_sm_t from remote ESME */
 int handle_smpp_submit(struct osmo_esme *esme, struct submit_sm_t *submit,
 		       struct submit_sm_resp_t *submit_r)
 {
@@ -167,6 +169,7 @@
 		submit_r->command_status = rc;
 		return 0;
 	}
+	smpp_esme_get(esme);
 	sms->smpp.esme = esme;
 	/* FIXME: TP-PID */
 
@@ -195,6 +198,7 @@
 	return rc;
 }
 
+/*! \brief signal handler for status of attempted SMS deliveries */
 static int smpp_sms_cb(unsigned int subsys, unsigned int signal,
 			void *handler_data, void *signal_data)
 {
@@ -235,7 +239,7 @@
 	return rc;
 }
 
-
+/*! \brief Initialize the OpenBSC SMPP interface */
 int smpp_openbsc_init(struct gsm_network *net, uint16_t port)
 {
 	struct smsc *smsc = talloc_zero(net, struct smsc);