unicorn 4.5.0pre1 → 4.5.0
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/GIT-VERSION-GEN +1 -1
- data/README +4 -4
- data/lib/unicorn/const.rb +7 -5
- data/lib/unicorn/http_response.rb +4 -0
- data/lib/unicorn/http_server.rb +7 -8
- data/unicorn.gemspec +1 -1
- metadata +139 -115
data/GIT-VERSION-GEN
CHANGED
data/README
CHANGED
@@ -60,11 +60,11 @@ both the the request and response in between \Unicorn and slow clients.
|
|
60
60
|
== License
|
61
61
|
|
62
62
|
\Unicorn is copyright 2009 by all contributors (see logs in git).
|
63
|
-
It is based on Mongrel 1.1.5
|
63
|
+
It is based on Mongrel 1.1.5.
|
64
|
+
Mongrel is copyright 2007 Zed A. Shaw and contributors.
|
64
65
|
|
65
|
-
|
66
|
-
|
67
|
-
terms. See the included LICENSE file for details.
|
66
|
+
\Unicorn is tri-licensed under (your choice) of the GPLv3, GPLv2 or
|
67
|
+
Ruby (1.8)-specific terms. See the included LICENSE file for details.
|
68
68
|
|
69
69
|
\Unicorn is 100% Free Software.
|
70
70
|
|
data/lib/unicorn/const.rb
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
# improve things much compared to constants.
|
9
9
|
module Unicorn::Const
|
10
10
|
|
11
|
-
UNICORN_VERSION = "4.5.
|
11
|
+
UNICORN_VERSION = "4.5.0"
|
12
12
|
|
13
13
|
# default TCP listen host address (0.0.0.0, all interfaces)
|
14
14
|
DEFAULT_HOST = "0.0.0.0"
|
@@ -29,10 +29,12 @@ module Unicorn::Const
|
|
29
29
|
|
30
30
|
# :stopdoc:
|
31
31
|
# common errors we'll send back
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
# (N.B. these are not used by unicorn, but we won't drop them until
|
33
|
+
# unicorn 5.x to avoid breaking Rainbows!).
|
34
|
+
ERROR_400_RESPONSE = "HTTP/1.1 400 Bad Request\r\n\r\n"
|
35
|
+
ERROR_414_RESPONSE = "HTTP/1.1 414 Request-URI Too Long\r\n\r\n"
|
36
|
+
ERROR_413_RESPONSE = "HTTP/1.1 413 Request Entity Too Large\r\n\r\n"
|
37
|
+
ERROR_500_RESPONSE = "HTTP/1.1 500 Internal Server Error\r\n\r\n"
|
36
38
|
|
37
39
|
EXPECT_100_RESPONSE = "HTTP/1.1 100 Continue\r\n\r\n"
|
38
40
|
EXPECT_100_RESPONSE_SUFFIXED = "100 Continue\r\n\r\nHTTP/1.1 "
|
@@ -17,6 +17,10 @@ module Unicorn::HttpResponse
|
|
17
17
|
}
|
18
18
|
CRLF = "\r\n"
|
19
19
|
|
20
|
+
def err_response(code, response_start_sent)
|
21
|
+
"#{response_start_sent ? '' : 'HTTP/1.1 '}#{CODES[code]}\r\n\r\n"
|
22
|
+
end
|
23
|
+
|
20
24
|
# writes the rack_response to socket as an HTTP response
|
21
25
|
def http_response_write(socket, status, headers, body,
|
22
26
|
response_start_sent=false)
|
data/lib/unicorn/http_server.rb
CHANGED
@@ -519,22 +519,21 @@ class Unicorn::HttpServer
|
|
519
519
|
# if the socket is already closed or broken. We'll always ensure
|
520
520
|
# the socket is closed at the end of this function
|
521
521
|
def handle_error(client, e)
|
522
|
-
|
522
|
+
code = case e
|
523
523
|
when EOFError,Errno::ECONNRESET,Errno::EPIPE,Errno::EINVAL,Errno::EBADF,
|
524
524
|
Errno::ENOTCONN
|
525
|
-
|
525
|
+
500
|
526
526
|
when Unicorn::RequestURITooLongError
|
527
|
-
|
527
|
+
414
|
528
528
|
when Unicorn::RequestEntityTooLargeError
|
529
|
-
|
529
|
+
413
|
530
530
|
when Unicorn::HttpParserError # try to tell the client they're bad
|
531
|
-
|
531
|
+
400
|
532
532
|
else
|
533
533
|
Unicorn.log_error(@logger, "app error", e)
|
534
|
-
|
534
|
+
500
|
535
535
|
end
|
536
|
-
|
537
|
-
client.kgio_trywrite(msg)
|
536
|
+
client.kgio_trywrite(err_response(code, @request.response_start_sent))
|
538
537
|
client.close
|
539
538
|
rescue
|
540
539
|
end
|
data/unicorn.gemspec
CHANGED
@@ -40,5 +40,5 @@ Gem::Specification.new do |s|
|
|
40
40
|
s.add_development_dependency('isolate', '~> 3.2')
|
41
41
|
s.add_development_dependency('wrongdoc', '~> 1.6.1')
|
42
42
|
|
43
|
-
|
43
|
+
s.licenses = ["GPLv2", "GPLv3", "Ruby 1.8"]
|
44
44
|
end
|
metadata
CHANGED
@@ -1,112 +1,139 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
2
|
-
name:
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
- 4
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
- pre
|
11
|
-
- 1
|
12
|
-
version: 4.5.0pre1
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: !binary |-
|
3
|
+
dW5pY29ybg==
|
4
|
+
version: !ruby/object:Gem::Version
|
5
|
+
version: 4.5.0
|
6
|
+
prerelease:
|
13
7
|
platform: ruby
|
14
|
-
authors:
|
8
|
+
authors:
|
15
9
|
- Unicorn hackers
|
16
10
|
autorequire:
|
17
11
|
bindir: bin
|
18
12
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
13
|
+
date: 2012-12-08 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: !binary |-
|
17
|
+
cmFjaw==
|
18
|
+
requirement: !ruby/object:Gem::Requirement
|
26
19
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
segments:
|
32
|
-
- 0
|
33
|
-
version: "0"
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: '0'
|
34
24
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: kgio
|
38
25
|
prerelease: false
|
39
|
-
|
26
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
27
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
28
|
+
requirements:
|
29
|
+
- - ! '>='
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '0'
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
name: !binary |-
|
34
|
+
a2dpbw==
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - !binary |-
|
39
|
+
fj4=
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: !binary |-
|
42
|
+
Mi42
|
49
43
|
type: :runtime
|
50
|
-
version_requirements: *id002
|
51
|
-
- !ruby/object:Gem::Dependency
|
52
|
-
name: raindrops
|
53
44
|
prerelease: false
|
54
|
-
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - !binary |-
|
49
|
+
fj4=
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: !binary |-
|
52
|
+
Mi42
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: !binary |-
|
55
|
+
cmFpbmRyb3Bz
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
55
57
|
none: false
|
56
|
-
requirements:
|
57
|
-
- -
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
- 7
|
63
|
-
version: "0.7"
|
58
|
+
requirements:
|
59
|
+
- - !binary |-
|
60
|
+
fj4=
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: !binary |-
|
63
|
+
MC43
|
64
64
|
type: :runtime
|
65
|
-
version_requirements: *id003
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
name: isolate
|
68
65
|
prerelease: false
|
69
|
-
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
70
67
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
68
|
+
requirements:
|
69
|
+
- - !binary |-
|
70
|
+
fj4=
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: !binary |-
|
73
|
+
MC43
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: !binary |-
|
76
|
+
aXNvbGF0ZQ==
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - !binary |-
|
81
|
+
fj4=
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: !binary |-
|
84
|
+
My4y
|
79
85
|
type: :development
|
80
|
-
version_requirements: *id004
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: wrongdoc
|
83
86
|
prerelease: false
|
84
|
-
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - !binary |-
|
91
|
+
fj4=
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: !binary |-
|
94
|
+
My4y
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: !binary |-
|
97
|
+
d3Jvbmdkb2M=
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
85
99
|
none: false
|
86
|
-
requirements:
|
87
|
-
- -
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
- 6
|
93
|
-
- 1
|
94
|
-
version: 1.6.1
|
100
|
+
requirements:
|
101
|
+
- - !binary |-
|
102
|
+
fj4=
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: !binary |-
|
105
|
+
MS42LjE=
|
95
106
|
type: :development
|
96
|
-
|
97
|
-
|
98
|
-
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - !binary |-
|
112
|
+
fj4=
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: !binary |-
|
115
|
+
MS42LjE=
|
116
|
+
description: ! '\Unicorn is an HTTP server for Rack applications designed to only
|
117
|
+
serve
|
118
|
+
|
99
119
|
fast clients on low-latency, high-bandwidth connections and take
|
120
|
+
|
100
121
|
advantage of features in Unix/Unix-like kernels. Slow clients should
|
122
|
+
|
101
123
|
only be served by placing a reverse proxy capable of fully buffering
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
124
|
+
|
125
|
+
both the the request and response in between \Unicorn and slow clients.'
|
126
|
+
email: !binary |-
|
127
|
+
bW9uZ3JlbC11bmljb3JuQHJ1Ynlmb3JnZS5vcmc=
|
128
|
+
executables:
|
129
|
+
- !binary |-
|
130
|
+
dW5pY29ybg==
|
131
|
+
- !binary |-
|
132
|
+
dW5pY29ybl9yYWlscw==
|
133
|
+
extensions:
|
134
|
+
- !binary |-
|
135
|
+
ZXh0L3VuaWNvcm5faHR0cC9leHRjb25mLnJi
|
136
|
+
extra_rdoc_files:
|
110
137
|
- FAQ
|
111
138
|
- README
|
112
139
|
- TUNING
|
@@ -134,7 +161,7 @@ extra_rdoc_files:
|
|
134
161
|
- Sandbox
|
135
162
|
- Links
|
136
163
|
- Application_Timeouts
|
137
|
-
files:
|
164
|
+
files:
|
138
165
|
- .CHANGELOG.old
|
139
166
|
- .document
|
140
167
|
- .gitignore
|
@@ -298,44 +325,41 @@ files:
|
|
298
325
|
- test/unit/test_util.rb
|
299
326
|
- unicorn.gemspec
|
300
327
|
homepage: http://unicorn.bogomips.org/
|
301
|
-
licenses:
|
302
|
-
|
328
|
+
licenses:
|
329
|
+
- !binary |-
|
330
|
+
R1BMdjI=
|
331
|
+
- !binary |-
|
332
|
+
R1BMdjM=
|
333
|
+
- !binary |-
|
334
|
+
UnVieSAxLjg=
|
303
335
|
post_install_message:
|
304
|
-
rdoc_options:
|
336
|
+
rdoc_options:
|
305
337
|
- -t
|
306
|
-
-
|
338
|
+
- ! 'Unicorn: Rack HTTP server for fast clients and Unix'
|
307
339
|
- -W
|
308
340
|
- http://bogomips.org/unicorn.git/tree/%s
|
309
|
-
require_paths:
|
341
|
+
require_paths:
|
310
342
|
- lib
|
311
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
343
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
312
344
|
none: false
|
313
|
-
requirements:
|
314
|
-
- -
|
315
|
-
- !ruby/object:Gem::Version
|
316
|
-
|
317
|
-
|
318
|
-
- 0
|
319
|
-
version: "0"
|
320
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
345
|
+
requirements:
|
346
|
+
- - ! '>='
|
347
|
+
- !ruby/object:Gem::Version
|
348
|
+
version: '0'
|
349
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
321
350
|
none: false
|
322
|
-
requirements:
|
323
|
-
- -
|
324
|
-
- !ruby/object:Gem::Version
|
325
|
-
|
326
|
-
segments:
|
327
|
-
- 1
|
328
|
-
- 3
|
329
|
-
- 1
|
330
|
-
version: 1.3.1
|
351
|
+
requirements:
|
352
|
+
- - ! '>='
|
353
|
+
- !ruby/object:Gem::Version
|
354
|
+
version: '0'
|
331
355
|
requirements: []
|
332
|
-
|
333
|
-
|
334
|
-
rubygems_version: 1.8.
|
356
|
+
rubyforge_project: !binary |-
|
357
|
+
bW9uZ3JlbA==
|
358
|
+
rubygems_version: 1.8.23
|
335
359
|
signing_key:
|
336
360
|
specification_version: 3
|
337
361
|
summary: Rack HTTP server for fast clients and Unix
|
338
|
-
test_files:
|
362
|
+
test_files:
|
339
363
|
- test/unit/test_configurator.rb
|
340
364
|
- test/unit/test_http_parser.rb
|
341
365
|
- test/unit/test_http_parser_ng.rb
|