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 */ >>>>> >>>> >>>> >>> >>> >> >> >> > > >