Date | Commit message (Collapse) |
|
Documentation and release infrastructure updates
and such...
|
|
|
|
It's possible for applications to modify the buffer during
reads and writes, so make a best effort to account for those.
|
|
Oops, use random data so it's easier to detect this.
|
|
Some OSes (FreeBSD 7.0) do not seem to setup
connections as quickly.
|
|
Some older Rubies may not behave correctly otherwise
|
|
No need to leak data.
|
|
Somebody's gotta do it...
|
|
Some Ruby implementations (Rubinius) may call lseek
and clobber the intended errno when looking up the
open file, causing rb_io_wait_* functions to fail.
|
|
We'll stick with the "try" prefix if we're going to be
non-blocking. kgio_accept will favor a blocking accept() call
where it's possible to release the GVL, allowing it to avoid
thundering herd problems. Otherwise it'll use thread-safe
blocking under Ruby 1.8.
|
|
This saves us a relatively expensive fcntl() system call.
|
|
We cannot raise exceptions and expect GC to clean up
after us until we've created an actual IO object.
|
|
These initiate (but do not wait for) non-blocking connects.
|
|
Avoid altering behavior based on globals that
Kgio.wait_{read,writ}able stored in, since that's too confusing.
The non-try variants are closer to the normal IO read/write
methods, except they can be more easily plugged into alternate
reactors and event frameworks.
|
|
Just like IO#read
|
|
No point in cluttering up the meat of our code.
|
|
MSG_DONTWAIT is less consistently implemented/supported on other
platforms on stream sockets, so fallback to fcntl() + read()/write()
for stream sockets. This also fixes our previously broken support
of non-MSG_DONTWAIT systems.
|
|
Tested on FreeBSD 7.0
|
|
This is needed for FreeBSD 7.0, at least.
|
|
We need to test server <-> client interaction
more thoroughly since some systems don't implement
everything right.
|
|
everything shou^Wmight be working...
|