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