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