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