Re: [PATCH] more precise throughput using double [v3]
Alexander Malysh <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <[email protected]> |
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 */