Re: itype 3 as generic status Re: To evolve or not to evolve

Mateusz Viste <mateusz-5L880J/[email protected]> Sat, 29 Oct 2022 09:58:24 +0200
Newsgroups gmane.network.gopher.general
Message-ID <[email protected]>
On 28/10/2022 17:29, Sean Conner wrote:
> It was thus said that the Great Mateusz Viste once stated:
>> In the discussed context, maybe a saner convention would be simply: "if
>> the file or menu does not exist, then a well-behaved server SHOULD close
>> the connection right away, without sending back anything at all -
>> ideally shutting the connection using a TCP RST if possible" ?
> 
>    That's a decent idea.  I don't know how to ensure a TCP RST though, nor
> how to check for it.

This depends on the environment and stack being used. In WatTCP / Watt32 
there are specialized routines for that: sock_close() for clean shutdown 
and sock_abort() for RST.

In the more common (nowadays) BSD socket-style POSIX API, closing with 
an RST occurs AFAIK in two conditions:
  - when closing a socket with pending (unread) data
  - when closing a socket with SO_LINGER set to 0

Checking for a RST is quite simple under BSD/POSIX - recv() returns 0 on 
a clean (FIN/ACK FIN/ACK) connection close, and -1 on error (incl. RST, 
in which case errno==ECONNRESET).


Mateusz