aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@gnumonks.org>2017-08-07 14:01:15 +0100
committerNeels Hofmeyr <neels@hofmeyr.de>2017-08-27 17:40:55 +0200
commit0df759f4d4cd6c2a2ef8de4fee6cc6da09d5f64c (patch)
tree90579b2af98aecb539db615cbe4c803be4691d0f /src
parentdfee04230828d40978bcb01147de3408e7b2c8c7 (diff)
libmsc: set registered_delivery field in SMPP 3.4 DELIVER_SM messages
Propagate the status report request field to the SMPP message through the registered_delivery field, so the ESME knows that the mobile phone is asking for explicit delivery acknowledgment is required. See SMPP 3.4 specs section 5.2.17. Change-Id: I59af60fa89cd10ae973c5e122789e3e03e3728ee
Diffstat (limited to 'src')
-rw-r--r--src/libmsc/smpp_openbsc.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libmsc/smpp_openbsc.c b/src/libmsc/smpp_openbsc.c
index bf63f6be9..8a1a7dabf 100644
--- a/src/libmsc/smpp_openbsc.c
+++ b/src/libmsc/smpp_openbsc.c
@@ -606,6 +606,10 @@ struct osmo_smpp_cmd *smpp_cmd_find_by_seqnum(struct osmo_esme *esme,
return NULL;
}
+/* See SMPP 3.4, Section 5.2.17. registered_delivery (1 byte field). */
+#define SMPP34_NO_DELIVERY_RECEIPT 0x0
+#define SMPP34_DELIVERY_RECEIPT_REQ 0x1
+
static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
struct gsm_subscriber_connection *conn)
{
@@ -646,7 +650,10 @@ static int deliver_to_esme(struct osmo_esme *esme, struct gsm_sms *sms,
deliver.protocol_id = sms->protocol_id;
deliver.priority_flag = 0;
- deliver.registered_delivery = 0;
+ if (sms->status_rep_req)
+ deliver.registered_delivery = SMPP34_DELIVERY_RECEIPT_REQ;
+ else
+ deliver.registered_delivery = SMPP34_NO_DELIVERY_RECEIPT;
/* Figure out SMPP DCS from TP-DCS */
dcs = sms->data_coding_scheme;