Hello,

I am using Kannel status page to monitor the throughput and the size of the queues for a large-scale deployment of Kannel with multiple SMSC types.

However, I noticed an inconsistency in the way the queued messages status for SMSC HTTP behaves compared with the other SMSC types.

For the rest of SMSC types, the queued messages status shows the number of messages currently in the SMSC outgoing queue. Here is a status example for SMPP:

*MySMSC*[mysmpp] SMPP:10.1.1.144:5019/5019:SMPPGW1:SMSC (online 39583s, rcvd: sms 69288 (0.23,0.23,0.17) / dlr 19265264 (55.94,58.73,42.15), sent: sms 2233924 (14.04,12.43,5.61) / dlr 0 (0.00,0.00,0.00), failed 0, queued 3 msgs)

The related code from smsc_smpp.c is:

static long queued_cb(SMSCConn *conn)
{
    SMPP *smpp;

    smpp = conn->data;
    conn->load = (smpp ? (conn->status != SMSCCONN_DEAD ?
                  gw_prioqueue_len(smpp->msgs_to_send) : 0) : 0);
    return conn->load;
}

However, for SMSC HTTP, the queued messages status shows the number of open/unacked sends (smsc_http.c):

static long httpsmsc_queued(SMSCConn *conn)
{
    ConnData *conndata = conn->data;

    return (conndata ? (conn->status != SMSCCONN_DEAD ?
            counter_value(conndata->open_sends) : 0) : 0);
}

This makes it impossible to monitor and reason about the real size of the queue for a HTTP SMSC.

I wonder whether this is the intended/desired behavior. And if not, whether the above code could be changed to work like for the other SMSCs:

return (conndata ? (conn->status != SMSCCONN_DEAD ?
            gwlist_len(conndata->msg_to_send) : 0) : 0);

Thank you,
Radu Gasler

Reply via email to