From: Eric Wong <normalperson@yhbt.net>
To: mongrel-unicorn@rubyforge.org
Subject: [PATCH] HttpParser#next? becomes response_start_sent-aware
Date: Wed, 8 May 2013 23:01:18 +0000 [thread overview]
Message-ID: <20130508230118.GA24576@dcvr.yhbt.net> (raw)
This could allow servers with persistent connection support[1]
to support our check_client_connection in the future.
[1] - Rainbows!/zbatery, possibly others
---
ext/unicorn_http/unicorn_http.rl | 6 ++----
test/unit/test_http_parser_ng.rb | 17 +++++++++++++++++
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/ext/unicorn_http/unicorn_http.rl b/ext/unicorn_http/unicorn_http.rl
index 1a8003f..3529740 100644
--- a/ext/unicorn_http/unicorn_http.rl
+++ b/ext/unicorn_http/unicorn_http.rl
@@ -732,10 +732,8 @@ static VALUE HttpParser_parse(VALUE self)
struct http_parser *hp = data_get(self);
VALUE data = hp->buf;
- if (HP_FL_TEST(hp, TO_CLEAR)) {
- http_parser_init(hp);
- rb_funcall(hp->env, id_clear, 0);
- }
+ if (HP_FL_TEST(hp, TO_CLEAR))
+ HttpParser_clear(self);
http_parser_execute(hp, RSTRING_PTR(data), RSTRING_LEN(data));
if (hp->offset > MAX_HEADER_LEN)
diff --git a/test/unit/test_http_parser_ng.rb b/test/unit/test_http_parser_ng.rb
index 93c44bb..ab335ac 100644
--- a/test/unit/test_http_parser_ng.rb
+++ b/test/unit/test_http_parser_ng.rb
@@ -12,6 +12,23 @@ def setup
@parser = HttpParser.new
end
+ def test_next_clear
+ r = "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n"
+ @parser.buf << r
+ @parser.parse
+ @parser.response_start_sent = true
+ assert @parser.keepalive?
+ assert @parser.next?
+ assert @parser.response_start_sent
+
+ # persistent client makes another request:
+ @parser.buf << r
+ @parser.parse
+ assert @parser.keepalive?
+ assert @parser.next?
+ assert_equal false, @parser.response_start_sent
+ end
+
def test_keepalive_requests_default_constant
assert_kind_of Integer, HttpParser::KEEPALIVE_REQUESTS_DEFAULT
assert HttpParser::KEEPALIVE_REQUESTS_DEFAULT >= 0
--
Eric Wong
_______________________________________________
Unicorn mailing list - mongrel-unicorn@rubyforge.org
http://rubyforge.org/mailman/listinfo/mongrel-unicorn
Do not quote signatures (like this one) or top post when replying
reply other threads:[~2013-05-08 23:01 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://yhbt.net/unicorn/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130508230118.GA24576@dcvr.yhbt.net \
--to=normalperson@yhbt.net \
--cc=mongrel-unicorn@rubyforge.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhbt.net/unicorn.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).