sms_queue: Use local variable rather than 9x pointer de-ref in function

Change-Id: Idf6eb9ec6603a0643033396ed9227e4319724145
This commit is contained in:
Harald Welte 2022-05-17 14:38:45 +02:00 committed by laforge
parent 1a62db20e7
commit 03e8583a43
1 changed files with 10 additions and 9 deletions

View File

@ -584,6 +584,7 @@ static int sms_sms_cb(unsigned int subsys, unsigned int signal,
void *handler_data, void *signal_data)
{
struct gsm_network *network = handler_data;
struct gsm_sms_queue *smq = network->sms_queue;
struct sms_signal_data *sig_sms = signal_data;
struct gsm_sms_pending *pending;
struct vlr_subscr *vsub;
@ -591,7 +592,7 @@ static int sms_sms_cb(unsigned int subsys, unsigned int signal,
/* We got a new SMS and maybe should launch the queue again. */
if (signal == S_SMS_SUBMITTED || signal == S_SMS_SMMA) {
/* TODO: For SMMA we might want to re-use the radio connection. */
sms_queue_trigger(network->sms_queue);
sms_queue_trigger(smq);
return 0;
}
@ -604,26 +605,26 @@ static int sms_sms_cb(unsigned int subsys, unsigned int signal,
* sms that are not in our control as we just have a channel
* open anyway.
*/
pending = sms_find_pending(network->sms_queue, sig_sms->sms->id);
pending = sms_find_pending(smq, sig_sms->sms->id);
if (!pending)
return 0;
switch (signal) {
case S_SMS_DELIVERED:
smsq_rate_ctr_inc(network->sms_queue, SMSQ_CTR_SMS_DELIVERY_ACK);
smsq_rate_ctr_inc(smq, SMSQ_CTR_SMS_DELIVERY_ACK);
/* Remember the subscriber and clear the pending entry */
vsub = pending->vsub;
vlr_subscr_get(vsub, __func__);
db_sms_delete_sent_message_by_id(pending->sms_id);
sms_pending_free(network->sms_queue, pending);
sms_pending_free(smq, pending);
/* Attempt to send another SMS to this subscriber */
sms_send_next(vsub);
vlr_subscr_put(vsub, __func__);
break;
case S_SMS_MEM_EXCEEDED:
smsq_rate_ctr_inc(network->sms_queue, SMSQ_CTR_SMS_DELIVERY_NOMEM);
sms_pending_free(network->sms_queue, pending);
sms_queue_trigger(network->sms_queue);
smsq_rate_ctr_inc(smq, SMSQ_CTR_SMS_DELIVERY_NOMEM);
sms_pending_free(smq, pending);
sms_queue_trigger(smq);
break;
case S_SMS_UNKNOWN_ERROR:
/*
@ -637,12 +638,12 @@ static int sms_sms_cb(unsigned int subsys, unsigned int signal,
* should flag the SMS as bad.
*/
if (sig_sms->paging_result) {
smsq_rate_ctr_inc(network->sms_queue, SMSQ_CTR_SMS_DELIVERY_ERR);
smsq_rate_ctr_inc(smq, SMSQ_CTR_SMS_DELIVERY_ERR);
/* BAD SMS? */
db_sms_inc_deliver_attempts(sig_sms->sms);
sms_pending_failed(pending, 0);
} else {
smsq_rate_ctr_inc(network->sms_queue, SMSQ_CTR_SMS_DELIVERY_TIMEOUT);
smsq_rate_ctr_inc(smq, SMSQ_CTR_SMS_DELIVERY_TIMEOUT);
sms_pending_failed(pending, 1);
}
break;