[PATCH] new config variable : add-delay
"Vincent CHAVANIS" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <1b8501c63ede$c680a7e0$9600a8c0@vince> |
This patch adds a new variable called 'add-delay' to the config file group = smsc smsc = fake smsc-id = FAKE throughput = 1 add-delay = 200 # adding 200ms to the delay (ie. = 1.0 / throughput + add-delay) port = 10000 connect-allow-ip = 127.0.0.1 'add-delay' is a delay in milisec that can fixes the strict operator QOS. Typically, when you are connected to your operator with an ADSL line, you depends to the "ADSL plateform lag" (in our case between 50-200ms) which can alter the time that your operator will receive your MT and then should drop or not your MT. This allows to set a margin for this problem. 'add-delay' is only working when throughput > 0 regards Vincent. -- Telemaque - NICE - (FR) Service Technique - Developpement http://www.telemaque.fr/ [email protected] Tel : +33 4 93 97 71 64 (fax 68)
patch_add-delay.txt
(text/plain, 5 KB)
diff -i -E -b -w -B -ur gateway/gw/smsc/emimsg.c gateway2/gw/smsc/emimsg.c
--- gateway/gw/smsc/emimsg.c 2005-02-11 16:35:48.000000000 +0100
+++ gateway2/gw/smsc/emimsg.c 2006-02-21 17:05:16.000000000 +0100
@@ -992,8 +1006,12 @@
Msg *msg;
double delay = 0;
- if (conn->throughput) {
- delay = 1.0 / conn->throughput;
+ if (conn->throughput > 0) {
+ if (conn->add_delay > 0) {
+ delay = ((1.0 / conn->throughput) + (conn->add_delay / 1000));
+ } else {
+ delay = (1.0 / conn->throughput);
+ }
}
/* Send messages if there's room in the sending window */
diff -i -E -b -w -B -ur gateway/gw/smsc/smsc_fake.c gateway2/gw/smsc/smsc_fake.c
--- gateway/gw/smsc/smsc_fake.c 2005-02-11 16:35:48.000000000 +0100
+++ gateway2/gw/smsc/smsc_fake.c 2006-03-03 16:19:08.000000000 +0100
@@ -243,8 +243,12 @@
Msg *msg;
double delay = 0;
- if (conn->throughput) {
- delay = 1.0 / conn->throughput;
+ if (conn->throughput > 0) {
+ if (conn->add_delay > 0) {
+ delay = ((1.0 / conn->throughput) + (conn->add_delay / 1000));
+ } else {
+ delay = (1.0 / conn->throughput);
+ }
}
while (1) {
diff -i -E -b -w -B -ur gateway/gw/smsc/smsc_http.c gateway2/gw/smsc/smsc_http.c
--- gateway/gw/smsc/smsc_http.c 2005-09-20 00:07:33.000000000 +0200
+++ gateway2/gw/smsc/smsc_http.c 2006-03-03 16:18:24.000000000 +0100
@@ -1072,8 +1072,12 @@
Msg *sms = msg_duplicate(msg);
double delay = 0;
- if (conn->throughput) {
- delay = 1.0 / conn->throughput;
+ if (conn->throughput > 0) {
+ if (conn->add_delay > 0) {
+ delay = ((1.0 / conn->throughput) + (conn->add_delay / 1000));
+ } else {
+ delay = (1.0 / conn->throughput);
+ }
}
conndata->open_sends++;
diff -i -E -b -w -B -ur gateway/gw/smsc/smsc_smasi.c gateway2/gw/smsc/smsc_smasi.c
--- gateway/gw/smsc/smsc_smasi.c 2005-02-11 16:35:48.000000000 +0100
+++ gateway2/gw/smsc/smsc_smasi.c 2006-03-03 16:17:27.000000000 +0100
@@ -872,8 +872,12 @@
if (*pending_submits == -1) return;
- if (smasi->conn->throughput) {
- delay = 1.0 / smasi->conn->throughput;
+ if (smasi->conn->throughput > 0) {
+ if (smasi->conn->add_delay) {
+ delay = ((1.0 / smasi->conn->throughput) + (smasi->conn->add_delay / 1000));
+ } else {
+ delay = (1.0 / smasi->conn->throughput);
+ }
}
while (*pending_submits < MAX_PENDING_SUBMITS) {
diff -i -E -b -w -B -ur gateway/gw/smsc/smsc_smpp.c gateway2/gw/smsc/smsc_smpp.c
--- gateway/gw/smsc/smsc_smpp.c 2006-02-07 15:54:44.000000000 +0100
+++ gateway2/gw/smsc/smsc_smpp.c 2006-03-03 16:17:41.000000000 +0100
@@ -987,7 +987,11 @@
return;
if (smpp->conn->throughput > 0) {
- delay = 1.0 / smpp->conn->throughput;
+ if (smpp->conn->add_delay > 0) {
+ delay = ((1.0 / smpp->conn->throughput) + (smpp->conn->add_delay / 1000));
+ } else {
+ delay = (1.0 / smpp->conn->throughput);
+ }
}
while (*pending_submits < smpp->max_pending_submits) {
diff -i -E -b -w -B -ur gateway/gw/smscconn.c gateway2/gw/smscconn.c
--- gateway/gw/smscconn.c 2005-03-09 21:04:20.000000000 +0100
+++ gateway2/gw/smscconn.c 2006-03-03 12:59:19.000000000 +0100
@@ -151,6 +151,7 @@
SMSCConn *conn;
Octstr *smsc_type;
int ret;
+ long add_delay;
long throughput;
Octstr *allowed_smsc_id_regex;
Octstr *denied_smsc_id_regex;
@@ -216,6 +217,12 @@
if ((conn->preferred_prefix_regex = gw_regex_comp(preferred_prefix_regex, REG_EXTENDED)) == NULL)
panic(0, "Could not compile pattern '%s'", octstr_get_cstr(preferred_prefix_regex));
+ if (cfg_get_integer(&add_delay, grp, octstr_imm("add-delay")) == -1)
+ conn->add_delay = 0; /* defaults to no add_delay limitation */
+ else
+ conn->add_delay = (int) add_delay;
+ info(0, "SMS add-delay set to [%d] milisec for smsc id <%s>", conn->add_delay, octstr_get_cstr(conn->id));
+
if (cfg_get_integer(&throughput, grp, octstr_imm("throughput")) == -1)
conn->throughput = 0; /* defaults to no throughtput limitation */
else
diff -i -E -b -w -B -ur gateway/gw/smscconn_p.h gateway2/gw/smscconn_p.h
--- gateway/gw/smscconn_p.h 2005-02-11 16:35:48.000000000 +0100
+++ gateway2/gw/smscconn_p.h 2006-03-03 12:12:11.000000000 +0100
@@ -194,6 +194,7 @@
int alt_dcs; /* use alternate DCS 0xFX */
+ int add_delay; /* add delay to SMSC */
int throughput; /* message thoughput per sec. to be delivered to SMSC */
/* Stores rerouting information for this specific smsc-id */
diff -i -E -b -w -B -ur gateway/gwlib/cfg.def gateway2/gwlib/cfg.def
--- gateway/gwlib/cfg.def 2006-01-29 16:54:05.000000000 +0100
+++ gateway2/gwlib/cfg.def 2006-03-03 12:19:31.000000000 +0100
@@ -299,6 +299,7 @@
OCTSTR(log-level)
OCTSTR(our-host)
OCTSTR(alt-dcs)
+ OCTSTR(add-delay)
OCTSTR(throughput)
OCTSTR(alt-charset)
OCTSTR(host)