Hi Thierry, remade patch for support of number other than integer in
hlua_socket_settimeout() ...from latest source so should be able to be
applied.

Desc: instead of accepting only integers, allow user to specify float and
double when hlua_socket_settimeout() is called. Round up user specified
value and validate against maximum integer to prevent overflow.

Mark Lakes
Signal Sciences | www.signalsciences.com |


On Thu, Mar 8, 2018 at 1:24 AM, Thierry Fournier <[email protected]>
wrote:

> Hi Mark,
>
> Thanks, it seems perfect. But, I can’t apply on current master branch, the
> patch is rejected.
>
> I forgot 3 things while my first read:
>
>  - The Lua error are not trigerred with a return 1 (the return 1 is a bug
>    in the original function), but with something like that:
>
>    WILL_LJMP(luaL_error(L, "settimeout: cannot set negatives values"));
>
>    The return became useless because the luaL_error() function never
> returns.
>    (it soes a longjmp call).
>
>  - I think that timeouts < 1s are allowed. The cli refuse these ones,
>    but the HAProxy core is ready to work with timeout less than 1s. Note
>    that, When you remove this check, negative timeouts could be accepted
>    (the check < 1000 chek also for negative values) and this is a bug.
>
>  - The doc (doc/lua-api/index.rst) should be updated (actuelly, line 1899:
>    .. js:function:: Socket.settimeout(socket, value [, mode])). It will be
>    necessary to precise that the fucntion accept Number in place of Integer
>    and, number with fractional part are allowed.
>
> I join two of my fixes. The third patch is yours, check if you agree with
> the content and the commit message.
>
> BR,
> Thierry
>
>
>
>
>
>
>
> > On 8 Mar 2018, at 01:17, Mark Lakes <[email protected]> wrote:
> >
> > Hi Thierry, thanks for feedback. Addressed concerns in the new attached
> patch.
> >
> > http://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout
> >
> > Description: instead of hlua_socket_settimeout() accepting only
> integers, allow user to specify float and
> > double as well. Convert to milliseconds much like cli_parse_set_timeout
> but also sanity check the value.
> >
> > -mark
> >
> >
> > On Wed, Mar 7, 2018 at 9:55 AM, Thierry Fournier <[email protected]>
> wrote:
> > Hi Mark,
> >
> > Thanks for the patch. I don’t like usage of floating point, but the
> > luasocket documentation says that the settimeout() function accept only
> > second. In this case, the usage of floating point seems be to be a good
> > way.
> >
> > Can you split in a second commit the fix of comments from the effective
> > patch, and avoid this kind of changes:
> >
> >    -    int tmout;
> >    +    int    tmout;
> >
> > Just because, this kind of changes are useless, and it add noisy
> > information in the patch.
> >
> > A last point: could you explain int the message of the patch the
> > goal of these patch. To avoid a search, this is the link of the official
> > luasocket setimeout function:
> >
> >     http://w3.impa.br/~diego/software/luasocket/tcp.html#settimeout
> >
> > Thanks
> > Thierry
> >
> >
> > > On 7 Mar 2018, at 18:16, Mark Lakes <[email protected]> wrote:
> > >
> > > In regards to earlier conversation, herein is a patch attached for the
> feature.
> > > From the mail archive:
> > > https://www.mail-archive.com/[email protected]/msg27806.html
> > > https://www.mail-archive.com/[email protected]/msg27807.html
> > >
> > > Mark Lakes
> > > Signal Sciences | www.signalsciences.com |
> > >
> > > conversation participants:
> > > Willy Tarreau
> > > Adis Nezirovic
> > > Nick Galbreath
> > >
> > > --------- Last conversation and decision agreement ----------
> > > Nick Galbreath Thu, 09 Nov 2017 20:44:28 -0800
> > >
> > > thanks wily.
> > >
> > > re: " CONTRIBUTING in the sources directory," -
> > >
> > > yes, that is what I was looking for!  thanks for the tip.
> > >
> > > re:  least it seems important to round up non-null values to the next
> > > millisecond.
> > >
> > > Definitely, we can and should add some checks for invalid values, etc.
> > >
> > > I'll read CONTRIBUTING, and set up my dev env, try a patch,  and report
> > > back appropriately.
> > >
> > > regards,
> > >
> > > n
> > >
> > > On Thu, Nov 9, 2017 at 8:37 PM, Willy Tarreau <[email protected]
> > > > wrote:
> > >
> > > > Hi Nick,
> > > >
> > > > On Thu, Nov 09, 2017 at 08:27:29PM -0800, Nick Galbreath wrote:
> > > > > Hello Adis,
> > > > >
> > > > > We could certainly add another API/Lua function but it might be
> easier to
> > > > > change
> > > > >
> > > > > luaL_checkinteger(L, 2) in
> > > > >
> > > > >  tmout = MAY_LJMP(luaL_checkinteger(L, 2)) * 1000;
> > > > >
> > > > > to  luaL_checknumber(L, 2), along with appropriate cast to int.
> > > > >
> > > > > Then we have backwards compatibility, less documentation to write,
> and
> > > > get
> > > > > millisecond timeouts.
> > > >
> > > > At least it seems important to round up non-null values to the next
> > > > millisecond, otherwise we may observe busy loops when users specify
> > > > sleep delays smaller than the millisecond, as haproxy's internal
> > > > clock is millisecond-based (poll()'s resolution).
> > > >
> > >
> > > > > If people want a separate API, I'm happy to do that too, just more
> work.
> > > >
> > > > I think it should work as you propose it, more or less the round up
> of
> > > > course.
> > > >
> > > > > Please advise, and I'll make a patch either way.  I'm unfamiliar
> with the
> > > > > HAProxy development process, so any tips or pointers are welcome,
> > > >
> > > > It's important to CC the subsystem maintainer when submitting a
> change,
> > > > since they are supposed to have the last word on submissions in their
> > > > area. This is done here since Thierry maintains the Lua area. Please
> > > > carefully read CONTRIBUTING in the sources directory, it's not very
> > > > long and will help you ensure that all your patches are easily
> merged.
> > > > And you're welcome to propose changes to this file if something is
> > > > unclear :-)
> > > >
> > > > Thanks,
> > > > Willy
> > > >
> > >
> > >
> > > ----------
> > >
> > >
> > >
> > > <0001-MINOR-lua-allow-socket-api-settimeout-to-accept-inte.patch>
> >
> >
> > <0001-MINOR-lua-allow-socket-api-settimeout-to-accept-inte.patch>
>
>
>

Attachment: 0001-MINOR-lua-allow-socket-api-settimeout-to-accept-inte.patch
Description: Binary data

Reply via email to