Servidor fino sem tempo limite - ruby, http, timeout, webserver, thin

O código / documentação para Thin sugere que o tempo limite de conexão padrão seja 30s. No entanto, quando tento testar isso, não parece funcionar. O que estou perdendo?

Eu estou usando fino v1.5.0 (o mais recente).

# Test this using: curl -X GET http://localhost:3000/test. You will find that the request does not
# timeout after 30s.

require "thin"

class SimpleAdapter
def call(env)
sleep 100
body = ["hello!"]
[
200,
{ "Content-Type" => "text/plain" },
body
]
end
end

server = Thin::Server.new("127.0.0.1", 3000) do
map "/test" do
run SimpleAdapter.new
end
end

server.start!

Respostas:

5 para resposta № 1

A documentação inline indica o seguinte:

Número máximo de segundos para os dados recebidos chegarem antes de a conexão ser descartada.

E Thin exibe corretamente esse comportamento, ou seja, se você fizer telnet no servidor:

telnet localhost 3000

e aguarde 30 segundos, cai a conexão. Contudo, o comando cURL já envia uma requisição HTTP completa para o servidor Thin, e é por isso que o timeout aguarda dados recebidos nunca é alcançado.


Cardápio