On Sun, Jul 30, 2017 at 09:43:09PM -0400, Ted Unangst wrote:
> Florian Obser wrote:
> > OK florian@
> > 
> > p.s. whoever commits this please add extra ( ) around the && term,
> > Apparently clang no longer supports operator precedence *sigh*.
> > 
> > I'm wondering if it also warns for a * b + c
> > 
> > /usr/src/usr.sbin/httpd/server_fcgi.c:665:56: warning: '&&' within '||'
> >       [-Wlogical-op-parentheses]
> >         if ((kv = kv_find(&resp->http_headers, &key)) == NULL &&
> >             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
> > /usr/src/usr.sbin/httpd/server_fcgi.c:665:56: note: place parentheses 
> > around the
> >       '&&' expression to silence this warning
> >         if ((kv = kv_find(&resp->http_headers, &key)) == NULL &&
> >                                                               ^
> > 1 warning generated.
> 
> am i reading it wrong? it looks there are extra parens around ||.
> 

you are right, the diff as presented does not warn and is correct.

looks like I picked the wrong week to quit sniffing glue...
for some reason I hand applied the diff which resulted in this:

        /* Date header is mandatory and should be added as late as possible */
        key.kv_key = "Date";
        if ((kv = kv_find(&resp->http_headers, &key)) == NULL &&
            server_http_time(time(NULL), tmbuf, sizeof(tmbuf)) <= 0 ||
            kv_add(&resp->http_headers, "Date", tmbuf) == NULL)
                return (-1);

and then clang warns...

> 
> > 
> > 
> > On Sat, Jul 29, 2017 at 09:11:14PM -0700, Nick Owens wrote:
> > > ping?
> > > 
> > > On Jul 18, 2017 19:01, "Nick Owens" <[email protected]> wrote:
> > > 
> > > hello tech@,
> > > 
> > > here is a diff that will cause httpd's fcgi code to not set the HTTP
> > > date header if it has already been set. the code i am using for an fcgi
> > > server
> > > (https://github.com/golang/go/blob/master/src/net/http/fcgi/child.go#L102)
> > > unconditionally sets the Date header, so with httpd there is a
> > > duplicate "Date:" header in responses.
> > > 
> > > quick glances at lighttpd and apache2 seem to agree with this behavior.
> > > 
> > > Index: server_fcgi.c
> > > ===================================================================
> > > RCS file: /cvs/src/usr.sbin/httpd/server_fcgi.c,v
> > > retrieving revision 1.74
> > > diff -u -p -u -p -r1.74 server_fcgi.c
> > > --- server_fcgi.c       21 Jan 2017 11:32:04 -0000      1.74
> > > +++ server_fcgi.c       18 Jul 2017 21:31:01 -0000
> > > @@ -661,8 +661,10 @@ server_fcgi_header(struct client *clt, u
> > >         }
> > > 
> > >         /* Date header is mandatory and should be added as late as 
> > > possible
> > > */
> > > -       if (server_http_time(time(NULL), tmbuf, sizeof(tmbuf)) <= 0 ||
> > > -           kv_add(&resp->http_headers, "Date", tmbuf) == NULL)
> > > +       key.kv_key = "Date";
> > > +       if ((kv = kv_find(&resp->http_headers, &key)) == NULL &&
> > > +           (server_http_time(time(NULL), tmbuf, sizeof(tmbuf)) <= 0 ||
> > > +           kv_add(&resp->http_headers, "Date", tmbuf) == NULL))
> > >                 return (-1);
> > > 
> > >         /* Write initial header (fcgi might append more) */
> > 
> > -- 
> > I'm not entirely sure you are real.
> > 
> 

-- 
I'm not entirely sure you are real.

Reply via email to