great !

One more thing in Changelog

>    that changes throughput from interger
                                                     ^^ should read integer

regards

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: <devel@kannel.org>
Sent: Friday, April 07, 2006 6:37 PM
Subject: Re: [PATCH] more precise throughput using double [v3]


> 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: <devel@kannel.org>
>> 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: <devel@kannel.org>
>>>> 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: <devel@kannel.org>
>>>>>> 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 */
>>>>>
>>>>
>>>>
>>>
>>>
>> 
>> 
>> 
> 
> 
>


Reply via email to