mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Make sure to wait with IO.select before using Socket#accept_nonblock and recvfrom_nonblock
* On all platforms, as this is the recommended code pattern. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67011 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									920b924e56
								
							
						
					
					
						commit
						c1f0daeb6a
					
				
					 2 changed files with 5 additions and 4 deletions
				
			
		|  | @ -86,8 +86,6 @@ describe 'Socket#accept_nonblock' do | ||||||
|             @client = Socket.new(family, :STREAM, 0) |             @client = Socket.new(family, :STREAM, 0) | ||||||
| 
 | 
 | ||||||
|             @client.connect(addr) |             @client.connect(addr) | ||||||
| 
 |  | ||||||
|             platform_is(:darwin, :freebsd, :solaris) { IO.select([@server]) } |  | ||||||
|           end |           end | ||||||
| 
 | 
 | ||||||
|           after do |           after do | ||||||
|  | @ -96,6 +94,7 @@ describe 'Socket#accept_nonblock' do | ||||||
|           end |           end | ||||||
| 
 | 
 | ||||||
|           it 'returns an Array containing a Socket and an Addrinfo' do |           it 'returns an Array containing a Socket and an Addrinfo' do | ||||||
|  |             IO.select([@server]) | ||||||
|             @socket, addrinfo = @server.accept_nonblock |             @socket, addrinfo = @server.accept_nonblock | ||||||
| 
 | 
 | ||||||
|             @socket.should be_an_instance_of(Socket) |             @socket.should be_an_instance_of(Socket) | ||||||
|  | @ -104,6 +103,7 @@ describe 'Socket#accept_nonblock' do | ||||||
| 
 | 
 | ||||||
|           describe 'the returned Addrinfo' do |           describe 'the returned Addrinfo' do | ||||||
|             before do |             before do | ||||||
|  |               IO.select([@server]) | ||||||
|               @socket, @addr = @server.accept_nonblock |               @socket, @addr = @server.accept_nonblock | ||||||
|             end |             end | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -40,16 +40,16 @@ describe 'UDPSocket#recvfrom_nonblock' do | ||||||
|         describe 'with data available' do |         describe 'with data available' do | ||||||
|           before do |           before do | ||||||
|             @client.write('hello') |             @client.write('hello') | ||||||
| 
 |  | ||||||
|             platform_is(:darwin, :freebsd) { IO.select([@server]) } |  | ||||||
|           end |           end | ||||||
| 
 | 
 | ||||||
|           it 'returns an Array containing the data and an Array' do |           it 'returns an Array containing the data and an Array' do | ||||||
|  |             IO.select([@server]) | ||||||
|             @server.recvfrom_nonblock(1).should be_an_instance_of(Array) |             @server.recvfrom_nonblock(1).should be_an_instance_of(Array) | ||||||
|           end |           end | ||||||
| 
 | 
 | ||||||
|           describe 'the returned Array' do |           describe 'the returned Array' do | ||||||
|             before do |             before do | ||||||
|  |               IO.select([@server]) | ||||||
|               @array = @server.recvfrom_nonblock(1) |               @array = @server.recvfrom_nonblock(1) | ||||||
|             end |             end | ||||||
| 
 | 
 | ||||||
|  | @ -64,6 +64,7 @@ describe 'UDPSocket#recvfrom_nonblock' do | ||||||
| 
 | 
 | ||||||
|           describe 'the returned address Array' do |           describe 'the returned address Array' do | ||||||
|             before do |             before do | ||||||
|  |               IO.select([@server]) | ||||||
|               @addr = @server.recvfrom_nonblock(1)[1] |               @addr = @server.recvfrom_nonblock(1)[1] | ||||||
|             end |             end | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 eregon
						eregon