mongrel 1.1.5 → 1.2.0.pre2

Sign up to get free protection for your applications and to get access to all the features.
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
- }