Re: [PATCH] more precise throughput using double [v3]
Alexander Malysh <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
oops, you are right... this patch committed to cvs:
Index: gw/smscconn.c
===================================================================
RCS file: /home/cvs/gateway/gw/smscconn.c,v
retrieving revision 1.54
diff -a -u -p -r1.54 smscconn.c
--- gw/smscconn.c 7 Apr 2006 12:49:50 -0000 1.54
+++ gw/smscconn.c 7 Apr 2006 16:35:33 -0000
@@ -151,7 +151,6 @@ SMSCConn *smscconn_create(CfgGroup *grp,
SMSCConn *conn;
Octstr *smsc_type;
int ret;
- double throughput;
Octstr *allowed_smsc_id_regex;
Octstr *denied_smsc_id_regex;
Octstr *allowed_prefix_regex;
@@ -218,10 +217,10 @@ SMSCConn *smscconn_create(CfgGroup *grp,
panic(0, "Could not compile pattern '%s'",
octstr_get_cstr(preferred_prefix_regex));
if ((tmp = cfg_get(grp, octstr_imm("throughput"))) != NULL) {
- if (octstr_parse_double(&throughput, tmp, 0) == -1)
+ if (octstr_parse_double(&conn->throughput, tmp, 0) == -1)
conn->throughput = 0;
octstr_destroy(tmp);
- info(0, "Set throughput to %.3f for smsc id <%s>", throughput,
octstr_get_cstr(conn->id));
+ info(0, "Set throughput to %.3f for smsc id <%s>",
conn->throughput, octstr_get_cstr(conn->id));
}
/* configure the internal rerouting rules for this smsc id */
Thanks,
Alex
Vincent CHAVANIS schrieb:
> wow, something is going wrong with your modifications.
>
> Here is the fix,
>
> --- /gateway-cvs/gw/smscconn.c 2006-04-07 14:54:05.000000000 +0200
> +++ /gateway/gw/smscconn.c 2006-04-07 16:54:44.000000000 +0200
> @@ -220,8 +220,10 @@
> if ((tmp = cfg_get(grp, octstr_imm("throughput"))) != NULL) {
> if (octstr_parse_double(&throughput, tmp, 0) == -1)
> conn->throughput = 0;
> + else
> + conn->throughput = (double) throughput;
> octstr_destroy(tmp);
> - info(0, "Set throughput to %.3f for smsc id <%s>", throughput, octstr_get_cstr(conn->id));
> + info(0, "Set throughput to %.3f for smsc id <%s>", conn->throughput, octstr_get_cstr(conn->id));
> }
>
> Vincent
>
> --
> Telemaque - NICE - (FR)
> Service Technique - Developpement
> http://www.telemaque.fr/
> [email protected]
> Tel : +33 4 93 97 71 64 (fax 68)
>
> ----- Original Message -----
> From: "Alexander Malysh" <[email protected]>
> To: <[email protected]>
> Sent: Friday, April 07, 2006 4:32 PM
> Subject: Re: [PATCH] more precise throughput using double [v3]
>
>
>> Vincent CHAVANIS schrieb:
>>> Thanks++,
>>>
>>> I did not see that point.
>> cfg_get(...) returns Octstr* that must be destroyed afterwards. and we
>> avoid using strXXX functions if we have the same functionality in Octstr.
>>
>> Thanks,
>> Alex
>>
>>> Vincent
>>>
>>> --
>>> Telemaque - NICE - (FR)
>>> Service Technique - Developpement
>>> http://www.telemaque.fr/
>>> [email protected]
>>> Tel : +33 4 93 97 71 64 (fax 68)
>>>
>>> ----- Original Message -----
>>> From: "Alexander Malysh" <[email protected]>
>>> To: <[email protected]>
>>> Sent: Friday, April 07, 2006 2:51 PM
>>> Subject: Re: [PATCH] more precise throughput using double [v3]
>>>
>>>
>>>> Hi,
>>>>
>>>> this patch applies ok and committed to cvs in modified form.
>>>>
>>>>>> + throughput = strtod(octstr_get_cstr(cfg_get(grp,
>>>> octstr_imm("throughput"))),(char **) NULL);
>>>>>> + if (throughput == ERANGE || throughput <= 0)
>>>>>> conn->throughput = 0; /* defaults to no throughtput
>>>> ...
>>>>
>>>> Here you have memleak. Look into committed version where it's fixed.
>>>>
>>>> Thanks,
>>>> Alex
>>>>
>>>> Vincent CHAVANIS schrieb:
>>>>> is this new one is ok ?
>>>>>
>>>>> --
>>>>> Telemaque - NICE - (FR)
>>>>> Service Technique - Developpement
>>>>> http://www.telemaque.fr/
>>>>> [email protected]
>>>>> Tel : +33 4 93 97 71 64 (fax 68)
>>>>>
>>>>> ----- Original Message -----
>>>>> From: "Alexander Malysh" <[email protected]>
>>>>> To: <[email protected]>
>>>>> Sent: Thursday, April 06, 2006 7:23 PM
>>>>> Subject: Re: [PATCH] more precise throughput using double [v3]
>>>>>
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> you patch doesn't apply. Please redo your patch with cvs -Nau from
>>>>>> within gateway dir.
>>>>>>
>>>>>> Thanks,
>>>>>> Alex
>>>>>>
>>>>>> ------------------------------------------------------------------------
>>>>>>
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_emi.c gateway-patch/gw/smsc/smsc_emi.c
>>>>>> --- gateway/gw/smsc/smsc_emi.c 2005-02-11 16:35:48.000000000 +0100
>>>>>> +++ gateway-patch/gw/smsc/smsc_emi.c 2006-04-06 19:42:24.000000000 +0200
>>>>>> @@ -992,7 +992,7 @@
>>>>>> Msg *msg;
>>>>>> double delay = 0;
>>>>>>
>>>>>> - if (conn->throughput) {
>>>>>> + if (conn->throughput > 0) {
>>>>>> delay = 1.0 / conn->throughput;
>>>>>> }
>>>>>>
>>>>>> @@ -1001,7 +1001,7 @@
>>>>>> (msg = gw_prioqueue_remove(PRIVDATA(conn)->outgoing_queue)) != NULL) {
>>>>>> int nexttrn = emi2_next_trn(conn);
>>>>>>
>>>>>> - if (conn->throughput)
>>>>>> + if (conn->throughput > 0)
>>>>>> gwthread_sleep(delay);
>>>>>>
>>>>>> /* convert the generic Kannel message into an EMI type message */
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_fake.c gateway-patch/gw/smsc/smsc_fake.c
>>>>>> --- gateway/gw/smsc/smsc_fake.c 2005-02-11 16:35:48.000000000 +0100
>>>>>> +++ gateway-patch/gw/smsc/smsc_fake.c 2006-04-06 19:42:38.000000000 +0200
>>>>>> @@ -243,7 +243,7 @@
>>>>>> Msg *msg;
>>>>>> double delay = 0;
>>>>>>
>>>>>> - if (conn->throughput) {
>>>>>> + if (conn->throughput > 0) {
>>>>>> delay = 1.0 / conn->throughput;
>>>>>> }
>>>>>>
>>>>>> @@ -297,7 +297,7 @@
>>>>>> }
>>>>>>
>>>>>> /* obey throughput speed limit, if any */
>>>>>> - if (conn->throughput) {
>>>>>> + if (conn->throughput > 0) {
>>>>>> gwthread_sleep(delay);
>>>>>> }
>>>>>> }
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_http.c gateway-patch/gw/smsc/smsc_http.c
>>>>>> --- gateway/gw/smsc/smsc_http.c 2006-03-29 11:17:55.000000000 +0200
>>>>>> +++ gateway-patch/gw/smsc/smsc_http.c 2006-04-06 19:43:00.000000000 +0200
>>>>>> @@ -1308,7 +1308,7 @@
>>>>>> Msg *sms = msg_duplicate(msg);
>>>>>> double delay = 0;
>>>>>>
>>>>>> - if (conn->throughput) {
>>>>>> + if (conn->throughput > 0) {
>>>>>> delay = 1.0 / conn->throughput;
>>>>>> }
>>>>>>
>>>>>> @@ -1316,7 +1316,7 @@
>>>>>> conndata->send_sms(conn, sms);
>>>>>>
>>>>>> /* obey throughput speed limit, if any */
>>>>>> - if (conn->throughput)
>>>>>> + if (conn->throughput > 0)
>>>>>> gwthread_sleep(delay);
>>>>>>
>>>>>> return 0;
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_smasi.c gateway-patch/gw/smsc/smsc_smasi.c
>>>>>> --- gateway/gw/smsc/smsc_smasi.c 2005-02-11 16:35:48.000000000 +0100
>>>>>> +++ gateway-patch/gw/smsc/smsc_smasi.c 2006-04-06 19:43:19.000000000 +0200
>>>>>> @@ -872,7 +872,7 @@
>>>>>>
>>>>>> if (*pending_submits == -1) return;
>>>>>>
>>>>>> - if (smasi->conn->throughput) {
>>>>>> + if (smasi->conn->throughput > 0) {
>>>>>> delay = 1.0 / smasi->conn->throughput;
>>>>>> }
>>>>>>
>>>>>> @@ -894,7 +894,7 @@
>>>>>> smasi_pdu_destroy(pdu);
>>>>>>
>>>>>> /* obey throughput speed limit, if any */
>>>>>> - if (smasi->conn->throughput)
>>>>>> + if (smasi->conn->throughput > 0)
>>>>>> gwthread_sleep(delay);
>>>>>>
>>>>>> ++(*pending_submits);
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smsc/smsc_smpp.c gateway-patch/gw/smsc/smsc_smpp.c
>>>>>> --- gateway/gw/smsc/smsc_smpp.c 2006-02-07 15:54:44.000000000 +0100
>>>>>> +++ gateway-patch/gw/smsc/smsc_smpp.c 2006-04-06 19:44:14.000000000 +0200
>>>>>> @@ -1013,7 +1013,7 @@
>>>>>> /*
>>>>>> * obey throughput speed limit, if any.
>>>>>> */
>>>>>> - if (smpp->conn->throughput)
>>>>>> + if (smpp->conn->throughput > 0)
>>>>>> gwthread_sleep(delay);
>>>>>> }
>>>>>> else { /* write error occurs */
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smscconn.c gateway-patch/gw/smscconn.c
>>>>>> --- gateway/gw/smscconn.c 2006-04-01 19:48:51.000000000 +0200
>>>>>> +++ gateway-patch/gw/smscconn.c 2006-04-06 19:51:57.000000000 +0200
>>>>>> @@ -64,6 +64,7 @@
>>>>>>
>>>>>> #include <signal.h>
>>>>>> #include <time.h>
>>>>>> +#include <errno.h>
>>>>>>
>>>>>> #include "gwlib/gwlib.h"
>>>>>> #include "gwlib/regex.h"
>>>>>> @@ -151,7 +152,7 @@
>>>>>> SMSCConn *conn;
>>>>>> Octstr *smsc_type;
>>>>>> int ret;
>>>>>> - long throughput;
>>>>>> + double throughput;
>>>>>> Octstr *allowed_smsc_id_regex;
>>>>>> Octstr *denied_smsc_id_regex;
>>>>>> Octstr *allowed_prefix_regex;
>>>>>> @@ -216,10 +217,13 @@
>>>>>> 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(&throughput, grp, octstr_imm("throughput")) == -1)
>>>>>> + throughput = strtod(octstr_get_cstr(cfg_get(grp, octstr_imm("throughput"))),(char **) NULL);
>>>>>> + if (throughput == ERANGE || throughput <= 0)
>>>>>> conn->throughput = 0; /* defaults to no throughtput limitation */
>>>>>> else
>>>>>> - conn->throughput = (int) throughput;
>>>>>> + conn->throughput = throughput;
>>>>>> +
>>>>>> + info(0, "Set throughput to %.3f for smsc id <%s>", throughput, octstr_get_cstr(conn->id));
>>>>>>
>>>>>> /* configure the internal rerouting rules for this smsc id */
>>>>>> init_reroute(conn, grp);
>>>>>> diff -i -E -b -w -B -rNau gateway/gw/smscconn_p.h gateway-patch/gw/smscconn_p.h
>>>>>> --- gateway/gw/smscconn_p.h 2005-02-11 16:35:48.000000000 +0100
>>>>>> +++ gateway-patch/gw/smscconn_p.h 2006-04-06 19:46:51.000000000 +0200
>>>>>> @@ -194,7 +194,7 @@
>>>>>>
>>>>>> int alt_dcs; /* use alternate DCS 0xFX */
>>>>>>
>>>>>> - int throughput; /* message thoughput per sec. to be delivered to SMSC */
>>>>>> + double throughput; /* message thoughput per sec. to be delivered to SMSC */
>>>>>>
>>>>>> /* Stores rerouting information for this specific smsc-id */
>>>>>> int reroute; /* simply turn MO into MT and process internally */
>>>>
>>>
>>>
>>
>>
>
>
>