Fix the tick_loop example documentation layout.
Fixed build error on Ruby 1.9
Fix build error on Ruby 2.2.0
Avoid leaking timers when doing DNS resolution
Previously, EM would start a timer whenever it connected to a DNS server and never stop that timer. Instead, only start the timer when a request is sent (meaning that the timer isn't started when connecting to the DNS server if the result is answerable from /etc/hosts), and stop it when there are no further pending requests. Based on patches by Greg Brockman <email@example.com>
Add Code Climate badge to repo
Added concurrency validation to EM::Iterator
Add get_file_descriptor which returns the FD number of a signature
Return the signature ID from EventMachine.attach_server.
Add EventMachine.attach_server & EventMachine.attach_socket_server
… socket. Otherwise the FD could be closed by a GC.
Immediate pause from receive_data
When receiving large amounts of incoming data, we loop over recv() up to 10 times to drain the inbound buffers. This meant calling #pause from #receive_data would previously not take effect until the next reactor tick.
Correct reactor_running? to return false after a process forks
Make ScheduleClose() idempotent
I think this fixes issue #441. 8b613d0 changed the `select` timeout to zero in the case where NumCloseScheduled > 0. It seems that in certain circumstances (for example, if `close_connection` is called in a connection's `unbind`) NumCloseScheduled would get incremented twice, but only decremented once, thus never again reaching zero for the lifetime of the reactor. The user-observed effect was that one CPU core would be pegged at 100%, because the zero `select` timeout caused us to go around the select loop without any pause. Changing it so that it is safe to ScheduleClose() multiple times seems like the cleanest solution to the problem.