💾 Archived View for carcosa.net › journal › 20211112-germinal-update.gmi captured on 2023-11-04 at 11:34:50. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2021-11-30)
-=-=-=-=-=-=-
[Note the icon at the start of the title. This is an article talking about technical aspects of Gemini. If you'd rather avoid reading such things because there's too much of it on Gemini (I agree), go back now.]
It was mentioned recently on the Gemini mailing list that a shockingly high number of Gemini servers are out of compliance with one particular part of the standard: they don't send a TLS shutdown notification when the connection closes. This is part of the TLS spec, but it's also especially needed for Gemini, because without it, we would have no way of knowing if a connection closed because the server was done sending, or because it got dropped somehow. I was disappointed, but not surprised, to find out that my server, Germinal, was one of the ones not in compliance. Not surprised, because not having access to these low-level bits of the protocol is kind of common in SSL/TLS bindings for higher-level languages.
Anyway, I was pulling my hair out for a little while trying to get the notification sent manually, when I discovered that the issue was fixed in a newer version of the bindings. If you're running Germinal as your server, be sure to update your quicklisp distribution, update CL+SSL, and make sure you don't have any old versions of it hanging around.
Gemini provides a status code for documents that have been permanently removed: 52 — GONE. It's probably not very widely implemented in servers. I added support to Gemini as a middleware function. Just add the URLs you want to mark as permanently gone in a list in your configuration/run script, and they will have a 52 — GONE status sent for them rather than a 51 — NOT FOUND.
⁂