mongrel 1.1.5 → 1.2.0.pre2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data.tar.gz.sig DELETED
@@ -1,2 +0,0 @@
1
- F� s@�=!�}O���r$� ��'���%l���kX���8�M�lI��M� �w}A��g��n�x��xAta�<�i��:��d�T/};�h�u���L��:JC2��w� �8_IZ��� S�$UG�+-c�õ �N@�a�U��=�V}�P�k����+�M�.)�g >��(g���E?
2
- ެE�ɳS�(��1�&+���e�Lݭ#& $��K[d􂜖e��x����7Y�t��ǩ���0V��
data/CHANGELOG DELETED
@@ -1,18 +0,0 @@
1
-
2
- v1.1.5. Fix bug where num_processors is not actually set from mongrel_rails.
3
-
4
- v1.1.4. Fix camping handler. Correct treatment of @throttle parameter.
5
-
6
- v1.1.3. Fix security flaw of DirHandler; reported on mailing list.
7
-
8
- v1.1.2. Fix worker termination bug; fix JRuby 1.0.3 load order issue; fix require issue on systems without Rubygems.
9
-
10
- v1.1.1. Fix mongrel_rails restart bug; fix bug with Rack status codes.
11
-
12
- v1.1. Pure Ruby URIClassifier. More modular architecture. JRuby support. Move C URIClassifier into mongrel_experimental project.
13
-
14
- v1.0.4. Backport fixes for versioning inconsistency, mongrel_rails bug, and DirHandler bug.
15
-
16
- v1.0.3. Fix user-switching bug; make people upgrade to the latest from the RC.
17
-
18
- v1.0.2. Signed gem; many minor bugfixes and patches.
@@ -1,92 +0,0 @@
1
- ###############################################
2
- # mongrel_simple_ctrl.rb
3
- #
4
- # Control script for the Mongrel server
5
- ###############################################
6
- require "optparse"
7
- require "win32/service"
8
- include Win32
9
-
10
- # I start the service name with an 'A' so that it appears at the top
11
- SERVICE_NAME = "MongrelSvc"
12
- SERVICE_DISPLAYNAME = "Mongrel HTTP Server"
13
- SCRIPT_ROOT = File.join(File.dirname(__FILE__), '.')
14
- SCRIPT_NAME = "mongrel_simple_service.rb"
15
- SERVICE_SCRIPT = File.expand_path(SCRIPT_ROOT + '/' + SCRIPT_NAME)
16
-
17
- OPTIONS = {}
18
-
19
- ARGV.options do |opts|
20
- opts.on("-d", "--delete", "Delete the service"){ OPTIONS[:delete] = true }
21
- opts.on("-u", "--uninstall","Delete the service"){ OPTIONS[:uninstall] = true }
22
- opts.on("-s", "--start", "Start the service"){ OPTIONS[:start] = true }
23
- opts.on("-x", "--stop", "Stop the service"){ OPTIONS[:stop] = true }
24
- opts.on("-i", "--install","Install the service"){ OPTIONS[:install] = true }
25
-
26
- opts.on("-h", "--help", "Show this help message."){ puts opts; exit }
27
-
28
- opts.parse!
29
- end
30
-
31
- # Install the service
32
- if OPTIONS[:install]
33
- require 'rbconfig'
34
-
35
- svc = Service.new
36
- svc.create_service{ |s|
37
- s.service_name = SERVICE_NAME
38
- s.display_name = SERVICE_DISPLAYNAME
39
- s.binary_path_name = Config::CONFIG['bindir'] + '/ruby ' + SERVICE_SCRIPT
40
- s.dependencies = []
41
- }
42
- svc.close
43
- puts "#{SERVICE_DISPLAYNAME} service installed"
44
- end
45
-
46
- # Start the service
47
- if OPTIONS[:start]
48
- Service.start(SERVICE_NAME)
49
- started = false
50
- while started == false
51
- s = Service.status(SERVICE_NAME)
52
- started = true if s.current_state == "running"
53
- break if started == true
54
- puts "One moment, " + s.current_state
55
- sleep 1
56
- end
57
- puts "#{SERVICE_DISPLAYNAME} service started"
58
- end
59
-
60
- # Stop the service
61
- if OPTIONS[:stop]
62
- Service.stop(SERVICE_NAME)
63
- stopped = false
64
- while stopped == false
65
- s = Service.status(SERVICE_NAME)
66
- stopped = true if s.current_state == "stopped"
67
- break if stopped == true
68
- puts "One moment, " + s.current_state
69
- sleep 1
70
- end
71
- puts "#{SERVICE_DISPLAYNAME} service stopped"
72
- end
73
-
74
- # Delete the service. Stop it first.
75
- if OPTIONS[:delete] || OPTIONS[:uninstall]
76
- begin
77
- Service.stop(SERVICE_NAME)
78
- rescue
79
- end
80
- begin
81
- Service.delete(SERVICE_NAME)
82
- rescue
83
- end
84
- puts "#{SERVICE_DISPLAYNAME} service deleted"
85
- end
86
- # END mongrel_rails_ctrl.rb
87
-
88
-
89
-
90
-
91
-
92
-
@@ -1,116 +0,0 @@
1
- # This script emualtes script/server behavior but running webrick http server
2
- require 'rubygems'
3
-
4
- require 'mongrel'
5
- require 'yaml'
6
- require 'zlib'
7
-
8
- require 'win32/service'
9
-
10
- DEBUG_LOG_FILE = File.expand_path(File.dirname(__FILE__) + '/debug.log')
11
-
12
- class SimpleHandler < Mongrel::HttpHandler
13
- def process(request, response)
14
- response.start do |head,out|
15
- head["Content-Type"] = "text/html"
16
- results = "<html><body>Your request:<br /><pre>#{request.params.to_yaml}</pre><a href=\"/files\">View the files.</a></body></html>"
17
- if request.params["HTTP_ACCEPT_ENCODING"] == "gzip,deflate"
18
- head["Content-Encoding"] = "deflate"
19
- # send it back deflated
20
- out << Zlib::Deflate.deflate(results)
21
- else
22
- # no gzip supported, send it back normal
23
- out << results
24
- end
25
- end
26
- end
27
- end
28
-
29
- class MongrelDaemon < Win32::Daemon
30
- def initialize(options)
31
- @options = options
32
- end
33
-
34
- def service_init
35
- File.open(DEBUG_LOG_FILE,"a+") { |f| f.puts("#{Time.now} - service_init entered") }
36
-
37
- File.open(DEBUG_LOG_FILE,"a+") { |f| f.puts("Mongrel running on #{@options[:ip]}:#{@options[:port]} with docroot #{@options[:server_root]}") }
38
-
39
- @simple = SimpleHandler.new
40
- @files = Mongrel::DirHandler.new(@options[:server_root])
41
-
42
- @http_server = Mongrel::HttpServer.new(@options[:ip], @options[:port])
43
- @http_server.register("/", @simple)
44
- @http_server.register("/files", @files)
45
-
46
- File.open(DEBUG_LOG_FILE,"a+") { |f| f.puts("#{Time.now} - service_init left") }
47
- end
48
-
49
- def service_stop
50
- File.open(DEBUG_LOG_FILE,"a+"){ |f|
51
- f.puts "stop signal received: " + Time.now.to_s
52
- f.puts "sending stop to mongrel threads: " + Time.now.to_s
53
- }
54
- #@http_server.stop
55
- end
56
-
57
- def service_pause
58
- File.open(DEBUG_LOG_FILE,"a+"){ |f|
59
- f.puts "pause signal received: " + Time.now.to_s
60
- }
61
- end
62
-
63
- def service_resume
64
- File.open(DEBUG_LOG_FILE,"a+"){ |f|
65
- f.puts "continue/resume signal received: " + Time.now.to_s
66
- }
67
- end
68
-
69
- def service_main
70
- File.open(DEBUG_LOG_FILE,"a+") { |f| f.puts("#{Time.now} - service_main entered") }
71
-
72
- begin
73
- File.open(DEBUG_LOG_FILE,"a+") { |f| f.puts("#{Time.now} - http_server.run") }
74
- @http_server.run
75
-
76
- # No runner thread was needed after all!
77
- #@runner = Thread.new do
78
- # @http_server.acceptor.join
79
- #end
80
- #File.open("d:\\test.log","a+") { |f| f.puts("#{Time.now} - runner.run") }
81
- #@runner.run
82
-
83
- # here is where magic happens!
84
- # if put blocking code here, the thread never left service_main, and the rb_func_call in service.c
85
- # never exit, even if the stop signal is received.
86
- #
87
- # to probe my theory, just comment the while loop and remove the '1' from sleep function
88
- # service start ok, but fail to stop.
89
- #
90
- # Even if no functional code is in service_main (because we have other working threads),
91
- # we must monitor the state of the service to exit when the STOP event is received.
92
- #
93
- # Note: maybe not loop in 1 second intervals?
94
- while state == RUNNING
95
- sleep 1
96
- end
97
-
98
- rescue StandardError, Exception, interrupt => err
99
- File.open(DEBUG_LOG_FILE,"a+"){ |f| f.puts("#{Time.now} - Error: #{err}") }
100
- File.open(DEBUG_LOG_FILE,"a+"){ |f| f.puts("BACKTRACE: " + err.backtrace.join("\n")) }
101
-
102
- end
103
-
104
- File.open(DEBUG_LOG_FILE,"a+") { |f| f.puts("#{Time.now} - service_main left") }
105
- end
106
-
107
- end
108
-
109
- OPTIONS = {
110
- :port => 3000,
111
- :ip => "0.0.0.0",
112
- :server_root => File.expand_path(File.dirname(__FILE__)),
113
- }
114
-
115
- web_server = MongrelDaemon.new(OPTIONS)
116
- web_server.mainloop
@@ -1,572 +0,0 @@
1
- // line 1 "http11_parser.java.rl"
2
- package org.jruby.mongrel;
3
-
4
- import org.jruby.util.ByteList;
5
-
6
- public class Http11Parser {
7
-
8
- /** Machine **/
9
-
10
- // line 64 "http11_parser.java.rl"
11
-
12
-
13
- /** Data **/
14
-
15
- // line 16 "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
16
- private static void init__http_parser_actions_0( byte[] r )
17
- {
18
- r[0]=0; r[1]=1; r[2]=0; r[3]=1; r[4]=1; r[5]=1; r[6]=2; r[7]=1;
19
- r[8]=3; r[9]=1; r[10]=4; r[11]=1; r[12]=5; r[13]=1; r[14]=6; r[15]=1;
20
- r[16]=7; r[17]=1; r[18]=8; r[19]=1; r[20]=10; r[21]=1; r[22]=11; r[23]=1;
21
- r[24]=12; r[25]=2; r[26]=9; r[27]=6; r[28]=2; r[29]=11; r[30]=6; r[31]=3;
22
- r[32]=8; r[33]=9; r[34]=6;
23
- }
24
-
25
- private static byte[] create__http_parser_actions( )
26
- {
27
- byte[] r = new byte[35];
28
- init__http_parser_actions_0( r );
29
- return r;
30
- }
31
-
32
- private static final byte _http_parser_actions[] = create__http_parser_actions();
33
-
34
-
35
- private static void init__http_parser_key_offsets_0( short[] r )
36
- {
37
- r[0]=0; r[1]=0; r[2]=8; r[3]=17; r[4]=27; r[5]=29; r[6]=30; r[7]=31;
38
- r[8]=32; r[9]=33; r[10]=34; r[11]=36; r[12]=39; r[13]=41; r[14]=44; r[15]=45;
39
- r[16]=61; r[17]=62; r[18]=78; r[19]=80; r[20]=81; r[21]=90; r[22]=99; r[23]=105;
40
- r[24]=111; r[25]=121; r[26]=130; r[27]=136; r[28]=142; r[29]=153; r[30]=159; r[31]=165;
41
- r[32]=175; r[33]=181; r[34]=187; r[35]=196; r[36]=205; r[37]=211; r[38]=217; r[39]=226;
42
- r[40]=235; r[41]=244; r[42]=253; r[43]=262; r[44]=271; r[45]=280; r[46]=289; r[47]=298;
43
- r[48]=307; r[49]=316; r[50]=325; r[51]=334; r[52]=343; r[53]=352; r[54]=361; r[55]=370;
44
- r[56]=379; r[57]=380;
45
- }
46
-
47
- private static short[] create__http_parser_key_offsets( )
48
- {
49
- short[] r = new short[58];
50
- init__http_parser_key_offsets_0( r );
51
- return r;
52
- }
53
-
54
- private static final short _http_parser_key_offsets[] = create__http_parser_key_offsets();
55
-
56
-
57
- private static void init__http_parser_trans_keys_0( char[] r )
58
- {
59
- r[0]=36; r[1]=95; r[2]=45; r[3]=46; r[4]=48; r[5]=57; r[6]=65; r[7]=90;
60
- r[8]=32; r[9]=36; r[10]=95; r[11]=45; r[12]=46; r[13]=48; r[14]=57; r[15]=65;
61
- r[16]=90; r[17]=42; r[18]=43; r[19]=47; r[20]=58; r[21]=45; r[22]=57; r[23]=65;
62
- r[24]=90; r[25]=97; r[26]=122; r[27]=32; r[28]=35; r[29]=72; r[30]=84; r[31]=84;
63
- r[32]=80; r[33]=47; r[34]=48; r[35]=57; r[36]=46; r[37]=48; r[38]=57; r[39]=48;
64
- r[40]=57; r[41]=13; r[42]=48; r[43]=57; r[44]=10; r[45]=13; r[46]=33; r[47]=124;
65
- r[48]=126; r[49]=35; r[50]=39; r[51]=42; r[52]=43; r[53]=45; r[54]=46; r[55]=48;
66
- r[56]=57; r[57]=65; r[58]=90; r[59]=94; r[60]=122; r[61]=10; r[62]=33; r[63]=58;
67
- r[64]=124; r[65]=126; r[66]=35; r[67]=39; r[68]=42; r[69]=43; r[70]=45; r[71]=46;
68
- r[72]=48; r[73]=57; r[74]=65; r[75]=90; r[76]=94; r[77]=122; r[78]=13; r[79]=32;
69
- r[80]=13; r[81]=32; r[82]=37; r[83]=60; r[84]=62; r[85]=127; r[86]=0; r[87]=31;
70
- r[88]=34; r[89]=35; r[90]=32; r[91]=37; r[92]=60; r[93]=62; r[94]=127; r[95]=0;
71
- r[96]=31; r[97]=34; r[98]=35; r[99]=48; r[100]=57; r[101]=65; r[102]=70; r[103]=97;
72
- r[104]=102; r[105]=48; r[106]=57; r[107]=65; r[108]=70; r[109]=97; r[110]=102; r[111]=43;
73
- r[112]=58; r[113]=45; r[114]=46; r[115]=48; r[116]=57; r[117]=65; r[118]=90; r[119]=97;
74
- r[120]=122; r[121]=32; r[122]=34; r[123]=35; r[124]=37; r[125]=60; r[126]=62; r[127]=127;
75
- r[128]=0; r[129]=31; r[130]=48; r[131]=57; r[132]=65; r[133]=70; r[134]=97; r[135]=102;
76
- r[136]=48; r[137]=57; r[138]=65; r[139]=70; r[140]=97; r[141]=102; r[142]=32; r[143]=34;
77
- r[144]=35; r[145]=37; r[146]=59; r[147]=60; r[148]=62; r[149]=63; r[150]=127; r[151]=0;
78
- r[152]=31; r[153]=48; r[154]=57; r[155]=65; r[156]=70; r[157]=97; r[158]=102; r[159]=48;
79
- r[160]=57; r[161]=65; r[162]=70; r[163]=97; r[164]=102; r[165]=32; r[166]=34; r[167]=35;
80
- r[168]=37; r[169]=60; r[170]=62; r[171]=63; r[172]=127; r[173]=0; r[174]=31; r[175]=48;
81
- r[176]=57; r[177]=65; r[178]=70; r[179]=97; r[180]=102; r[181]=48; r[182]=57; r[183]=65;
82
- r[184]=70; r[185]=97; r[186]=102; r[187]=32; r[188]=34; r[189]=35; r[190]=37; r[191]=60;
83
- r[192]=62; r[193]=127; r[194]=0; r[195]=31; r[196]=32; r[197]=34; r[198]=35; r[199]=37;
84
- r[200]=60; r[201]=62; r[202]=127; r[203]=0; r[204]=31; r[205]=48; r[206]=57; r[207]=65;
85
- r[208]=70; r[209]=97; r[210]=102; r[211]=48; r[212]=57; r[213]=65; r[214]=70; r[215]=97;
86
- r[216]=102; r[217]=32; r[218]=36; r[219]=95; r[220]=45; r[221]=46; r[222]=48; r[223]=57;
87
- r[224]=65; r[225]=90; r[226]=32; r[227]=36; r[228]=95; r[229]=45; r[230]=46; r[231]=48;
88
- r[232]=57; r[233]=65; r[234]=90; r[235]=32; r[236]=36; r[237]=95; r[238]=45; r[239]=46;
89
- r[240]=48; r[241]=57; r[242]=65; r[243]=90; r[244]=32; r[245]=36; r[246]=95; r[247]=45;
90
- r[248]=46; r[249]=48; r[250]=57; r[251]=65; r[252]=90; r[253]=32; r[254]=36; r[255]=95;
91
- r[256]=45; r[257]=46; r[258]=48; r[259]=57; r[260]=65; r[261]=90; r[262]=32; r[263]=36;
92
- r[264]=95; r[265]=45; r[266]=46; r[267]=48; r[268]=57; r[269]=65; r[270]=90; r[271]=32;
93
- r[272]=36; r[273]=95; r[274]=45; r[275]=46; r[276]=48; r[277]=57; r[278]=65; r[279]=90;
94
- r[280]=32; r[281]=36; r[282]=95; r[283]=45; r[284]=46; r[285]=48; r[286]=57; r[287]=65;
95
- r[288]=90; r[289]=32; r[290]=36; r[291]=95; r[292]=45; r[293]=46; r[294]=48; r[295]=57;
96
- r[296]=65; r[297]=90; r[298]=32; r[299]=36; r[300]=95; r[301]=45; r[302]=46; r[303]=48;
97
- r[304]=57; r[305]=65; r[306]=90; r[307]=32; r[308]=36; r[309]=95; r[310]=45; r[311]=46;
98
- r[312]=48; r[313]=57; r[314]=65; r[315]=90; r[316]=32; r[317]=36; r[318]=95; r[319]=45;
99
- r[320]=46; r[321]=48; r[322]=57; r[323]=65; r[324]=90; r[325]=32; r[326]=36; r[327]=95;
100
- r[328]=45; r[329]=46; r[330]=48; r[331]=57; r[332]=65; r[333]=90; r[334]=32; r[335]=36;
101
- r[336]=95; r[337]=45; r[338]=46; r[339]=48; r[340]=57; r[341]=65; r[342]=90; r[343]=32;
102
- r[344]=36; r[345]=95; r[346]=45; r[347]=46; r[348]=48; r[349]=57; r[350]=65; r[351]=90;
103
- r[352]=32; r[353]=36; r[354]=95; r[355]=45; r[356]=46; r[357]=48; r[358]=57; r[359]=65;
104
- r[360]=90; r[361]=32; r[362]=36; r[363]=95; r[364]=45; r[365]=46; r[366]=48; r[367]=57;
105
- r[368]=65; r[369]=90; r[370]=32; r[371]=36; r[372]=95; r[373]=45; r[374]=46; r[375]=48;
106
- r[376]=57; r[377]=65; r[378]=90; r[379]=32; r[380]=0;
107
- }
108
-
109
- private static char[] create__http_parser_trans_keys( )
110
- {
111
- char[] r = new char[381];
112
- init__http_parser_trans_keys_0( r );
113
- return r;
114
- }
115
-
116
- private static final char _http_parser_trans_keys[] = create__http_parser_trans_keys();
117
-
118
-
119
- private static void init__http_parser_single_lengths_0( byte[] r )
120
- {
121
- r[0]=0; r[1]=2; r[2]=3; r[3]=4; r[4]=2; r[5]=1; r[6]=1; r[7]=1;
122
- r[8]=1; r[9]=1; r[10]=0; r[11]=1; r[12]=0; r[13]=1; r[14]=1; r[15]=4;
123
- r[16]=1; r[17]=4; r[18]=2; r[19]=1; r[20]=5; r[21]=5; r[22]=0; r[23]=0;
124
- r[24]=2; r[25]=7; r[26]=0; r[27]=0; r[28]=9; r[29]=0; r[30]=0; r[31]=8;
125
- r[32]=0; r[33]=0; r[34]=7; r[35]=7; r[36]=0; r[37]=0; r[38]=3; r[39]=3;
126
- r[40]=3; r[41]=3; r[42]=3; r[43]=3; r[44]=3; r[45]=3; r[46]=3; r[47]=3;
127
- r[48]=3; r[49]=3; r[50]=3; r[51]=3; r[52]=3; r[53]=3; r[54]=3; r[55]=3;
128
- r[56]=1; r[57]=0;
129
- }
130
-
131
- private static byte[] create__http_parser_single_lengths( )
132
- {
133
- byte[] r = new byte[58];
134
- init__http_parser_single_lengths_0( r );
135
- return r;
136
- }
137
-
138
- private static final byte _http_parser_single_lengths[] = create__http_parser_single_lengths();
139
-
140
-
141
- private static void init__http_parser_range_lengths_0( byte[] r )
142
- {
143
- r[0]=0; r[1]=3; r[2]=3; r[3]=3; r[4]=0; r[5]=0; r[6]=0; r[7]=0;
144
- r[8]=0; r[9]=0; r[10]=1; r[11]=1; r[12]=1; r[13]=1; r[14]=0; r[15]=6;
145
- r[16]=0; r[17]=6; r[18]=0; r[19]=0; r[20]=2; r[21]=2; r[22]=3; r[23]=3;
146
- r[24]=4; r[25]=1; r[26]=3; r[27]=3; r[28]=1; r[29]=3; r[30]=3; r[31]=1;
147
- r[32]=3; r[33]=3; r[34]=1; r[35]=1; r[36]=3; r[37]=3; r[38]=3; r[39]=3;
148
- r[40]=3; r[41]=3; r[42]=3; r[43]=3; r[44]=3; r[45]=3; r[46]=3; r[47]=3;
149
- r[48]=3; r[49]=3; r[50]=3; r[51]=3; r[52]=3; r[53]=3; r[54]=3; r[55]=3;
150
- r[56]=0; r[57]=0;
151
- }
152
-
153
- private static byte[] create__http_parser_range_lengths( )
154
- {
155
- byte[] r = new byte[58];
156
- init__http_parser_range_lengths_0( r );
157
- return r;
158
- }
159
-
160
- private static final byte _http_parser_range_lengths[] = create__http_parser_range_lengths();
161
-
162
-
163
- private static void init__http_parser_index_offsets_0( short[] r )
164
- {
165
- r[0]=0; r[1]=0; r[2]=6; r[3]=13; r[4]=21; r[5]=24; r[6]=26; r[7]=28;
166
- r[8]=30; r[9]=32; r[10]=34; r[11]=36; r[12]=39; r[13]=41; r[14]=44; r[15]=46;
167
- r[16]=57; r[17]=59; r[18]=70; r[19]=73; r[20]=75; r[21]=83; r[22]=91; r[23]=95;
168
- r[24]=99; r[25]=106; r[26]=115; r[27]=119; r[28]=123; r[29]=134; r[30]=138; r[31]=142;
169
- r[32]=152; r[33]=156; r[34]=160; r[35]=169; r[36]=178; r[37]=182; r[38]=186; r[39]=193;
170
- r[40]=200; r[41]=207; r[42]=214; r[43]=221; r[44]=228; r[45]=235; r[46]=242; r[47]=249;
171
- r[48]=256; r[49]=263; r[50]=270; r[51]=277; r[52]=284; r[53]=291; r[54]=298; r[55]=305;
172
- r[56]=312; r[57]=314;
173
- }
174
-
175
- private static short[] create__http_parser_index_offsets( )
176
- {
177
- short[] r = new short[58];
178
- init__http_parser_index_offsets_0( r );
179
- return r;
180
- }
181
-
182
- private static final short _http_parser_index_offsets[] = create__http_parser_index_offsets();
183
-
184
-
185
- private static void init__http_parser_indicies_0( byte[] r )
186
- {
187
- r[0]=0; r[1]=0; r[2]=0; r[3]=0; r[4]=0; r[5]=1; r[6]=2; r[7]=3;
188
- r[8]=3; r[9]=3; r[10]=3; r[11]=3; r[12]=1; r[13]=4; r[14]=5; r[15]=6;
189
- r[16]=7; r[17]=5; r[18]=5; r[19]=5; r[20]=1; r[21]=8; r[22]=9; r[23]=1;
190
- r[24]=10; r[25]=1; r[26]=11; r[27]=1; r[28]=12; r[29]=1; r[30]=13; r[31]=1;
191
- r[32]=14; r[33]=1; r[34]=15; r[35]=1; r[36]=16; r[37]=15; r[38]=1; r[39]=17;
192
- r[40]=1; r[41]=18; r[42]=17; r[43]=1; r[44]=19; r[45]=1; r[46]=20; r[47]=21;
193
- r[48]=21; r[49]=21; r[50]=21; r[51]=21; r[52]=21; r[53]=21; r[54]=21; r[55]=21;
194
- r[56]=1; r[57]=22; r[58]=1; r[59]=23; r[60]=24; r[61]=23; r[62]=23; r[63]=23;
195
- r[64]=23; r[65]=23; r[66]=23; r[67]=23; r[68]=23; r[69]=1; r[70]=26; r[71]=27;
196
- r[72]=25; r[73]=26; r[74]=28; r[75]=29; r[76]=31; r[77]=1; r[78]=1; r[79]=1;
197
- r[80]=1; r[81]=1; r[82]=30; r[83]=29; r[84]=33; r[85]=1; r[86]=1; r[87]=1;
198
- r[88]=1; r[89]=1; r[90]=32; r[91]=34; r[92]=34; r[93]=34; r[94]=1; r[95]=32;
199
- r[96]=32; r[97]=32; r[98]=1; r[99]=35; r[100]=36; r[101]=35; r[102]=35; r[103]=35;
200
- r[104]=35; r[105]=1; r[106]=8; r[107]=1; r[108]=9; r[109]=37; r[110]=1; r[111]=1;
201
- r[112]=1; r[113]=1; r[114]=36; r[115]=38; r[116]=38; r[117]=38; r[118]=1; r[119]=36;
202
- r[120]=36; r[121]=36; r[122]=1; r[123]=39; r[124]=1; r[125]=41; r[126]=42; r[127]=43;
203
- r[128]=1; r[129]=1; r[130]=44; r[131]=1; r[132]=1; r[133]=40; r[134]=45; r[135]=45;
204
- r[136]=45; r[137]=1; r[138]=40; r[139]=40; r[140]=40; r[141]=1; r[142]=8; r[143]=1;
205
- r[144]=9; r[145]=47; r[146]=1; r[147]=1; r[148]=48; r[149]=1; r[150]=1; r[151]=46;
206
- r[152]=49; r[153]=49; r[154]=49; r[155]=1; r[156]=46; r[157]=46; r[158]=46; r[159]=1;
207
- r[160]=50; r[161]=1; r[162]=52; r[163]=53; r[164]=1; r[165]=1; r[166]=1; r[167]=1;
208
- r[168]=51; r[169]=54; r[170]=1; r[171]=56; r[172]=57; r[173]=1; r[174]=1; r[175]=1;
209
- r[176]=1; r[177]=55; r[178]=58; r[179]=58; r[180]=58; r[181]=1; r[182]=55; r[183]=55;
210
- r[184]=55; r[185]=1; r[186]=2; r[187]=59; r[188]=59; r[189]=59; r[190]=59; r[191]=59;
211
- r[192]=1; r[193]=2; r[194]=60; r[195]=60; r[196]=60; r[197]=60; r[198]=60; r[199]=1;
212
- r[200]=2; r[201]=61; r[202]=61; r[203]=61; r[204]=61; r[205]=61; r[206]=1; r[207]=2;
213
- r[208]=62; r[209]=62; r[210]=62; r[211]=62; r[212]=62; r[213]=1; r[214]=2; r[215]=63;
214
- r[216]=63; r[217]=63; r[218]=63; r[219]=63; r[220]=1; r[221]=2; r[222]=64; r[223]=64;
215
- r[224]=64; r[225]=64; r[226]=64; r[227]=1; r[228]=2; r[229]=65; r[230]=65; r[231]=65;
216
- r[232]=65; r[233]=65; r[234]=1; r[235]=2; r[236]=66; r[237]=66; r[238]=66; r[239]=66;
217
- r[240]=66; r[241]=1; r[242]=2; r[243]=67; r[244]=67; r[245]=67; r[246]=67; r[247]=67;
218
- r[248]=1; r[249]=2; r[250]=68; r[251]=68; r[252]=68; r[253]=68; r[254]=68; r[255]=1;
219
- r[256]=2; r[257]=69; r[258]=69; r[259]=69; r[260]=69; r[261]=69; r[262]=1; r[263]=2;
220
- r[264]=70; r[265]=70; r[266]=70; r[267]=70; r[268]=70; r[269]=1; r[270]=2; r[271]=71;
221
- r[272]=71; r[273]=71; r[274]=71; r[275]=71; r[276]=1; r[277]=2; r[278]=72; r[279]=72;
222
- r[280]=72; r[281]=72; r[282]=72; r[283]=1; r[284]=2; r[285]=73; r[286]=73; r[287]=73;
223
- r[288]=73; r[289]=73; r[290]=1; r[291]=2; r[292]=74; r[293]=74; r[294]=74; r[295]=74;
224
- r[296]=74; r[297]=1; r[298]=2; r[299]=75; r[300]=75; r[301]=75; r[302]=75; r[303]=75;
225
- r[304]=1; r[305]=2; r[306]=76; r[307]=76; r[308]=76; r[309]=76; r[310]=76; r[311]=1;
226
- r[312]=2; r[313]=1; r[314]=1; r[315]=0;
227
- }
228
-
229
- private static byte[] create__http_parser_indicies( )
230
- {
231
- byte[] r = new byte[316];
232
- init__http_parser_indicies_0( r );
233
- return r;
234
- }
235
-
236
- private static final byte _http_parser_indicies[] = create__http_parser_indicies();
237
-
238
-
239
- private static void init__http_parser_trans_targs_wi_0( byte[] r )
240
- {
241
- r[0]=2; r[1]=0; r[2]=3; r[3]=38; r[4]=4; r[5]=24; r[6]=28; r[7]=25;
242
- r[8]=5; r[9]=20; r[10]=6; r[11]=7; r[12]=8; r[13]=9; r[14]=10; r[15]=11;
243
- r[16]=12; r[17]=13; r[18]=14; r[19]=15; r[20]=16; r[21]=17; r[22]=57; r[23]=17;
244
- r[24]=18; r[25]=19; r[26]=14; r[27]=18; r[28]=19; r[29]=5; r[30]=21; r[31]=22;
245
- r[32]=21; r[33]=22; r[34]=23; r[35]=24; r[36]=25; r[37]=26; r[38]=27; r[39]=5;
246
- r[40]=28; r[41]=20; r[42]=29; r[43]=31; r[44]=34; r[45]=30; r[46]=31; r[47]=32;
247
- r[48]=34; r[49]=33; r[50]=5; r[51]=35; r[52]=20; r[53]=36; r[54]=5; r[55]=35;
248
- r[56]=20; r[57]=36; r[58]=37; r[59]=39; r[60]=40; r[61]=41; r[62]=42; r[63]=43;
249
- r[64]=44; r[65]=45; r[66]=46; r[67]=47; r[68]=48; r[69]=49; r[70]=50; r[71]=51;
250
- r[72]=52; r[73]=53; r[74]=54; r[75]=55; r[76]=56;
251
- }
252
-
253
- private static byte[] create__http_parser_trans_targs_wi( )
254
- {
255
- byte[] r = new byte[77];
256
- init__http_parser_trans_targs_wi_0( r );
257
- return r;
258
- }
259
-
260
- private static final byte _http_parser_trans_targs_wi[] = create__http_parser_trans_targs_wi();
261
-
262
-
263
- private static void init__http_parser_trans_actions_wi_0( byte[] r )
264
- {
265
- r[0]=1; r[1]=0; r[2]=11; r[3]=0; r[4]=1; r[5]=1; r[6]=1; r[7]=1;
266
- r[8]=13; r[9]=13; r[10]=1; r[11]=0; r[12]=0; r[13]=0; r[14]=0; r[15]=0;
267
- r[16]=0; r[17]=0; r[18]=19; r[19]=0; r[20]=0; r[21]=3; r[22]=23; r[23]=0;
268
- r[24]=5; r[25]=7; r[26]=9; r[27]=7; r[28]=0; r[29]=15; r[30]=1; r[31]=1;
269
- r[32]=0; r[33]=0; r[34]=0; r[35]=0; r[36]=0; r[37]=0; r[38]=0; r[39]=28;
270
- r[40]=0; r[41]=28; r[42]=0; r[43]=21; r[44]=21; r[45]=0; r[46]=0; r[47]=0;
271
- r[48]=0; r[49]=0; r[50]=31; r[51]=17; r[52]=31; r[53]=17; r[54]=25; r[55]=0;
272
- r[56]=25; r[57]=0; r[58]=0; r[59]=0; r[60]=0; r[61]=0; r[62]=0; r[63]=0;
273
- r[64]=0; r[65]=0; r[66]=0; r[67]=0; r[68]=0; r[69]=0; r[70]=0; r[71]=0;
274
- r[72]=0; r[73]=0; r[74]=0; r[75]=0; r[76]=0;
275
- }
276
-
277
- private static byte[] create__http_parser_trans_actions_wi( )
278
- {
279
- byte[] r = new byte[77];
280
- init__http_parser_trans_actions_wi_0( r );
281
- return r;
282
- }
283
-
284
- private static final byte _http_parser_trans_actions_wi[] = create__http_parser_trans_actions_wi();
285
-
286
-
287
- static final int http_parser_start = 1;
288
- static final int http_parser_first_final = 57;
289
- static final int http_parser_error = 0;
290
-
291
- static final int http_parser_en_main = 1;
292
-
293
- // line 68 "http11_parser.java.rl"
294
-
295
- public static interface ElementCB {
296
- public void call(Object data, int at, int length);
297
- }
298
-
299
- public static interface FieldCB {
300
- public void call(Object data, int field, int flen, int value, int vlen);
301
- }
302
-
303
- public static class HttpParser {
304
- int cs;
305
- int body_start;
306
- int content_len;
307
- int nread;
308
- int mark;
309
- int field_start;
310
- int field_len;
311
- int query_start;
312
-
313
- Object data;
314
- ByteList buffer;
315
-
316
- public FieldCB http_field;
317
- public ElementCB request_method;
318
- public ElementCB request_uri;
319
- public ElementCB fragment;
320
- public ElementCB request_path;
321
- public ElementCB query_string;
322
- public ElementCB http_version;
323
- public ElementCB header_done;
324
-
325
- public void init() {
326
- cs = 0;
327
-
328
-
329
- // line 330 "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
330
- {
331
- cs = http_parser_start;
332
- }
333
- // line 103 "http11_parser.java.rl"
334
-
335
- body_start = 0;
336
- content_len = 0;
337
- mark = 0;
338
- nread = 0;
339
- field_len = 0;
340
- field_start = 0;
341
- }
342
- }
343
-
344
- public final HttpParser parser = new HttpParser();
345
-
346
- public int execute(ByteList buffer, int off) {
347
- int p, pe;
348
- int cs = parser.cs;
349
- int len = buffer.realSize;
350
- assert off<=len : "offset past end of buffer";
351
-
352
- p = off;
353
- pe = len;
354
- byte[] data = buffer.bytes;
355
- parser.buffer = buffer;
356
-
357
-
358
- // line 359 "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
359
- {
360
- int _klen;
361
- int _trans;
362
- int _acts;
363
- int _nacts;
364
- int _keys;
365
-
366
- if ( p != pe ) {
367
- if ( cs != 0 ) {
368
- _resume: while ( true ) {
369
- _again: do {
370
- _match: do {
371
- _keys = _http_parser_key_offsets[cs];
372
- _trans = _http_parser_index_offsets[cs];
373
- _klen = _http_parser_single_lengths[cs];
374
- if ( _klen > 0 ) {
375
- int _lower = _keys;
376
- int _mid;
377
- int _upper = _keys + _klen - 1;
378
- while (true) {
379
- if ( _upper < _lower )
380
- break;
381
-
382
- _mid = _lower + ((_upper-_lower) >> 1);
383
- if ( data[p] < _http_parser_trans_keys[_mid] )
384
- _upper = _mid - 1;
385
- else if ( data[p] > _http_parser_trans_keys[_mid] )
386
- _lower = _mid + 1;
387
- else {
388
- _trans += (_mid - _keys);
389
- break _match;
390
- }
391
- }
392
- _keys += _klen;
393
- _trans += _klen;
394
- }
395
-
396
- _klen = _http_parser_range_lengths[cs];
397
- if ( _klen > 0 ) {
398
- int _lower = _keys;
399
- int _mid;
400
- int _upper = _keys + (_klen<<1) - 2;
401
- while (true) {
402
- if ( _upper < _lower )
403
- break;
404
-
405
- _mid = _lower + (((_upper-_lower) >> 1) & ~1);
406
- if ( data[p] < _http_parser_trans_keys[_mid] )
407
- _upper = _mid - 2;
408
- else if ( data[p] > _http_parser_trans_keys[_mid+1] )
409
- _lower = _mid + 2;
410
- else {
411
- _trans += ((_mid - _keys)>>1);
412
- break _match;
413
- }
414
- }
415
- _trans += _klen;
416
- }
417
- } while (false);
418
-
419
- _trans = _http_parser_indicies[_trans];
420
- cs = _http_parser_trans_targs_wi[_trans];
421
-
422
- if ( _http_parser_trans_actions_wi[_trans] == 0 )
423
- break _again;
424
-
425
- _acts = _http_parser_trans_actions_wi[_trans];
426
- _nacts = (int) _http_parser_actions[_acts++];
427
- while ( _nacts-- > 0 )
428
- {
429
- switch ( _http_parser_actions[_acts++] )
430
- {
431
- case 0:
432
- // line 13 "http11_parser.java.rl"
433
- {parser.mark = p; }
434
- break;
435
- case 1:
436
- // line 15 "http11_parser.java.rl"
437
- { parser.field_start = p; }
438
- break;
439
- case 2:
440
- // line 16 "http11_parser.java.rl"
441
- {
442
- parser.field_len = p-parser.field_start;
443
- }
444
- break;
445
- case 3:
446
- // line 20 "http11_parser.java.rl"
447
- { parser.mark = p; }
448
- break;
449
- case 4:
450
- // line 21 "http11_parser.java.rl"
451
- {
452
- if(parser.http_field != null) {
453
- parser.http_field.call(parser.data, parser.field_start, parser.field_len, parser.mark, p-parser.mark);
454
- }
455
- }
456
- break;
457
- case 5:
458
- // line 26 "http11_parser.java.rl"
459
- {
460
- if(parser.request_method != null)
461
- parser.request_method.call(parser.data, parser.mark, p-parser.mark);
462
- }
463
- break;
464
- case 6:
465
- // line 30 "http11_parser.java.rl"
466
- {
467
- if(parser.request_uri != null)
468
- parser.request_uri.call(parser.data, parser.mark, p-parser.mark);
469
- }
470
- break;
471
- case 7:
472
- // line 34 "http11_parser.java.rl"
473
- {
474
- if(parser.fragment != null)
475
- parser.fragment.call(parser.data, parser.mark, p-parser.mark);
476
- }
477
- break;
478
- case 8:
479
- // line 39 "http11_parser.java.rl"
480
- {parser.query_start = p; }
481
- break;
482
- case 9:
483
- // line 40 "http11_parser.java.rl"
484
- {
485
- if(parser.query_string != null)
486
- parser.query_string.call(parser.data, parser.query_start, p-parser.query_start);
487
- }
488
- break;
489
- case 10:
490
- // line 45 "http11_parser.java.rl"
491
- {
492
- if(parser.http_version != null)
493
- parser.http_version.call(parser.data, parser.mark, p-parser.mark);
494
- }
495
- break;
496
- case 11:
497
- // line 50 "http11_parser.java.rl"
498
- {
499
- if(parser.request_path != null)
500
- parser.request_path.call(parser.data, parser.mark, p-parser.mark);
501
- }
502
- break;
503
- case 12:
504
- // line 55 "http11_parser.java.rl"
505
- {
506
- parser.body_start = p + 1;
507
- if(parser.header_done != null)
508
- parser.header_done.call(parser.data, p + 1, pe - p - 1);
509
- if (true) break _resume;
510
- }
511
- break;
512
- // line 513 "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
513
- }
514
- }
515
-
516
- } while (false);
517
- if ( cs == 0 )
518
- break _resume;
519
- if ( ++p == pe )
520
- break _resume;
521
- }
522
- } }
523
- }
524
- // line 127 "http11_parser.java.rl"
525
-
526
- parser.cs = cs;
527
- parser.nread += (p - off);
528
-
529
- assert p <= pe : "buffer overflow after parsing execute";
530
- assert parser.nread <= len : "nread longer than length";
531
- assert parser.body_start <= len : "body starts after buffer end";
532
- assert parser.mark < len : "mark is after buffer end";
533
- assert parser.field_len <= len : "field has length longer than whole buffer";
534
- assert parser.field_start < len : "field starts after buffer end";
535
-
536
- if(parser.body_start>0) {
537
- /* final \r\n combo encountered so stop right here */
538
-
539
- // line 540 "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
540
- // line 141 "http11_parser.java.rl"
541
- parser.nread++;
542
- }
543
-
544
- return parser.nread;
545
- }
546
-
547
- public int finish() {
548
- int cs = parser.cs;
549
-
550
-
551
- // line 552 "../../ext/http11_java/org/jruby/mongrel/Http11Parser.java"
552
- // line 151 "http11_parser.java.rl"
553
-
554
- parser.cs = cs;
555
-
556
- if(has_error()) {
557
- return -1;
558
- } else if(is_finished()) {
559
- return 1;
560
- } else {
561
- return 0;
562
- }
563
- }
564
-
565
- public boolean has_error() {
566
- return parser.cs == http_parser_error;
567
- }
568
-
569
- public boolean is_finished() {
570
- return parser.cs == http_parser_first_final;
571
- }
572
- }