Release Name: 0.92.0
Notes:
HTTP server for Rack applications designed to take advantage of features
in Unix/Unix-like operating systems and serve low-latency, high-bandwidth
clients (such as a buffering reverse proxy server).
* http://unicorn.bogomips.org/
* mongrel-unicorn@rubyforge.org
* git://git.bogomips.org/unicorn.git
Changes:
Small fixes and documentation are the focus of this release.
James Golick reported and helped me track down a bug that caused
SIGHUP to drop the default listener (0.0.0.0:8080) if and only
if listeners were completely unspecified in both the
command-line and Unicorn config file. The Unicorn config file
remains the recommended option for specifying listeners as it
allows fine-tuning of the :backlog, :rcvbuf, :sndbuf,
:tcp_nopush, and :tcp_nodelay options.
There are some documentation (and resulting website)
improvements. setup.rb users will notice the new section 1
manpages for `unicorn` and `unicorn_rails`, Rubygems users
will have to install manpages manually or use the website.
The HTTP parser got a 3rd-party code review which resulted in
some cleanups and one insignificant bugfix as a result.
Additionally, the HTTP parser compiles, runs and passes unit
tests under Rubinius. The pure-Ruby parts still do not work yet
and we currently lack the resources/interest to pursue this
further but help will be gladly accepted.
The website now has an Atom feed for new release announcements.
Those unfamiliar with Atom or HTTP may finger unicorn@bogomips.org
for the latest announcements.
Eric Wong (53):
README: update with current version
http: cleanup and avoid potential signedness warning
http: clarify the setting of the actual header in the hash
http: switch to macros for bitflag handling
http: refactor keepalive tracking to functions
http: use explicit elses for readability
http: remove needless goto
http: extra assertion when advancing p manually
http: verbose assertions
http: NIL_P(var) instead of var == Qnil
http: rb_gc_mark already ignores immediates
http: ignore Host: continuation lines with absolute URIs
doc/SIGNALS: fix the no-longer-true bit about socket options
"encoding: binary" comments for all sources (1.9)
http_response: don't "rescue nil" for body.close
CONTRIBUTORS: fix capitalization for why
http: support Rubies without the OBJ_FROZEN macro
http: define OFFT2NUM macro on Rubies without it
http: no-op rb_str_modify() for Rubies without it
http: compile with -fPIC
http: use rb_str_{update,flush} if available
http: create a new string buffer on empty values
Update documentation for Rubinius support status
http: cleanup assertion for memoized header strings
http: add #endif comment labels where appropriate
Add .mailmap file for "git shortlog" and other tools
Update Manifest with mailmap
Fix comment about speculative accept()
SIGNALS: use "Unicorn" when referring to the web server
Add new Documentation section for manpages
test_exec: add extra tests for HUP and preload_app
socket_helper: (FreeBSD) don't freeze the accept filter constant
Avoid freezing objects that don't benefit from it
SIGHUP no longer drops lone, default listener
doc: generate ChangeLog and NEWS file for RDoc
Remove Echoe and roll our own packaging/release...
unicorn_rails: close parentheses in help message
launchers: deprecate ambiguous -P/--p* switches
man1/unicorn: avoid unnecessary emphasis
Add unicorn_rails(1) manpage
Documentation: don't force --rsyncable flag with gzip(1)
Simplify and standardize manpages build/install
GNUmakefile: package .tgz includes all generated files
doc: begin integration of HTML manpages into RDoc
Update TODO
html: add Atom feeds
doc: latest news is available through finger
NEWS.atom: file timestamp matches latest entry
pandoc needs the standalone switch for manpages
man1/unicorn: split out RACK ENVIRONMENT section
man1/unicorn_rails: fix unescaped underscore
NEWS.atom.xml only lists the first 10 entries
unicorn 0.92.0
Changes:
CHANGELOG => .CHANGELOG.old | 0
.document | 4 +
.gitignore | 5 +
.mailmap | 26 +++
CONTRIBUTORS | 2 +-
Documentation/.gitignore | 5 +
Documentation/GNUmakefile | 30 +++
Documentation/unicorn.1.txt | 158 +++++++++++++++
Documentation/unicorn_rails.1.txt | 150 ++++++++++++++
GIT-VERSION-GEN | 40 ++++
GNUmakefile | 116 ++++++++++--
Manifest | 137 -------------
README | 5 +-
Rakefile | 136 ++++++++++---
SIGNALS | 6 +-
TODO | 12 +-
bin/unicorn | 7 +-
bin/unicorn_rails | 8 +-
ext/unicorn_http/c_util.h | 4 +-
ext/unicorn_http/common_field_optimization.h | 3 +-
ext/unicorn_http/ext_help.h | 33 +++-
ext/unicorn_http/extconf.rb | 5 +
ext/unicorn_http/unicorn_http.rl | 207 ++++++++++++-------
lib/unicorn.rb | 8 +-
lib/unicorn/app/exec_cgi.rb | 4 +-
lib/unicorn/app/inetd.rb | 2 +
lib/unicorn/app/old_rails.rb | 2 +
lib/unicorn/app/old_rails/static.rb | 4 +-
lib/unicorn/cgi_wrapper.rb | 4 +-
lib/unicorn/configurator.rb | 2 +
lib/unicorn/const.rb | 14 +-
lib/unicorn/http_request.rb | 11 +-
lib/unicorn/http_response.rb | 6 +-
lib/unicorn/launcher.rb | 6 +
lib/unicorn/socket_helper.rb | 10 +-
lib/unicorn/tee_input.rb | 2 +
lib/unicorn/util.rb | 2 +
local.mk.sample | 6 +-
setup.rb | 1 +
test/aggregate.rb | 2 +
test/exec/test_exec.rb | 157 +++++++++++++++
.../rails/app-1.2.3/app/controllers/application.rb | 2 +
.../app-1.2.3/app/controllers/foo_controller.rb | 2 +
.../app-1.2.3/app/helpers/application_helper.rb | 2 +
test/rails/app-1.2.3/config/boot.rb | 2 +
test/rails/app-1.2.3/config/environment.rb | 2 +
.../app-1.2.3/config/environments/development.rb | 2 +
.../app-1.2.3/config/environments/production.rb | 2 +
test/rails/app-1.2.3/config/routes.rb | 2 +
.../rails/app-2.0.2/app/controllers/application.rb | 2 +
.../app-2.0.2/app/controllers/foo_controller.rb | 2 +
.../app-2.0.2/app/helpers/application_helper.rb | 2 +
test/rails/app-2.0.2/config/boot.rb | 2 +
test/rails/app-2.0.2/config/environment.rb | 2 +
.../app-2.0.2/config/environments/development.rb | 2 +
.../app-2.0.2/config/environments/production.rb | 2 +
test/rails/app-2.0.2/config/routes.rb | 2 +
.../rails/app-2.1.2/app/controllers/application.rb | 2 +
.../app-2.1.2/app/controllers/foo_controller.rb | 2 +
.../app-2.1.2/app/helpers/application_helper.rb | 2 +
test/rails/app-2.1.2/config/boot.rb | 2 +
test/rails/app-2.1.2/config/environment.rb | 2 +
.../app-2.1.2/config/environments/development.rb | 2 +
.../app-2.1.2/config/environments/production.rb | 2 +
test/rails/app-2.1.2/config/routes.rb | 2 +
.../rails/app-2.2.2/app/controllers/application.rb | 2 +
.../app-2.2.2/app/controllers/foo_controller.rb | 2 +
.../app-2.2.2/app/helpers/application_helper.rb | 2 +
test/rails/app-2.2.2/config/boot.rb | 2 +
test/rails/app-2.2.2/config/environment.rb | 2 +
.../app-2.2.2/config/environments/development.rb | 2 +
.../app-2.2.2/config/environments/production.rb | 2 +
test/rails/app-2.2.2/config/routes.rb | 2 +
.../app/controllers/application_controller.rb | 2 +
.../app-2.3.3.1/app/controllers/foo_controller.rb | 2 +
.../app-2.3.3.1/app/helpers/application_helper.rb | 2 +
test/rails/app-2.3.3.1/config/boot.rb | 2 +
test/rails/app-2.3.3.1/config/environment.rb | 2 +
.../app-2.3.3.1/config/environments/development.rb | 2 +
.../app-2.3.3.1/config/environments/production.rb | 2 +
test/rails/app-2.3.3.1/config/routes.rb | 2 +
test/rails/test_rails.rb | 2 +
test/test_helper.rb | 8 +
test/unit/test_configurator.rb | 2 +
test/unit/test_http_parser.rb | 13 ++
test/unit/test_http_parser_ng.rb | 2 +
test/unit/test_request.rb | 2 +
test/unit/test_response.rb | 2 +
test/unit/test_server.rb | 2 +
test/unit/test_signals.rb | 2 +
test/unit/test_socket_helper.rb | 2 +
test/unit/test_tee_input.rb | 3 +-
test/unit/test_upload.rb | 2 +
test/unit/test_util.rb | 2 +
unicorn.gemspec | 46 +++++
95 files changed, 1199 insertions(+), 313 deletions(-)
commit 76130578eb270391bf4afd3c9b74dd1bdb8a3dca
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 14:15:30 2009 -0700
unicorn 0.92.0
Small fixes and documentation are the focus of this release.
James Golick reported and helped me track down a bug that caused
SIGHUP to drop the default listener (0.0.0.0:8080) if and only
if listeners were completely unspecified in both the
command-line and Unicorn config file. The Unicorn config file
remains the recommended option for specifying listeners as it
allows fine-tuning of the :backlog, :rcvbuf, :sndbuf,
:tcp_nopush, and :tcp_nodelay options.
There are some documentation (and resulting website)
improvements. setup.rb users will notice the new section 1
manpages for `unicorn` and `unicorn_rails`, Rubygems users
will have to install manpages manually or use the website.
The HTTP parser got a 3rd-party code review which resulted in
some cleanups and one insignificant bugfix as a result.
Additionally, the HTTP parser compiles, runs and passes unit
tests under Rubinius. The pure-Ruby parts still do not work yet
and we currently lack the resources/interest to pursue this
further but help will be gladly accepted.
The website now has an Atom feed for new release announcements.
Those unfamiliar with Atom or HTTP may finger unicorn@bogomips.org
for the latest announcements.
commit 7c45d8dbfd8e7f8f7279bab67058109d244d9752
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 14:38:45 2009 -0700
NEWS.atom.xml only lists the first 10 entries
No need to waste bandwidth with more.
commit 0333babe7f25640c3b24b117065a18cc266d114e
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 14:09:30 2009 -0700
man1/unicorn_rails: fix unescaped underscore
commit 71d47a28731cd08b0b831d49ff022760726a6625
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 14:06:57 2009 -0700
man1/unicorn: split out RACK ENVIRONMENT section
The inline formatting for the CLI switch was too hard to
get right and was too long anyways.
commit 2b1b119f93cb19946b92496f56350140472b400b
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 14:04:54 2009 -0700
pandoc needs the standalone switch for manpages
Otherwise we end up with unreadable manpages.
commit fbe63c175d0fb0ca67ea726cd1126540a76ea80a
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 13:55:30 2009 -0700
NEWS.atom: file timestamp matches latest entry
Avoid needlessly wasting readers' bandwidth if they're caching.
commit c7e2cef8bfc5dd72f5722917429183045eef7e5e
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 13:24:46 2009 -0700
doc: latest news is available through finger
We're expanding our target audience to folks that do not use
HTTP (yet).
commit ebcbbc995a86698c29ee4784abb540bf5a872945
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 18 03:16:51 2009 -0700
html: add Atom feeds
The ChangeLog feed points to the cgit repository viewer
and the NEWS one is its own feed of tags. Web 2.0 here
we come!
commit 5af05213b6629b2d61435d10101c68305608c0d2
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 20:31:06 2009 -0700
Update TODO
commit 711ca5408415fd3f435d0a36d3284baeda51ce28
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 20:15:31 2009 -0700
doc: begin integration of HTML manpages into RDoc
Kinda sorta works, still some Markdown => HTML formatting issues
to work out but it gives the site a reasonably consistent look.
commit e46489991e6306ed5ebdbb3f8e72d21070f1317b
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 19:34:43 2009 -0700
GNUmakefile: package .tgz includes all generated files
Additionally, force ourselves to verify our working tree against
$(VERSION) when doing releases because we don't want to screw
that up.
commit bdbd96ab70a2702a7d26e6638e096b2f64346853
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 19:25:54 2009 -0700
Simplify and standardize manpages build/install
setup.rb users will now be able to install manpages under
man/man1 automatically, no solution for Rubygems users yet.
gzipped manpages are no longer created by default, either,
it's probably up to distros to do it.
commit 032a79dbf1fb89bbf090f03af199b80d5ff1175d
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 18:55:37 2009 -0700
Documentation: don't force --rsyncable flag with gzip(1)
It may not be portable to older versions of gzip
commit f2f8f89e5e17c68b275e0a0804a698742803e551
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 18:40:48 2009 -0700
Add unicorn_rails(1) manpage
commit ff52d8e0c3bf10410745d39b640dfc6c7d4394bf
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 18:32:31 2009 -0700
man1/unicorn: avoid unnecessary emphasis
SCREAMING is already sufficient without *BOLDNESS*
commit 94029de6bd2b2ada38dfd6efc536a7a950b0a12f
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 17:52:27 2009 -0700
launchers: deprecate ambiguous -P/--p* switches
`unicorn` tries to mimic `rackup` on the command-line to ease
adoption. `unicorn_rails` tries to be somewhat like `rackup` as
well, but then also tries to be consistent with `script/server`
resulting some amount of confusion with regard to the
-P/(--path|--pid) switch. Outright removal of these switches
will probably not happen any time soon because we have
command-lines inherited across processes, but we can stop
advertising them.
Since our (Unicorn) config file format is fortunately consistent
between Rails and !Rails, recommend the "pid" directive be used
instead.
User interfaces are really, really tough to get right...
commit 577f2f88748221a8fd14eea5e72c7299c7b1664a
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 17:24:47 2009 -0700
unicorn_rails: close parentheses in help message
commit 8d1b95587c1ebea4631c66b8e7e4130153c70b26
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 02:55:01 2009 -0700
Remove Echoe and roll our own packaging/release...
* Manifest/CHANGELOG can be maintainance is painful.
I really hate having those in the source tree when
I have a version control system that already:
1) encourages me to make meaningful commits
2) is highly scriptable for generating manifests/changelogs
* hand-rolled gemspec allows more control for specifying
pre-release gem versions
* Less magic over what the `rubyforge` command does, being
able to spawn $VISUAL on changelogs/release notes and make
edits on them is nice.
Additionally I still strongly prefer GNU make over Rake for many
tasks since it offers better parallelization and some things are
easier *for me* in shell than Ruby.
commit 382d12a414942f027ea30911294cd8c8becdf2cd
Author: Eric Wong <normalperson@yhbt.net>
Date: Thu Sep 17 02:55:00 2009 -0700
doc: generate ChangeLog and NEWS file for RDoc
No point in having those files under revision control or
repeating work to generate them.
commit 9435ee2d5111394739b82d0f8a275deca8d505be
Author: Eric Wong <normalperson@yhbt.net>
Date: Wed Sep 16 23:04:37 2009 -0700
SIGHUP no longer drops lone, default listener
When SIGHUP reloads the config, we didn't account for the case
where the listen socket was completely unspecified. Thus the
default listener (0.0.0.0:8080), did not get preserved and
re-injected into the config properly.
Note that relying on the default listen or specifying listeners
on the command-line means it's /practically/ impossible to
_unbind_ those listeners with a configuration file reload. We
also need to preserve the (unspecified) default listener across
upgrades that later result in SIGHUP, too; so the easiest way is
to inject the default listener into the command-line for
upgrades.
Many thanks to James Golick for reporting and helping me track
down the bug since this behavior is difficult to write reliable
automated tests for.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
commit 04c7fc37ab4fb2fbaa1b4a2570871713cf9d1319
Author: Eric Wong <normalperson@yhbt.net>
Date: Wed Sep 16 16:56:22 2009 -0700
Avoid freezing objects that don't benefit from it
This gives applications more rope to play with in case they have
any reasons for changing some values of the default constants.
Freezing strings for Hash assignments still speeds up MRI, so
we'll keep on doing that for now (and as long as MRI supports
frozen strings, I expect them to always be faster for Hashes
though I'd be very happy to be proven wrong...)
commit 045f6d741020d4a77bd68bd80891a97782d54850
Author: Eric Wong <normalperson@yhbt.net>
Date: Wed Sep 16 16:07:16 2009 -0700
socket_helper: (FreeBSD) don't freeze the accept filter constant
We may add support for the Gopher protocol in the future...
commit ac4537afc4eddfb68bc7807f7a6140afb7160328
Author: Eric Wong <normalperson@yhbt.net>
Date: Wed Sep 16 12:11:56 2009 -0700
test_exec: add extra tests for HUP and preload_app
Just to ensure we handle HUP correctly since preload_app
changes the behavior of HUP handling a bit.
commit bd075c8f746dfa97e3e2fe74a262e747806cf772
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 22:43:03 2009 -0700
Add new Documentation section for manpages
Only "unicorn(1)" is documented right now, but more will be
added.
Manpages are written Markdown since it's easy to write, easy to
read (in source form) and a widely-implemented format.
As of September 2009, pandoc is the only Markdown processor I
know of capable of turning Markdown into manpages. So despite
adding a dependency on Haskell (not yet very common these days)
for documentation, the features and performance of
pandoc+Markdown outweigh the drawbacks compared to other
lightweight markup systems.
commit 8f0f376e49b1b3f924ac4856ccff201b975f5f79
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 23:16:59 2009 -0700
SIGNALS: use "Unicorn" when referring to the web server
"unicorn" (lower-case) refers to the executable script
commit a418c88efb4b122d381bf97bfb20f0ec2e2cc29c
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 16:18:40 2009 -0700
Fix comment about speculative accept()
We used to try it on every listener, but then rarely-used
listener ports used mainly for monitoring/debugging would have
accept() unnecessary called, getting unnecessarily expensive
inside the kernel.
commit 1309e7e19092021d252bd948732ae65e4bc22122
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 02:11:11 2009 -0700
Update Manifest with mailmap
commit 59a62398eeba276dab30861cc34ce054d2a725aa
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 01:11:25 2009 -0700
Add .mailmap file for "git shortlog" and other tools
This lets us avoid those ugly <user@UUID> faux email addresses
that "git svn" generates when "git svn" is not used with
--authors-file.
commit 8ddead3eca7ca752379613220c946223c7695752
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 01:18:40 2009 -0700
http: add #endif comment labels where appropriate
Sometimes I end up hacking on 10-row high terminals
and need more context :x
commit 7ad9fd8b217eedd7cab2dc9e1dd5475244d16957
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 01:14:18 2009 -0700
http: cleanup assertion for memoized header strings
assert_frozen() should not be checking what type of
object it is, instead put an extra assertion in there
to ensure we have a string.
commit 3766ae735635eabafeeb73f44c2bc19e5ca180a6
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 15 00:16:56 2009 -0700
Update documentation for Rubinius support status
Note that Rubinius itself is still under heavy development, so
things we fix may break again. The pure-Ruby parts of Unicorn
don't even work properly on Rubinius.
commit 990fedf9933e088a6d0ca30b2e330b58d20bc488
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 14 23:55:26 2009 -0700
http: create a new string buffer on empty values
Since empty values on one line can be a heuristic to determine
future lines are continuation lines (and a as a result, a
decently long header), pre-allocate a string buffer just in
case.
This is to workaround what appears to be bug in the Rubinius C
API, but it could be considered (intended) DWIM behavior, too...
commit a03116fc5b290e5af9a17e7a01558cd1d01ecde4
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 14 23:13:56 2009 -0700
http: use rb_str_{update,flush} if available
Rubinius supports these functions as of
039091066244cfcf483310b86b5c4989aaa6302b
This allows the test_http_parser_ng.rb test to run under
Rubinius db612aa62cad9e5cc41a4a4be645642362029d20
commit 06efebe6139acbe819ef5c4e8b0e832c113fb9ef
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 14 17:45:32 2009 -0700
http: compile with -fPIC
Rubinius doesn't seem to set this by default
commit f37c23704cb73d57e9e478295d1641df1d9104c7
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 14 17:34:46 2009 -0700
http: no-op rb_str_modify() for Rubies without it
Rubinius has no rb_str_modify() function, it /may/
not need it.
commit faeb894d1db8e6893405545f00ae5da01157015e
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 14 17:24:42 2009 -0700
http: define OFFT2NUM macro on Rubies without it
Hope they have the LL2NUM macro (Rubinius does)
commit dbca9cc80d682305440ac4a94c5c72c8cf076021
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 14 17:08:18 2009 -0700
http: support Rubies without the OBJ_FROZEN macro
Rubinius does not support frozen objects, maybe other Rubies
lack support for it as well.
commit 524aaed06a00780d698ad2becd66bd6d7fa5723d
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 13 23:42:37 2009 -0700
CONTRIBUTORS: fix capitalization for why
He contributed to Mongrel back in the day and isn't around Ruby
anymore, but at least get his preferred (lack-of) capitalization
right...
commit 0d354a3cb78a8fe08fac8a91e945dcb50db5ca55
Author: Eric Wong <normalperson@yhbt.net>
Date: Wed Sep 9 12:46:13 2009 -0700
http_response: don't "rescue nil" for body.close
This can hide bugs in Rack applications/middleware. Most other
Rack handlers/servers seem to follow this route as well, so
this helps ensure broken things will break loudly and more
consistently across all Rack-enabled servers :)
commit 84081b4508c51d04a4a9019fcffe0e034b0b2d39
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Sep 8 15:10:04 2009 -0700
"encoding: binary" comments for all sources (1.9)
This ensures any string literals that pop up in *our* code will
just be a bag of bytes. This shouldn't affect/fix/break
existing apps in most cases, but most constants will always have
the "correct" encoding (none!) to be consistent with HTTP/socket
expectations. Since this comment affects things only on a
per-source basis, it won't affect existing apps with the
exception of strings we pass to the Rack application.
This will eventually allow us to get rid of that Unicorn::Z
constant, too.
commit e9b8313d80c9ca870a25f7047454c98b81dd7c85
Author: Eric Wong <normalperson@yhbt.net>
Date: Mon Sep 7 17:30:49 2009 -0700
doc/SIGNALS: fix the no-longer-true bit about socket options
This hasn't been true since 3e9fe197d4daac14fa98addfcf9be3208c7b96b8
commit 1b1029efa7089a8a3628286fe006b1fc1ae8601e
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:57 2009 -0700
http: ignore Host: continuation lines with absolute URIs
This probably doesn't affect anyone with HTTP/1.1, but
future versions of HTTP will use absolute URIs and maybe
we'll eventually get clients that (mistakenly) send us
Host: headers along with absolute URIs.
commit 2213d73a2d23bb39e8a4fa82a33d03daf4c39df2
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:56 2009 -0700
http: rb_gc_mark already ignores immediates
No need to add an extra check, even if it does avoid a
function call.
commit 0e62a00e2b4821a647f382b1649f744f87f959fc
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:55 2009 -0700
http: NIL_P(var) instead of var == Qnil
This should be more inline with Ruby standards/coding style
and probably more future-proof, as well.
commit ee9ed5f58ca1390617595b3b22eb574fdd67a788
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:54 2009 -0700
http: verbose assertions
This makes it easier for bug reporters to tell us what's
wrong in case line numbers change.
commit 5d2f50294ddc0a6689ef5c30cc890f008a6ee173
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:53 2009 -0700
http: extra assertion when advancing p manually
Just in case, it'll be easier to track down if bugs
pop up.
commit 21e1fd3f5c53ea3833d54c18e1a4b92e710e1189
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:52 2009 -0700
http: remove needless goto
There's no need to use a goto here to avoid one level of
nesting.
commit 56c31ac07e737eb0566c21f08612c04371eb9e68
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:51 2009 -0700
http: use explicit elses for readability
This should make code easier to read and follow.
commit 48d5cd51210aa3d9e6efb0989b9a6df1e8623fb3
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:50 2009 -0700
http: refactor keepalive tracking to functions
In case we modify our struct to not use bitflags, this should
make it easier to change the parser code. This also adds extra
clarification for how we track keepalive and why we only do it
for certain request methods.
commit 106b6cd1dd9f541d15b0ced3060362edf968f9a9
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:49 2009 -0700
http: switch to macros for bitflag handling
These are similar to the macros found in MRI, and
can more easily allow us to swap out the bitflags
for real struct members...
commit 78c7455fc3c7e0e464134d5d294e6185a0114e56
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:48 2009 -0700
http: clarify the setting of the actual header in the hash
Avoid a negative conditional in the process and having an
explicit else in there makes this piece easier to track.
Also explain /why/ the Host: header can get ignored.
commit bace4364e8a7d0ac261e407732b9354d2f017045
Author: Eric Wong <normalperson@yhbt.net>
Date: Sun Sep 6 14:29:47 2009 -0700
http: cleanup and avoid potential signedness warning
Just pass the http_parser struct pointer when checking for
invalid headers in the trailer. The compiler should be smart
enough to inline and not relookup the flags. This avoids having
to worry about the flags being signed or not (they should never
be) and also makes it easier to maintain if we move away from
using bitfields.
commit 141eb25bf0a34d6994de71f71488e4d97727950b
Author: Eric Wong <normalperson@yhbt.net>
Date: Fri Sep 4 15:04:44 2009 -0700
README: update with current version
|