mongrel 0.2.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README +27 -25
- data/Rakefile +2 -3
- data/bin/mongrel_rails +114 -0
- data/doc/rdoc/classes/Mongrel.html +30 -0
- data/doc/rdoc/classes/Mongrel.src/M000001.html +18 -0
- data/doc/rdoc/classes/Mongrel/Const.html +2 -2
- data/doc/rdoc/classes/Mongrel/DirHandler.html +84 -21
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000009.html +7 -18
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000010.html +26 -9
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000011.html +27 -26
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000012.html +31 -0
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000013.html +38 -0
- data/doc/rdoc/classes/Mongrel/Error404Handler.html +10 -10
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000028.html → M000033.html} +4 -4
- data/doc/rdoc/classes/Mongrel/Error404Handler.src/{M000029.html → M000034.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HeaderOut.html +10 -10
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000017.html → M000019.html} +4 -4
- data/doc/rdoc/classes/Mongrel/HeaderOut.src/{M000018.html → M000020.html} +7 -7
- data/doc/rdoc/classes/Mongrel/HttpHandler.html +5 -5
- data/doc/rdoc/classes/Mongrel/HttpHandler.src/{M000023.html → M000025.html} +3 -3
- data/doc/rdoc/classes/Mongrel/HttpParser.html +35 -35
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000002.html +5 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000003.html +7 -7
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000004.html +8 -20
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000005.html +20 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000006.html +5 -5
- data/doc/rdoc/classes/Mongrel/HttpParser.src/M000007.html +5 -6
- data/doc/rdoc/classes/Mongrel/HttpParser.src/{M000001.html → M000008.html} +6 -6
- data/doc/rdoc/classes/Mongrel/HttpRequest.html +5 -5
- data/doc/rdoc/classes/Mongrel/HttpRequest.src/{M000030.html → M000035.html} +17 -17
- data/doc/rdoc/classes/Mongrel/HttpResponse.html +66 -21
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000026.html +8 -6
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000027.html +7 -12
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000028.html +19 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000029.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000030.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000031.html +21 -0
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000032.html +20 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.html +28 -28
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000014.html +18 -10
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000015.html +51 -5
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000016.html +9 -4
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000017.html +18 -0
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000018.html +18 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.html +31 -21
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000021.html +18 -15
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000022.html +25 -42
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000023.html +36 -0
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000024.html +84 -0
- data/doc/rdoc/created.rid +1 -1
- data/doc/rdoc/files/README.html +32 -42
- data/doc/rdoc/files/ext/http11/http11_c.html +1 -1
- data/doc/rdoc/files/lib/mongrel_rb.html +1 -1
- data/doc/rdoc/fr_method_index.html +35 -30
- data/examples/simpletest.rb +16 -6
- data/ext/http11/http11.c +19 -3
- data/ext/http11/tst_search.c +2 -3
- data/lib/mongrel.rb +108 -20
- data/test/test_uriclassifier.rb +22 -1
- metadata +25 -19
- data/doc/rdoc/classes/Mongrel/DirHandler.src/M000008.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000024.html +0 -21
- data/doc/rdoc/classes/Mongrel/HttpResponse.src/M000025.html +0 -20
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000012.html +0 -31
- data/doc/rdoc/classes/Mongrel/HttpServer.src/M000013.html +0 -64
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000019.html +0 -39
- data/doc/rdoc/classes/Mongrel/URIClassifier.src/M000020.html +0 -51
- data/lib/#mongrel.rb# +0 -493
@@ -5,25 +5,24 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>new (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.new -> parser
|
16
16
|
*
|
17
|
-
*
|
18
|
-
* rather than making new ones.
|
17
|
+
* Creates a new parser.
|
19
18
|
*/
|
20
|
-
VALUE
|
19
|
+
VALUE HttpParser_init(VALUE self)
|
21
20
|
{
|
22
21
|
http_parser *http = NULL;
|
23
22
|
DATA_GET(self, http_parser, http);
|
24
23
|
http_parser_init(http);
|
25
24
|
|
26
|
-
return
|
25
|
+
return self;
|
27
26
|
}</pre>
|
28
27
|
</body>
|
29
28
|
</html>
|
@@ -5,25 +5,25 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>reset (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.reset -> nil
|
16
16
|
*
|
17
|
-
*
|
18
|
-
*
|
17
|
+
* Resets the parser to it's initial state so that you can reuse it
|
18
|
+
* rather than making new ones.
|
19
19
|
*/
|
20
|
-
VALUE
|
20
|
+
VALUE HttpParser_reset(VALUE self)
|
21
21
|
{
|
22
22
|
http_parser *http = NULL;
|
23
23
|
DATA_GET(self, http_parser, http);
|
24
|
-
|
24
|
+
http_parser_init(http);
|
25
25
|
|
26
|
-
return
|
26
|
+
return Qnil;
|
27
27
|
}</pre>
|
28
28
|
</body>
|
29
29
|
</html>
|
@@ -5,37 +5,25 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>finish (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.finish -> true/false
|
16
16
|
*
|
17
|
-
*
|
18
|
-
*
|
19
|
-
* what the return value, you should call HttpParser#finished? and HttpParser#error?
|
20
|
-
* to figure out if it's done parsing or there was an error.
|
21
|
-
*
|
22
|
-
* This function now throws an exception when there is a parsing error. This makes
|
23
|
-
* the logic for working with the parser much easier. You can still test for an
|
24
|
-
* error, but now you need to wrap the parser with an exception handling block.
|
17
|
+
* Finishes a parser early which could put in a "good" or bad state.
|
18
|
+
* You should call reset after finish it or bad things will happen.
|
25
19
|
*/
|
26
|
-
VALUE
|
20
|
+
VALUE HttpParser_finish(VALUE self)
|
27
21
|
{
|
28
22
|
http_parser *http = NULL;
|
29
23
|
DATA_GET(self, http_parser, http);
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
if(http_parser_has_error(http)) {
|
35
|
-
rb_raise(rb_eStandardError, "HTTP Parsing failure");
|
36
|
-
} else {
|
37
|
-
return INT2FIX(http_parser_nread(http));
|
38
|
-
}
|
24
|
+
http_parser_finish(http);
|
25
|
+
|
26
|
+
return http_parser_is_finished(http) ? Qtrue : Qfalse;
|
39
27
|
}</pre>
|
40
28
|
</body>
|
41
29
|
</html>
|
@@ -5,23 +5,37 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>execute (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.execute(req_hash, data) -> Integer
|
16
16
|
*
|
17
|
-
*
|
17
|
+
* Takes a Hash and a String of data, parses the String of data filling in the Hash
|
18
|
+
* returning an Integer to indicate how much of the data has been read. No matter
|
19
|
+
* what the return value, you should call HttpParser#finished? and HttpParser#error?
|
20
|
+
* to figure out if it's done parsing or there was an error.
|
21
|
+
*
|
22
|
+
* This function now throws an exception when there is a parsing error. This makes
|
23
|
+
* the logic for working with the parser much easier. You can still test for an
|
24
|
+
* error, but now you need to wrap the parser with an exception handling block.
|
18
25
|
*/
|
19
|
-
VALUE
|
26
|
+
VALUE HttpParser_execute(VALUE self, VALUE req_hash, VALUE data)
|
20
27
|
{
|
21
28
|
http_parser *http = NULL;
|
22
29
|
DATA_GET(self, http_parser, http);
|
23
|
-
|
24
|
-
|
30
|
+
|
31
|
+
http->data = (void *)req_hash;
|
32
|
+
http_parser_execute(http, RSTRING(data)->ptr, RSTRING(data)->len);
|
33
|
+
|
34
|
+
if(http_parser_has_error(http)) {
|
35
|
+
rb_raise(rb_eStandardError, "HTTP Parsing failure");
|
36
|
+
} else {
|
37
|
+
return INT2FIX(http_parser_nread(http));
|
38
|
+
}
|
25
39
|
}</pre>
|
26
40
|
</body>
|
27
41
|
</html>
|
@@ -5,23 +5,23 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>error? (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.error? -> true/false
|
16
16
|
*
|
17
|
-
* Tells you whether the parser is
|
17
|
+
* Tells you whether the parser is in an error state.
|
18
18
|
*/
|
19
|
-
VALUE
|
19
|
+
VALUE HttpParser_has_error(VALUE self)
|
20
20
|
{
|
21
21
|
http_parser *http = NULL;
|
22
22
|
DATA_GET(self, http_parser, http);
|
23
23
|
|
24
|
-
return
|
24
|
+
return http_parser_has_error(http) ? Qtrue : Qfalse;
|
25
25
|
}</pre>
|
26
26
|
</body>
|
27
27
|
</html>
|
@@ -5,24 +5,23 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>finished? (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.finished? -> true/false
|
16
16
|
*
|
17
|
-
*
|
18
|
-
* set to 0 on initialize or reset calls and is incremented each time execute is called.
|
17
|
+
* Tells you whether the parser is finished or not and in a good state.
|
19
18
|
*/
|
20
|
-
VALUE
|
19
|
+
VALUE HttpParser_is_finished(VALUE self)
|
21
20
|
{
|
22
21
|
http_parser *http = NULL;
|
23
22
|
DATA_GET(self, http_parser, http);
|
24
23
|
|
25
|
-
return
|
24
|
+
return http_parser_is_finished(http) ? Qtrue : Qfalse;
|
26
25
|
}</pre>
|
27
26
|
</body>
|
28
27
|
</html>
|
@@ -5,24 +5,24 @@
|
|
5
5
|
|
6
6
|
<html>
|
7
7
|
<head>
|
8
|
-
<title>
|
8
|
+
<title>nread (Mongrel::HttpParser)</title>
|
9
9
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
13
|
<pre>/**
|
14
14
|
* call-seq:
|
15
|
-
* parser.
|
15
|
+
* parser.nread -> Integer
|
16
16
|
*
|
17
|
-
*
|
17
|
+
* Returns the amount of data processed so far during this processing cycle. It is
|
18
|
+
* set to 0 on initialize or reset calls and is incremented each time execute is called.
|
18
19
|
*/
|
19
|
-
VALUE
|
20
|
+
VALUE HttpParser_nread(VALUE self)
|
20
21
|
{
|
21
22
|
http_parser *http = NULL;
|
22
23
|
DATA_GET(self, http_parser, http);
|
23
|
-
http_parser_init(http);
|
24
24
|
|
25
|
-
return
|
25
|
+
return INT2FIX(http->nread);
|
26
26
|
}</pre>
|
27
27
|
</body>
|
28
28
|
</html>
|
@@ -103,7 +103,7 @@ efficiently handling large file uploads.
|
|
103
103
|
<h3 class="section-bar">Methods</h3>
|
104
104
|
|
105
105
|
<div class="name-list">
|
106
|
-
<a href="#
|
106
|
+
<a href="#M000035">new</a>
|
107
107
|
</div>
|
108
108
|
</div>
|
109
109
|
|
@@ -143,12 +143,12 @@ efficiently handling large file uploads.
|
|
143
143
|
<div id="methods">
|
144
144
|
<h3 class="section-bar">Public Class methods</h3>
|
145
145
|
|
146
|
-
<div id="method-
|
147
|
-
<a name="
|
146
|
+
<div id="method-M000035" class="method-detail">
|
147
|
+
<a name="M000035"></a>
|
148
148
|
|
149
149
|
<div class="method-heading">
|
150
|
-
<a href="HttpRequest.src/
|
151
|
-
onclick="popupCode('HttpRequest.src/
|
150
|
+
<a href="HttpRequest.src/M000035.html" target="Code" class="method-signature"
|
151
|
+
onclick="popupCode('HttpRequest.src/M000035.html');return false;">
|
152
152
|
<span class="method-name">new</span><span class="method-args">(params, initial_body, socket)</span>
|
153
153
|
</a>
|
154
154
|
</div>
|
@@ -10,22 +10,22 @@
|
|
10
10
|
<link rel="stylesheet" href="../../.././rdoc-style.css" type="text/css" media="screen" />
|
11
11
|
</head>
|
12
12
|
<body class="standalone-code">
|
13
|
-
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
13
|
+
<pre> <span class="ruby-comment cmt"># File lib/mongrel.rb, line 142</span>
|
14
|
+
142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">params</span>, <span class="ruby-identifier">initial_body</span>, <span class="ruby-identifier">socket</span>)
|
15
|
+
143: <span class="ruby-ivar">@body</span> = <span class="ruby-identifier">initial_body</span> <span class="ruby-operator">||</span> <span class="ruby-value str">""</span>
|
16
|
+
144: <span class="ruby-ivar">@params</span> = <span class="ruby-identifier">params</span>
|
17
|
+
145: <span class="ruby-ivar">@socket</span> = <span class="ruby-identifier">socket</span>
|
18
|
+
146:
|
19
|
+
147: <span class="ruby-comment cmt"># fix up the CGI requirements</span>
|
20
|
+
148: <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CONTENT_LENGTH</span>] = <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_CONTENT_LENGTH</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
|
21
|
+
149: <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">CONTENT_TYPE</span>] <span class="ruby-operator">||=</span> <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_CONTENT_TYPE</span>]
|
22
|
+
150:
|
23
|
+
151: <span class="ruby-comment cmt"># now, if the initial_body isn't long enough for the content length we have to fill it</span>
|
24
|
+
152: <span class="ruby-comment cmt"># TODO: adapt for big ass stuff by writing to a temp file</span>
|
25
|
+
153: <span class="ruby-identifier">clen</span> = <span class="ruby-identifier">params</span>[<span class="ruby-constant">Const</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTP_CONTENT_LENGTH</span>].<span class="ruby-identifier">to_i</span>
|
26
|
+
154: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">clen</span>
|
27
|
+
155: <span class="ruby-ivar">@body</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@socket</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">clen</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@body</span>.<span class="ruby-identifier">length</span>)
|
28
|
+
156: <span class="ruby-keyword kw">end</span>
|
29
|
+
157: <span class="ruby-keyword kw">end</span></pre>
|
30
30
|
</body>
|
31
31
|
</html>
|
@@ -94,7 +94,7 @@ The parameter to start is the response code—which <a
|
|
94
94
|
href="../Mongrel.html">Mongrel</a> will translate for you based on
|
95
95
|
HTTP_STATUS_CODES. The head parameter is how you write custom headers. The
|
96
96
|
out parameter is where you write your body. The default status code for <a
|
97
|
-
href="HttpResponse.html#
|
97
|
+
href="HttpResponse.html#M000027">HttpResponse.start</a> is 200 so the above
|
98
98
|
example is redundant.
|
99
99
|
</p>
|
100
100
|
<p>
|
@@ -131,10 +131,13 @@ will write this for you based on the out length.
|
|
131
131
|
<h3 class="section-bar">Methods</h3>
|
132
132
|
|
133
133
|
<div class="name-list">
|
134
|
-
<a href="#
|
135
|
-
<a href="#
|
136
|
-
<a href="#
|
137
|
-
<a href="#
|
134
|
+
<a href="#M000032">finished</a>
|
135
|
+
<a href="#M000026">new</a>
|
136
|
+
<a href="#M000028">reset</a>
|
137
|
+
<a href="#M000031">send_body</a>
|
138
|
+
<a href="#M000030">send_header</a>
|
139
|
+
<a href="#M000029">send_status</a>
|
140
|
+
<a href="#M000027">start</a>
|
138
141
|
</div>
|
139
142
|
</div>
|
140
143
|
|
@@ -189,12 +192,12 @@ will write this for you based on the out length.
|
|
189
192
|
<div id="methods">
|
190
193
|
<h3 class="section-bar">Public Class methods</h3>
|
191
194
|
|
192
|
-
<div id="method-
|
193
|
-
<a name="
|
195
|
+
<div id="method-M000026" class="method-detail">
|
196
|
+
<a name="M000026"></a>
|
194
197
|
|
195
198
|
<div class="method-heading">
|
196
|
-
<a href="HttpResponse.src/
|
197
|
-
onclick="popupCode('HttpResponse.src/
|
199
|
+
<a href="HttpResponse.src/M000026.html" target="Code" class="method-signature"
|
200
|
+
onclick="popupCode('HttpResponse.src/M000026.html');return false;">
|
198
201
|
<span class="method-name">new</span><span class="method-args">(socket)</span>
|
199
202
|
</a>
|
200
203
|
</div>
|
@@ -205,12 +208,12 @@ will write this for you based on the out length.
|
|
205
208
|
|
206
209
|
<h3 class="section-bar">Public Instance methods</h3>
|
207
210
|
|
208
|
-
<div id="method-
|
209
|
-
<a name="
|
211
|
+
<div id="method-M000032" class="method-detail">
|
212
|
+
<a name="M000032"></a>
|
210
213
|
|
211
214
|
<div class="method-heading">
|
212
|
-
<a href="HttpResponse.src/
|
213
|
-
onclick="popupCode('HttpResponse.src/
|
215
|
+
<a href="HttpResponse.src/M000032.html" target="Code" class="method-signature"
|
216
|
+
onclick="popupCode('HttpResponse.src/M000032.html');return false;">
|
214
217
|
<span class="method-name">finished</span><span class="method-args">()</span>
|
215
218
|
</a>
|
216
219
|
</div>
|
@@ -223,12 +226,12 @@ the proper format to make an HTTP/1.1 response.
|
|
223
226
|
</div>
|
224
227
|
</div>
|
225
228
|
|
226
|
-
<div id="method-
|
227
|
-
<a name="
|
229
|
+
<div id="method-M000028" class="method-detail">
|
230
|
+
<a name="M000028"></a>
|
228
231
|
|
229
232
|
<div class="method-heading">
|
230
|
-
<a href="HttpResponse.src/
|
231
|
-
onclick="popupCode('HttpResponse.src/
|
233
|
+
<a href="HttpResponse.src/M000028.html" target="Code" class="method-signature"
|
234
|
+
onclick="popupCode('HttpResponse.src/M000028.html');return false;">
|
232
235
|
<span class="method-name">reset</span><span class="method-args">()</span>
|
233
236
|
</a>
|
234
237
|
</div>
|
@@ -241,12 +244,54 @@ to write an alternative response.
|
|
241
244
|
</div>
|
242
245
|
</div>
|
243
246
|
|
244
|
-
<div id="method-
|
245
|
-
<a name="
|
247
|
+
<div id="method-M000031" class="method-detail">
|
248
|
+
<a name="M000031"></a>
|
246
249
|
|
247
250
|
<div class="method-heading">
|
248
|
-
<a href="HttpResponse.src/
|
249
|
-
onclick="popupCode('HttpResponse.src/
|
251
|
+
<a href="HttpResponse.src/M000031.html" target="Code" class="method-signature"
|
252
|
+
onclick="popupCode('HttpResponse.src/M000031.html');return false;">
|
253
|
+
<span class="method-name">send_body</span><span class="method-args">()</span>
|
254
|
+
</a>
|
255
|
+
</div>
|
256
|
+
|
257
|
+
<div class="method-description">
|
258
|
+
</div>
|
259
|
+
</div>
|
260
|
+
|
261
|
+
<div id="method-M000030" class="method-detail">
|
262
|
+
<a name="M000030"></a>
|
263
|
+
|
264
|
+
<div class="method-heading">
|
265
|
+
<a href="HttpResponse.src/M000030.html" target="Code" class="method-signature"
|
266
|
+
onclick="popupCode('HttpResponse.src/M000030.html');return false;">
|
267
|
+
<span class="method-name">send_header</span><span class="method-args">()</span>
|
268
|
+
</a>
|
269
|
+
</div>
|
270
|
+
|
271
|
+
<div class="method-description">
|
272
|
+
</div>
|
273
|
+
</div>
|
274
|
+
|
275
|
+
<div id="method-M000029" class="method-detail">
|
276
|
+
<a name="M000029"></a>
|
277
|
+
|
278
|
+
<div class="method-heading">
|
279
|
+
<a href="HttpResponse.src/M000029.html" target="Code" class="method-signature"
|
280
|
+
onclick="popupCode('HttpResponse.src/M000029.html');return false;">
|
281
|
+
<span class="method-name">send_status</span><span class="method-args">()</span>
|
282
|
+
</a>
|
283
|
+
</div>
|
284
|
+
|
285
|
+
<div class="method-description">
|
286
|
+
</div>
|
287
|
+
</div>
|
288
|
+
|
289
|
+
<div id="method-M000027" class="method-detail">
|
290
|
+
<a name="M000027"></a>
|
291
|
+
|
292
|
+
<div class="method-heading">
|
293
|
+
<a href="HttpResponse.src/M000027.html" target="Code" class="method-signature"
|
294
|
+
onclick="popupCode('HttpResponse.src/M000027.html');return false;">
|
250
295
|
<span class="method-name">start</span><span class="method-args">(status=200) {|@header, @body| ...}</span>
|
251
296
|
</a>
|
252
297
|
</div>
|