Consistenty - `IOError` vs `EBADF`?
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- ruby
- Domínio
- networking, security
Direção de pesquisa
Comece executando a reprodução Ruby fornecida usando Socket.pair e OpenSSL::SSL::SSLSocket, comparando o comportamento com um IO comum após close. Investigue ambas as configurações de sync_close e defina done como close-then-read produzir um comportamento de erro consistente sem travar.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
SSLSocket error conditions are not consistent with IO.
io.closefollowed byio.readcan result inEBADFrather thanIOError.- Without
sync_close,io.closefollowed byio.readwill hang. Even if the underlying IO is not closed, I don't think theSSLSocketinstance should continue to work after being closed?
Reproduction:
#!/usr/bin/env ruby
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'localhost'
end
require 'socket'
require 'openssl'
require 'localhost'
def read_after_close(io)
io.close
io.read
end
begin
client, server = Socket.pair(:UNIX, :STREAM)
read_after_close(client)
rescue => error
$stderr.puts error.full_message
end
begin
authority = Localhost::Authority.fetch
client, server = Socket.pair(:UNIX, :STREAM)
ssl_server = OpenSSL::SSL::SSLSocket.new(server, authority.server_context)
ssl_server.sync_close = true
ssl_client = OpenSSL::SSL::SSLSocket.new(client, authority.client_context)
ssl_client.sync_close = true # If this is not set, `io.read` above will hang which is also a bit odd.
Thread.new{ssl_server.accept}
ssl_client.connect
read_after_close(ssl_client)
rescue => error
$stderr.puts error.full_message
end
Is this something we can improve?
- Linguagem predominante
- C
- Estrelas
- 276
- Forks
- 203
- Merge médio
- 1d 5h
- PRs com merge (30d)
- 10
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ruby/openssl
-
Add OpenSSL::SSL::SSLContext#client_hello_cb= (binding for SSL_CTX_set_client_hello_cb())Talvez já em andamento @kou assumiu há 4 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 53/100
ruby/openssl#1125 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 55/100
ruby/openssl#1118 · 5 comentários ·
Mantenedores costumam responder em até 1 dia
-
Expose XOFs like SHAKE128 and SHAKE256Talvez já em andamento @rhenium assumiu há 101 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
ruby/openssl#1082 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
ruby/openssl#1075 · 4 comentários ·
Mantenedores costumam responder em até 1 dia
-
Unchecked *_set_* callsTalvez já em andamento @ndossche assumiu há 171 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
ruby/openssl#1038 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de ruby/openssl
Issues semelhantes
-
[raylib] update to 6.2Abertacategory:port-update
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
Mantenedores costumam responder em até 8 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100
Mantenedores costumam responder em até 1 dia
-
native-cpu: -Wreturn-type in skainet_row_threads.c:150 (worker fn has no return)Talvez já em andamento @Doomguy-BFG9000 assumiu hoje. Abertagood first issue size:xs skill:native
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 78/100
SKaiNET-developers/SKaiNET#1358 · 1 comentário ·
Mantenedores costumam responder em até 1 dia