Comment by 👽 spc476

Re: "I'm puzzeled. I see in my logs requests to my Gemini server…"

In: s/Gemini

Yes, and at the top of the "Requests" section, you have this:

The "absolute-URI" contains the scheme and the host (technically, the authority section), not an empty request. What you quoted is when the client sends in a request like "gemini://example.net" the server has to treat it as "gemini://example.net/".

Maybe the Gemini specification is that complicated.

👽 spc476 [OP]

Apr 20 · 2 weeks ago

10 Later Comments ↓

🚀 fstfabi · Apr 20 at 22:20:

oops I mis-read :D

In that case I assume it's just internet background noise (i.e. bots trying to break in). gemini needs scheme+host to do virtual hosts, proxying and titan support. "59 Bad Request" or ignore, I guess.

Edit: if the server is behind a reverse proxy could also a periodic health check to see if the backend is still up.

🥬 lamb-duh · Apr 20 at 23:30:

by an empty request, do you mean a client is connecting, does the tls handshake and then sends CRLF?

👽 spc476 [OP] · Apr 21 at 00:28:

Yup, the client just sends a CRLF.

🚀 lars_the_bear · Apr 21 at 08:10:

As @fstfabi says, this has the appearance of a health check. I guess whether it is or not depends on what kind of infrastructure you have. I don't think regular load balancers and proxies would routinely to health checks on Gemini ports, unless they've been configured to scan every open port.

Could also be a broken client. I'm writing my own client, and I'm sure I've made many, many bad requests.

👽 spc476 [OP] · Apr 21 at 20:24:

I think a healthcheck would at the very least make a valid request. Also, I'm not running a healthcheck, and my Gemini server is directly exposed to the Internet, no reverse proxy at all.

🥬 lamb-duh · May 03 at 23:50:

I just came across

— gemini-diagnostics

A torture test for gemini servers.
[...]
Supported Tests
[...]
[URLEmpty]
Empty URLs should not be accepted by the server.

you should be able to figure out if this tool is making those requests by looking for the other tests the suite performs

👽 spc476 [OP] · May 04 at 08:22:

It's a test to run against a server. You run it against the server you are writing to see if it handles things properly, not against an existing server unless you want to piss the operator off.

And yes, my server properly handles empty requests---it's the damn clients that are buggy.

🥬 lamb-duh · May 04 at 13:36:

yeah, I understand what it is.. it's a program that, among other things, does exactly what you're experiencing. anyone could run it against your server, if they wanted to, maybe without even wanting to piss you off.

And yes, my server properly handles empty requests---it's the damn clients that are buggy.

Does it? what *is* the proper way to handle an empty request?

👽 spc476 [OP] · May 04 at 20:56:

To return an error. What I'm ranting about are the clients that insist on sending an empty request when it isn't allowed by the Gemini specification, which, if the clients I see hitting my server are to go by, rival the HTTP specification in complexity.

🥬 lamb-duh · May 04 at 22:49:

okay, i misunderstood then. i thought you were interested in where those requests were coming from.

Original Post

🌒 s/Gemini

👽 spc476:

I'm puzzeled. I see in my logs requests to my Gemini server that are empty. For gopher, an empty request is legal, and refers to the top page of a gopher server. I don't see where that's allowed in Gemini. If it is, can someone point to the chapter and verse where it's allowed? It's not like the Gemini specification is all that complicated.

💬 12 comments · Apr 20 · 2 weeks ago