OpenMSC: validity_minutes not set when sms is from SMPP + SMS not added in pending list.

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Denis Artru denis at artru.fr
Mon Apr 6 20:35:56 UTC 2020


Hello all,

1) When an SMS is received from SMPP, the validity_minutes is not set (value 0).
The consequence is that email is deleted from database too early in case of failure.
In file: src/libmsc/smpp_openbsc.c function submit_to_sms translate convert from submit_sm_t to gsm_sms.
But some field of gsm_sms are not filled, in particularly validity_minutes.
I think that validity_minutes must be computed from submit_sm_t.schedule_delivery_time or submit_sm_t.validity_period.
Sorry I don’t know exactly content of these values.

2) In file src/libmsc/sms_queue.c function sub_ready_for_sm,
before sending SMS using the function gsm411_send_sms,
the SMS is not place in pending list. Like it is done in functions sms_submit_pending and sms_send_next.
The consequence is that when handset do a Location Updating Request,
only one SMS is send if they are many SMS for this subscribers.
Because in function sms_sms_cb call of
pending = sms_find_pending(network->sms_queue, sig_sms->sms->id);
will always return 0.

I try the following fix and was working
but I don’t know if it possible that an SMS was already in the list? 

+	struct gsm_sms_queue *smsq = net->sms_queue;
+	struct gsm_sms_pending *pendingSms = sms_pending_from(smsq, sms);
+	if (!pendingSms) {
+		LOGP(DLSMS, LOGL_ERROR,
+			"Failed to create pending SMS entry.\n");
+		sms_free(sms);
+		return 0;
+	}
+	llist_add_tail(&pendingSms->entry, &smsq->pending_sms);
 	gsm411_send_sms(net, vsub, sms);
 	return 0;
 }

Thanks you,

Denis


More information about the OpenBSC mailing list