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.