From mboxrd@z Thu Jan 1 00:00:00 1970 From: john at keeping.me.uk (John Keeping) Date: Fri, 26 Feb 2016 16:09:32 +0000 Subject: premature exits bork cache In-Reply-To: References: Message-ID: <20160226160932.GQ1766@serenity.lan> On Fri, Feb 26, 2016 at 01:29:21PM +0100, Jason A. Donenfeld wrote: > When caching is turned on, if we exit(0) early from a cmd, the cache > won't be properly finalized (or even sent), and we get a server error > because of blank output. I just fixed this bug with redirect: > > https://git.zx2c4.com/cgit/commit/?id=e9cbdf64632fbe64d6b0c4974ac947ef954938e7 > > This is fine, because it's called only from 1 function (three times), > and that function then returns, so execution doesn't continue after > the redirect. It simply gives control back to the caching layer that > does things properly now. > > But I noticed we have this issue with HTTP HEAD method: > > https://git.zx2c4.com/cgit/tree/ui-shared.c#n695 > > Here we're calling exit(0). The motivation, I imagine, was that we > want to retain the same handlers, but just return the headers for the > HEAD method. Unfortunately, this borks the cache layer for the same > reasons as described above. I'm not yet sure the cleanest way to fix > this. Suggestions? We set cfg.nocache in cgit.c for HEAD requests so I think we're already okay in this case, although it is a subtle interaction.