about summary refs log tree commit homepage
DateCommit message (Collapse)
2010-12-25kgio 2.1.1 - one small Rubinius fix v2.1.1
We now avoid errno side-effects in kgio_wait_*able methods. This affects Rubinius, but may affect other Ruby platforms (particularly those that use stdio) as well.
2010-12-25avoid errno side-effects in kgio_wait_*able
Retrieving the file descriptor may have side-effects on certain Ruby implementations (e.g. Rubinius), so ensure our errno is preserved before calling rb_io_wait_*able().
2010-12-26gemspec: point folks to the public mailing list
It's more useful that way.
2010-12-26kgio 2.1.0 - accept improvements and fixes v2.1.0
kgio_accept and kgio_tryaccept now take an optional argument to override the default Kgio::Socket class that is returned. These methods also fall back to using regular accept() if kgio was built on a system with accept4() and later run on a system without accept4().
2010-12-26quiet down some harmless compiler warnings
Less noise means we'll notice real bugs sooner.
2010-12-25accept4: fall back to regular accept() on ENOSYS
kgio may occasionally be built on a system with accept4() and then deployed on one without it. Handle this case gracefully since it unfortunately happens on production systems.
2010-12-25accept methods may take an optional argument
This is preferred as we no longer have to rely on a global constant.
2010-12-25Rakefile: fix RAA license
Oops, we were never Ruby licensed.
2010-12-25doc: use wrongdoc for documentation
wrongdoc factors out a bunch of common code from this project into its own and removes JavaScript from RDoc to boot.
2010-12-22fix errors in RDoc
Noticed-by: IƱaki Baz Castillo
2010-11-18kgio 2.0.0 - major internal API changes v2.0.0
(no code changes from 2.0.0pre1) This release should make Kgio easier and more consistent to use across a variety of libraries/applications. The global Kgio.wait_*able(=) accessor methods are gone in favor of having default kgio_wait_readable and kgio_wait_writable methods added to all Kgio-using classes. Sub-classes may (and are encouraged to) redefine these if needed. Eric Wong (7): expand Kgio::*#kgio_read! documentation prefer symbolic names for waiting read/writability EOFError message matches Ruby's README: Gemcutter => RubyGems.org update documentation with mailing list info add default kgio_wait_*able methods switch entirely to kgio_wait_*able methods
2010-11-18Rakefile: list prerelease tags as well
Since we do prerelease nowadays before real ones.
2010-11-18move website to bogomips.org
This project is useful enough for others and to stand alone without needing to be associated with Unicorn.
2010-11-18kgio 2.0.0pre1 - major internal API changes v2.0.0pre1
This release should make Kgio easier and more consistent to use across a variety of libraries/applications. The global Kgio.wait_*able(=) accessor methods are gone in favor of having default kgio_wait_readable and kgio_wait_writable methods added to all Kgio-using classes. Sub-classes may (and are encouraged to) redefine these if needed. Eric Wong (7): expand Kgio::*#kgio_read! documentation prefer symbolic names for waiting read/writability EOFError message matches Ruby's README: Gemcutter => RubyGems.org update documentation with mailing list info add default kgio_wait_*able methods switch entirely to kgio_wait_*able methods
2010-11-18switch entirely to kgio_wait_*able methods
This removes the global Kgio.wait_*able accesors and requires each class to define (or fall back to) the Kgio::DefaultWaiters methods.
2010-11-18add default kgio_wait_*able methods
It makes it easier for people to use certain overrides without killing other methods. This is the first step in fixing problems people were having with dalli 0.11.1+ while running Unicorn.
2010-11-15update documentation with mailing list info
We're a real project, apparently, so it can have its own mailing list.
2010-11-15README: Gemcutter => RubyGems.org
That's the new name for it and it's official
2010-11-12EOFError message matches Ruby's
This makes messages appear less different than Ruby when using kgio_read! Requested-by: Mike Perham
2010-11-05prefer symbolic names for waiting read/writability
There's no point in using constants that point to symbols instead of just the symbols themselves.
2010-10-28expand Kgio::*#kgio_read! documentation
If the author can forget why it was written, so can the rest of the world.
2010-10-08kgio 1.3.1 - fix zero-length reads v1.3.1
kgio_read and kgio_tryread will now return an empty string when a length of zero is specified instead of nil (which would signal an EOF). This emulates the behavior of IO#read, IO#readpartial, IO#sysread, IO#read_nonblock in core Ruby for consistency.
2010-10-08return empty string on length=0
This matches behavior of all the core Ruby methods.
2010-10-07kgio 1.3.0 - bug and usability fixes v1.3.0
* make Kgio::WaitWritable and Kgio::WaitReadable symbols * trywrite: fix stupid off-by-one error causing corrupt writes on retries
2010-10-07tests: don't trust what I think I know about Ruby
case/when and === didn't actually work as I expected them to.
2010-10-07trywrite: fix stupid off-by-one error causing corrupt writes
Oops!
2010-10-07make WaitWritable and WaitReadable symbols
This makes them easier to compare with === when used in case/when statements in Ruby
2010-10-07kgio 1.2.1 - doc and *BSD workarounds v1.2.1
This fixes our accept4() wrapper which did not work as expected on some *BSD-based systems due to fcntl(fd, F_GETFL) returning false information. Linux 2.6+ users are unnaffected, including those without accept4(). Also some RDoc fixes.
2010-10-07doc: fix RDoc generation
Oops, completely broken by the splitting of the code.
2010-10-06accept4: workaround (P)OS X bug w/O_NONBLOCK
Apparently fcntl(fd, F_GETFL) can return falsely return the O_NONBLOCK flag without actually having it set in the kernel. This is totally broken on the part of the OS.
2010-10-06build: pick on on modified extension files
We build more than one file nowadays.
2010-10-06doc: fix typo in Kgio.accept_cloexec= doc
oops...
2010-10-05kgio 1.2.0 - cleanups and minor improvements v1.2.0
The C extension is now split into several files for ease-of-maintenance. Slightly more common, client-triggerable exceptions (EOFError, Errno::EPIPE, Errno::ECONNRESET) are now less expensive as they are generated without backtraces.
2010-10-05generate empty backtraces for EPIPE and ECONNRESET
Malicious clients may disconnect during big writes to cause EPIPE and ECONNRESET exceptions. Generating backtraces can be expensive with Ruby, so mitigate the DoS vector by lowering the cost of generating an exception.
2010-10-05add kgio_read! methods which may raise EOFError
Except EOFError is gently raised to not include a huge backtrace. Large backtraces can be a performance problem on busy servers that malicious clients may exploit to deny service.
2010-10-05GNUmakefile: use portable tar invocation
We've been spoiled by GNU tar.
2010-09-29refactor and split into separate files
Making the code easier to read and navigate. This also frees us from having to use the stupid A4_ prefix for accept4(2) flags since it conflicts with the socket(2) ones.
2010-09-29Make kgio_trywrite more aggressive with retrying
Partial writes can be retried until completely denied with EAGAIN. Often times, it is beneficial to retry immediately after a partial write because the kernel may allocate more buffers or the reader can drain the buffers. This helps the caller avoid crossing the Ruby <-> C boundary more than necessary.
2010-09-28kgio 1.1.0 - flexible accept methods v1.1.0
* an alternate class now be returned by accept/tryaccept by setting "Kgio.accept_class ="
2010-09-28alternate classes may be returned by accept/tryaccept
These can be useful for avoiding wrapper objects and also allows users to more easily try different things without stepping on others' toe^H^H^Hclasses.
2010-09-27kgio 1.0.1 - compatibility fixes v1.0.1
* add compatibility for ancient Rubies (1.8.6) * linux: fix accept4() support for newer Linux
2010-09-27linux: fix accept4() support for newer Linux
Oops :x Tested on Debian sid.
2010-09-27add compatibility for ancient Rubies
This is tested on Ruby 1.8.6-p114, but may work for 1.8.5, too. Ugh, people ought to upgrade.
2010-09-28kgio 1.0.0 - initial release v1.0.0
Documentation and release infrastructure updates and such...
2010-09-28doc: TODO update
2010-09-28read/write: account for buffer changes during wait
It's possible for applications to modify the buffer during reads and writes, so make a best effort to account for those.
2010-09-28tests: fix broken monster trywrite test
Oops, use random data so it's easier to detect this.
2010-09-27test_tcp*read_write: use blocking kgio_accept in setup
Some OSes (FreeBSD 7.0) do not seem to setup connections as quickly.
2010-09-27set blocking flag before blocking IO#read
Some older Rubies may not behave correctly otherwise
2010-09-27tess: ensure buffer is cleared on failures
No need to leak data.