Re: [PATCH] BUG/MINOR: tcp: don't try to set defaultmss when value is negative

2020-02-12 Thread William Dauchy
On Wed, Feb 12, 2020 at 03:32:07PM +0100, Willy Tarreau wrote:
> I'd do it differently so that we neither try nor report an error if
> the default mss was not set. Indeed, if it already failed earlier,
> we already had an issue, so no need to fail again. So if you agree
> I'll change it to :
> 
>  if (defaultmss > 0 &&
>  tmpmaxseg != defaultmss &&
>  setsockopt(fd, IPPROTO_TCP, TCP_MAXSEG, , 
> sizeof(defaultmss)) == -1)

agreed, sent v2 as well.

Thanks,
-- 
William



Re: [PATCH] BUG/MINOR: tcp: don't try to set defaultmss when value is negative

2020-02-12 Thread Willy Tarreau
On Wed, Feb 12, 2020 at 01:16:15PM +0100, William Dauchy wrote:
>   getsockopt(fd, IPPROTO_TCP, TCP_MAXSEG, , );
> - if (tmpmaxseg != defaultmss && setsockopt(fd, IPPROTO_TCP,
> - TCP_MAXSEG, ,
> - sizeof(defaultmss)) == -1) {
> + if (defaultmss < 0 ||
> + (tmpmaxseg != defaultmss &&
> +  setsockopt(fd, IPPROTO_TCP, TCP_MAXSEG, , 
> sizeof(defaultmss)) == -1)) {
>   msg = "cannot set MSS";
>   err |= ERR_WARN;

I'd do it differently so that we neither try nor report an error if
the default mss was not set. Indeed, if it already failed earlier,
we already had an issue, so no need to fail again. So if you agree
I'll change it to :

 if (defaultmss > 0 &&
 tmpmaxseg != defaultmss &&
 setsockopt(fd, IPPROTO_TCP, TCP_MAXSEG, , 
sizeof(defaultmss)) == -1)

Thanks,
Willy



[PATCH] BUG/MINOR: tcp: don't try to set defaultmss when value is negative

2020-02-12 Thread William Dauchy
when `getsockopt` previously failed, we were trying to set defaultmss
with -2 value.

this is a followup of github issue #499

this should be backported to all versions >= v1.8

Fixes: 153659f1ae69a1 ("MINOR: tcp: When binding socket, attempt to
reuse one from the old proc.")
Signed-off-by: William Dauchy 
---
 src/proto_tcp.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/proto_tcp.c b/src/proto_tcp.c
index a9d5229c9..e509a17bc 100644
--- a/src/proto_tcp.c
+++ b/src/proto_tcp.c
@@ -906,9 +906,9 @@ int tcp_bind_listener(struct listener *listener, char 
*errmsg, int errlen)
defaultmss = default_tcp6_maxseg;
 
getsockopt(fd, IPPROTO_TCP, TCP_MAXSEG, , );
-   if (tmpmaxseg != defaultmss && setsockopt(fd, IPPROTO_TCP,
-   TCP_MAXSEG, ,
-   sizeof(defaultmss)) == -1) {
+   if (defaultmss < 0 ||
+   (tmpmaxseg != defaultmss &&
+setsockopt(fd, IPPROTO_TCP, TCP_MAXSEG, , 
sizeof(defaultmss)) == -1)) {
msg = "cannot set MSS";
err |= ERR_WARN;
}
-- 
2.25.0