Re: lynx and brotly

"Xi Ruoyao" ([email protected] via blfs-support Mailing List) <[email protected]> Mon, 20 Oct 2025 21:02:38 +0800
Newsgroups gmane.linux.lfs.beyond.support
Message-ID <[email protected]>
On Sun, 2025-10-19 at 12:34 -0700, Alan Ianson wrote:
> On Sun, 19 Oct 2025 11:42:55 -0500
> "\"Douglas R. Reno\"" ([email protected] via blfs-support
> Mailing List) <[email protected]> wrote:
> 
> > On 10/18/25 7:49 PM, Bruce Dubbs ([email protected] via
> > blfs-support Mailing List) wrote:
> > > On 10/18/25 6:27 PM, "Rob E" ([email protected] via blfs-support
> > > Mailing List) wrote:  
> > > > You may want to look at 
> > > > https://lynx.invisible-island.net/current/CHANGES.html
> > > > first.  If I'm not mistaken they hacked the brotli changes into
> > > > the gzip support.  Meaning if Lynx has gzip compiled in it behaves
> > > > as though brotli is
> > > > also present. This causes issues with sites that default to
> > > > brotli, such as
> > > > the Lynx home page. I suggest either reverting back to Lynx-2.9.1
> > > > or making
> > > > brotli a dependency.  
> > > 
> > > We've already added brotli as an optional dependency for lynx.
> > > 
> > >   -- Bruce
> > >  
> > I think we need to do more here. The Lynx website itself doesn't load
> > in Lynx without Brotli installed, which is the default homepage set
> > when you just run "lynx".
> > 
> > We should probably follow the advice of upstream and put it as either 
> > recommended or required. I'd like to point out that Thomas Dickey,
> > the maintainer of Lynx, said in 
> > https://lists.nongnu.org/archive/html/lynx-dev/2025-10/msg00034.html 
> > that "It needs the brotli package installed (both at package build
> > time and runtime)." in reference to this exact problem that cropped
> > up a few days ago upstream.
> > 
> > - Doug
> > 
> 
> The lynx website shouldn't force brotli, or anything else.
> 
> I always thought that browsers and servers would negotiate and agree on
> a way to communicate supported at both ends and then carry on.

The lynx browser sends the Accept-Encoding header correctly to indicate
it does not support brotli (if brotli wasn't installed when we built
it).  The table it used to generate the Accept-Encoding header is:

/* the names in this table are used as lowercase in HTTP.c */
Config_Enum tbl_preferred_encoding[] = {
    { "none",       encodingNONE },
#if defined(USE_ZLIB) || defined(GZIP_PATH)
    { "gzip",       encodingGZIP },
    { "deflate",    encodingDEFLATE },
#endif
#if defined(USE_ZLIB) || defined(COMPRESS_PATH)
    { "compress",   encodingCOMPRESS },
#endif
#if defined(USE_BZLIB) || defined(BZIP2_PATH)
    { "bzip2",      encodingBZIP2 },
#endif
#if defined(USE_BROTLI) || defined(BROTLI_PATH)
    { "br",     encodingBROTLI },
#endif
    { "all",        encodingALL },
    { NULL,     -1 } 
};

And it's obvious if brotli isn't available at build time, "br" won't be
in Accept-Encoding.  But the lynx website just ignores that and insists
to send brotli-encoded data.

I'm unsure if doing so is allowed by RFC9110, but IMO they should at
least return HTTP 406 if they mustn't send the plain data for some
reason.

-- 
Xi Ruoyao <[email protected]>

-- 
http://lists.linuxfromscratch.org/sympa/info/blfs-support
Unsubscribe: See the above information page