about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-06-15remove BasicSocket.do_not_reverse_lookup setting
kgio never does reverse lookup
2011-06-15http: delay CoW string invalidations in filter_body
Not all invocations of filter_body will trigger CoW on the given destination string. We can also avoid an unnecessary rb_str_set_len() in the non-chunked path, too.
2011-06-15http: remove tainting flag
Needless line noise, kgio doesn't support tainting anyways.
2011-06-15http_server: get rid of EINTR checks
Ruby IO.select never raises that, actually
2011-06-15test_http_parser: fix for URI too long errors
The random garbage generator may occasionally generate URIs that are too long and cause the URI-specific error to be raised instead of the generic parser error we recently introduced.
2011-06-15http_server: further reduce stack usage for app.call
By avoid Array#each
2011-06-14http_server: small cleanups for attr assignments
ivar references using @ are slightly faster than calling attribute methods.
2011-06-14http_server: do not rescue from proper exits
Oops, it messes logging up badly.
2011-06-14http: fix documentation for dechunk!
chunk_ready! was my original name for it, but I'm indecisive when it comes to naming things.
2011-06-13http: dechunk! method to enter dechunk mode
This allows one to enter the dechunker without parsing HTTP headers beforehand. Since we skipped header parsing, trailer parsing is not supported since we don't know what trailers might be (to our knowledge, nobody uses trailers anyways)
2011-06-13http: document reasoning for memcpy in filter_body
copy-on-write behavior doesn't help you if your common use case triggers copies.
2011-06-13http: rename variables in filter_body implementation
Makes things easier-to-understand since it's based on memcpy()
2011-06-13change TCP defaults to favor low latency
These TCP settings are a closer match to the behavior of Unix domain sockets and what users expect for fast streaming responses even if nginx can't provide them just now...
2011-06-13gemspec: bump kgio dependency to ~> 2.4
kgio 2.4.1 portability should be better than 2.3, so less user confusion and push them towards 2.4
2011-06-11runtime stack size reductions
This reduces the size of `caller` by 5 frames, which should make backtraces easier-to-read, raising exceptions less expensive, and reduce GC runtime.
2011-06-10test/benchmark/stack.ru: app for measuring stack depth
Stack depth affects Ruby GC performance, so lowering it makes sense
2011-06-09unicorn 3.7.0 - minor feature update v3.7.0
* miscellaneous documentation improvements * return 414 (instead of 400) for Request-URI Too Long * strip leading and trailing linear whitespace in header values User-visible improvements meant for Rainbows! users: * add :ipv6only "listen" option (same as nginx)
2011-06-07configurator: add :ipv6only directive
Enabling this flag for an IPv6 TCP listener allows users to specify IPv6-only listeners regardless of the OS default. This should be interest to Rainbows! users.
2011-06-07build: ensure gem and tgz targets build manpages
Original patch by Hongli Lai <hongli@phusion.nl>: > >From bfefc2cf0efb0913a42862886363b3140dcdbb2a Mon Sep 17 00:00:00 2001 > From: Hongli Lai (Phusion) <hongli@phusion.nl> > Date: Mon, 6 Jun 2011 13:39:00 +0200 > Subject: [PATCH] Ensure that 'make gem' builds the documentation too. > > If autogenerated documentation files, like man pages, don't exist then > 'make gem' will fail, complaining that some files are not found. By > depending the 'gem' target on the 'doc' target we ensure that 'make gem' > always works. > > Signed-off-by: Hongli Lai (Phusion) <hongli@phusion.nl> ref: http://mid.gmane.org/4DED0EE2.7040400@phusion.nl
2011-06-07examples/nginx.conf: better wording for ipv6only comment
Oops.
2011-06-06examples/nginx.conf: add ipv6only comment
IPv4-mapped-IPv6 addresses are fugly.
2011-06-06Documentation: remove --sanitize-html for pandoc
pandoc 1.8 no longer has this.
2011-06-06Document the method for building the Unicorn gem.
Signed-off-by: Hongli Lai (Phusion) <hongli@phusion.nl>
2011-05-23isolate_for_tests: use rake 0.8.7
Rails 3.0.0 can't use Rake 0.9.0 it seems.
2011-05-23gemspec: use latest Isolate (3.1)
It's required for RubyGems 1.8.x
2011-05-23http: call rb_str_modify before rb_str_resize
Ruby 1.9.3dev (trunk) requires it if the string size is unchanged.
2011-05-23strip trailing and leading linear whitespace in headers
RFC 2616, section 4.2: > The field-content does not include any leading or trailing LWS: > linear white space occurring before the first non-whitespace > character of the field-value or after the last non-whitespace > character of the field-value. Such leading or trailing LWS MAY be > removed without changing the semantics of the field value. Any LWS > that occurs between field-content MAY be replaced with a single SP > before interpreting the field value or forwarding the message > downstream.
2011-05-23doc: add Links page to help folks find relevant info
Older announcements on our mailing list could be harder to find.
2011-05-23GNUmakefile: locale-independent grep invocation
Otherwise it could casefold and we don't want that.
2011-05-08doc: PHILOSOPHY: formatting fixes
No need to list things inside preformatted text
2011-05-05http_parser: add max_header_len accessor
Rainbows! wants to be able to lower this eventually...
2011-05-05t0002-parser-error: fix race conditions
"wait" needs to be done in the outside shell because the subshell could still be exiting when we grep.
2011-05-04doc: remove redundant "of" typo
2011-05-04http_parser: new add_parse method
Combines the following sequence: http_parser.buf << socket.readpartial(0x4000) http_parser.parse Into: http_parser.add_parse(socket.readpartial(0x4000)) It was too damn redundant otherwise...
2011-05-04return 414 for URI length violations
There's an HTTP status code allocated for it in <http://www.iana.org/assignments/http-status-codes>, so return that instead of 400.
2011-04-30Sandbox: update doc for latest Bundler versions
Bundler 1.0.x is much improved :)
2011-04-30unicorn 3.6.2 - fix Unicorn::OobGC module v3.6.2
The optional Unicorn::OobGC module is reimplemented to fix breakage that appeared in v3.3.1. There are also minor documentation updates, but no code changes as of 3.6.1 for non-OobGC users. There is also a v1.1.7 release to fix the same OobGC breakage that appeared for 1.1.x users in the v1.1.6 release.
2011-04-30Merge commit 'v1.1.7'
* commit 'v1.1.7': unicorn 1.1.7 - major fixes to minor components oob_gc: reimplement to fix breakage and add tests exec_cgi: handle Status header in CGI response unicorn 1.1.6 - one minor, esoteric bugfix close client socket after closing response body
2011-04-29TUNING: more minor doc updates
2011-04-30unicorn 1.1.7 - major fixes to minor components v1.1.7 1.1.x-stable
No changes to the core code, so this release only affects users of the Unicorn::OobGC and Unicorn::ExecCGI modules. Unicorn::OobGC was totally broken by the fix in the v1.1.6 release and is now reimplemented. Unicorn::ExecCGI (which hardly anybody uses) now returns proper HTTP status codes.
2011-04-30oob_gc: reimplement to fix breakage and add tests
This was broken since v3.3.1[1] and v1.1.6[2] since nginx relies on a closed socket (and not Content-Length/Transfer-Encoding) to detect a response completion. We have to close the client socket before invoking GC to ensure the client sees the response in a timely manner. [1] - commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed [2] - commit b7a0074284d33352bb9e732c660b29162f34bf0e (cherry picked from commit faeb3223636c39ea8df4017dc9a9d39ac649b26d) Conflicts: examples/big_app_gc.rb lib/unicorn/oob_gc.rb
2011-04-29TUNING: document worker_processes tuning
It seems people are still confused about it...
2011-04-29oob_gc: reimplement to fix breakage and add tests
This was broken since v3.3.1[1] since nginx relies on a closed socket (and not Content-Length/Transfer-Encoding) to detect a response completion. We have to close the client socket before invoking GC to ensure the client sees the response in a timely manner. [1] - commit b72a86f66c722d56a6d77ed1d2779ace6ad103ed
2011-04-29TUNING: original sentence was incomplete
2011-04-29examples/big_app_gc: fix comment
Oops, comments should match the latest code
2011-04-29examples/big_app_gc: update this example
OobGC is actually broken with nginx these days since we needed to preserve the env for body.close...
2011-04-27configurator: attempt to clarify :tcp_nopush/:tcp_nodelay
These options will probably be more important as interest in streaming responses in Rails 3.1 develops. I consider the respective defaults for Unicorn (designed to run behind nginx) and Rainbows! (designed to run standalone) to be the best choices in their respective environments.
2011-04-27examples/nginx.conf: clarify proxy_buffering for Rails 3.1
I've tested with nginx 1.0.0 and confirmed "proxy_buffering off;" can cause Unicorn to block on a slow client reading a large response. While there's a potential (client-visible) performance improvement with Rails 3.1 streaming responses, it can also hurt the server with slow clients. Rainbows! with (ThreadSpawn or ThreadPool) is probably the best way to do streaming responses efficiently from all angles (from a server, client and programmer time perspective).
2011-04-26unicorn 3.6.1 - fix OpenSSL PRNG workaround v3.6.1
Our attempt in 3.6.0 to workaround a problem with the OpenSSL PRNG actually made the problem worse. This release corrects the workaround to properly reseed the OpenSSL PRNG after forking.
2011-04-26properly reseed OpenSSL::Random after forking
Using the return value of Kernel#srand actually made the problem worse. Using the value of Kernel#rand is required to actually get a random value to seed the OpenSSL PRNG. Thanks to ghazel for the bug report!