Project

General

Profile

Backport #4132

Updated by jeremyevans0 (Jeremy Evans) over 4 years ago

=begin 
  
  Socket.close calls shutdown twice on the same file descriptor  
 
  ## socktest.rb ## 
  require 'socket' 
  include Socket::Constants 
  socket = Socket.new( AF_INET, SOCK_STREAM, 0 ) 
  sockaddr = Socket.pack_sockaddr_in( 2200, 'localhost' ) 
  socket.bind( sockaddr ) 
  socket.listen( 5 ) 
  puts "socket.to_i: #{socket.to_i}" 
  socket.close 
  ############# 
 
  $ strace -e trace=open,close ruby1.8 socktest.rb 
  ... 
  socket.to_i: 3 
  close(3)                                  = 0 
  close(3)                                  = -1 EBADF (Bad file descriptor) 
 
  ------------- 
  socket.c 
  - 
  socks_s_close(sock) 
  ... 
  1386 	 shutdown(fileno(fptr->f), 2); 
  1387 	 shutdown(fileno(fptr->f2), 2); 
 
 =end 
 

Back