unicorn 5.2.0 → 5.3.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.
- checksums.yaml +4 -4
- data/.manifest +1 -0
- data/.olddoc.yml +0 -1
- data/GIT-VERSION-FILE +1 -1
- data/GIT-VERSION-GEN +1 -1
- data/HACKING +0 -1
- data/ISSUES +12 -6
- data/LATEST +73 -27
- data/Links +1 -1
- data/NEWS +113 -0
- data/TUNING +19 -1
- data/ext/unicorn_http/common_field_optimization.h +2 -2
- data/ext/unicorn_http/ext_help.h +0 -20
- data/ext/unicorn_http/extconf.rb +1 -1
- data/ext/unicorn_http/global_variables.h +2 -2
- data/ext/unicorn_http/httpdate.c +2 -2
- data/ext/unicorn_http/unicorn_http.c +9 -4
- data/ext/unicorn_http/unicorn_http.rl +9 -4
- data/lib/unicorn.rb +1 -1
- data/lib/unicorn/configurator.rb +65 -7
- data/lib/unicorn/http_request.rb +89 -9
- data/lib/unicorn/http_server.rb +63 -19
- data/lib/unicorn/oob_gc.rb +1 -2
- data/lib/unicorn/socket_helper.rb +19 -4
- data/lib/unicorn/stream_input.rb +5 -4
- data/lib/unicorn/tee_input.rb +8 -10
- data/lib/unicorn/version.rb +1 -1
- data/lib/unicorn/worker.rb +17 -6
- data/t/t0011-active-unix-socket.sh +1 -1
- data/t/t0012-reload-empty-config.sh +2 -1
- data/t/test-lib.sh +2 -2
- data/test/exec/test_exec.rb +6 -5
- data/test/unit/test_ccc.rb +90 -0
- data/test/unit/test_http_parser.rb +0 -18
- data/test/unit/test_socket_helper.rb +8 -4
- data/test/unit/test_util.rb +2 -2
- data/unicorn.gemspec +10 -12
- metadata +4 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b81793b7bf9db70d6d014404f3d109cbe8528951
|
4
|
+
data.tar.gz: 80747270f849455aa5f6df45bd720452b366a681
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42b0045616f1243a945a24bf2c4f46f587655ecd24669f5c59b98aa25bef2e6b4a1ff47d580d41a9ad76f2490b09d5433229135cec52c7b7e2293c3086399949
|
7
|
+
data.tar.gz: 9bb45e6d41a3d1a8888b64f127269e67d3101f1ba0d637723820f5a881cc2754e3defcf83e9c98d41f4f25a3a95837be6cbef0538128717aac189ecac6fc9c5a
|
data/.manifest
CHANGED
data/.olddoc.yml
CHANGED
@@ -12,7 +12,6 @@ noindex:
|
|
12
12
|
- TODO
|
13
13
|
- unicorn_rails_1
|
14
14
|
public_email: unicorn-public@bogomips.org
|
15
|
-
private_email: unicorn@bogomips.org
|
16
15
|
nntp_url:
|
17
16
|
- nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
18
17
|
- nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
data/GIT-VERSION-FILE
CHANGED
@@ -1 +1 @@
|
|
1
|
-
GIT_VERSION = 5.
|
1
|
+
GIT_VERSION = 5.3.0
|
data/GIT-VERSION-GEN
CHANGED
data/HACKING
CHANGED
@@ -104,7 +104,6 @@ don't email the git mailing list or maintainer with Unicorn patches :)
|
|
104
104
|
|
105
105
|
In order to build the gem, you must install the following components:
|
106
106
|
|
107
|
-
* olddoc (RubyGem)
|
108
107
|
* pandoc
|
109
108
|
|
110
109
|
You can build the Unicorn gem with the following command:
|
data/ISSUES
CHANGED
@@ -9,14 +9,16 @@ submit patches and/or obtain support after you have searched the
|
|
9
9
|
* Cc: all participants in a thread or commit, as subscription is optional
|
10
10
|
* Do not {top post}[http://catb.org/jargon/html/T/top-post.html] in replies
|
11
11
|
* Quote as little as possible of the message you're replying to
|
12
|
-
* Do not send HTML mail or images,
|
13
|
-
|
12
|
+
* Do not send HTML mail or images,
|
13
|
+
they hurt reader privacy and will be flagged as spam
|
14
|
+
* Anonymous and pseudonymous messages will ALWAYS be welcome
|
14
15
|
* The email submission port (587) is enabled on the bogomips.org MX:
|
15
16
|
https://bogomips.org/unicorn-public/20141004232241.GA23908@dcvr.yhbt.net/t/
|
16
17
|
|
17
18
|
If your issue is of a sensitive nature or you're just shy in public,
|
18
|
-
|
19
|
-
|
19
|
+
use anonymity tools such as Tor or Mixmaster; and rely on the public
|
20
|
+
mail archives for responses. Be sure to scrub sensitive log messages
|
21
|
+
and such.
|
20
22
|
|
21
23
|
If you don't get a response within a few days, we may have forgotten
|
22
24
|
about it so feel free to ask again.
|
@@ -64,14 +66,14 @@ document distributed with git) on guidelines for patch submission.
|
|
64
66
|
== Contact Info
|
65
67
|
|
66
68
|
* public: mailto:unicorn-public@bogomips.org
|
67
|
-
* private: mailto:unicorn@bogomips.org
|
68
69
|
* nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
69
70
|
* nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
70
71
|
* https://bogomips.org/unicorn-public/
|
72
|
+
* http://ou63pmih66umazou.onion/unicorn-public/
|
71
73
|
|
72
74
|
Mailing list subscription is optional, so Cc: all participants.
|
73
75
|
|
74
|
-
You can follow along via NNTP:
|
76
|
+
You can follow along via NNTP (read-only):
|
75
77
|
|
76
78
|
nntp://news.public-inbox.org/inbox.comp.lang.ruby.unicorn
|
77
79
|
nntp://news.gmane.org/gmane.comp.lang.ruby.unicorn.general
|
@@ -79,6 +81,7 @@ You can follow along via NNTP:
|
|
79
81
|
Or Atom feeds:
|
80
82
|
|
81
83
|
https://bogomips.org/unicorn-public/new.atom
|
84
|
+
http://ou63pmih66umazou.onion/unicorn-public/new.atom
|
82
85
|
|
83
86
|
The HTML archives at https://bogomips.org/unicorn-public/
|
84
87
|
also has links to per-thread Atom feeds and downloadable
|
@@ -88,3 +91,6 @@ You may optionally subscribe via plain-text email:
|
|
88
91
|
|
89
92
|
mailto:unicorn-public+subscribe@bogomips.org
|
90
93
|
(and confirming the auto-reply)
|
94
|
+
|
95
|
+
Just keep in mind we suck at delivering email, so using NNTP,
|
96
|
+
or Atom feeds might be a better bet...
|
data/LATEST
CHANGED
@@ -1,37 +1,83 @@
|
|
1
|
-
=== unicorn 5.
|
1
|
+
=== unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC
|
2
2
|
|
3
|
-
|
4
|
-
last minute performance improvement added today. See below.
|
3
|
+
A largish release with several new features.
|
5
4
|
|
6
|
-
|
7
|
-
|
8
|
-
specify the version of rack they prefer without unicorn pulling
|
9
|
-
in a newer, potentially incompatible version.
|
5
|
+
Simon Eskildsen contributed heavily using TCP_INFO under Linux
|
6
|
+
to implement the (now 5 year old) check_client_connection feature:
|
10
7
|
|
11
|
-
|
12
|
-
|
8
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
|
9
|
+
https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t
|
13
10
|
|
14
|
-
|
15
|
-
|
16
|
-
'objspace' extension.
|
11
|
+
This also led to FreeBSD and OpenBSD portability improvements in
|
12
|
+
one of our dependencies, raindrops:
|
17
13
|
|
18
|
-
|
19
|
-
and Aaron Patterson for helping with the matter.
|
14
|
+
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
20
15
|
|
21
|
-
|
22
|
-
|
16
|
+
Jeremy Evans contributed several new features. First he
|
17
|
+
implemented after_worker_exit to aid debugging:
|
23
18
|
|
24
|
-
|
19
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
20
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t
|
25
21
|
|
26
|
-
|
22
|
+
And then security-related features to isolate workers. Workers
|
23
|
+
may now chroot to drop access to the master filesystem, and the
|
24
|
+
new after_worker_ready configuration hook now exists to aid with
|
25
|
+
chroot support in workers:
|
27
26
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
27
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
28
|
+
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
29
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t
|
30
|
+
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t
|
31
|
+
|
32
|
+
Additionally, workers may run in a completely different VM space
|
33
|
+
(nullifying preload_app and any CoW savings) with the new
|
34
|
+
worker_exec option:
|
35
|
+
|
36
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
37
|
+
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t
|
38
|
+
|
39
|
+
There are also several improvements to FreeBSD and OpenBSD
|
40
|
+
support with the addition of these features.
|
41
|
+
|
42
|
+
34 changes since 5.2.0 (2016-10-31):
|
43
|
+
|
44
|
+
Eric Wong (27):
|
45
|
+
drop rb_str_set_len compatibility replacement
|
46
|
+
TUNING: document THP caveat for Linux users
|
47
|
+
tee_input: simplify condition for IO#write
|
48
|
+
remove response_start_sent
|
49
|
+
http_request: freeze constant strings passed IO#write
|
50
|
+
Revert "remove response_start_sent"
|
51
|
+
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
52
|
+
t0011-active-unix-socket.sh: fix race condition in test
|
53
|
+
new test for check_client_connection
|
54
|
+
revert signature change to HttpServer#process_client
|
55
|
+
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
56
|
+
unicorn_http: reduce rb_global_variable calls
|
57
|
+
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
58
|
+
http_request: reduce insn size for check_client_connection
|
59
|
+
freebsd: avoid EINVAL when setting accept filter
|
60
|
+
test-lib: expr(1) portability fix
|
61
|
+
tests: keep disabled tests defined
|
62
|
+
test_exec: SO_KEEPALIVE value only needs to be true
|
63
|
+
doc: fix links to raindrops project
|
64
|
+
http_request: support proposed Raindrops::TCP states on non-Linux
|
65
|
+
ISSUES: expand on mail archive info + subscription disclaimer
|
66
|
+
test_ccc: use a pipe to synchronize test
|
67
|
+
doc: remove private email support address
|
68
|
+
input: update documentation and hide internals.
|
69
|
+
http_server: initialize @pid ivar
|
70
|
+
gemspec: remove olddoc from build dependency
|
71
|
+
doc: add version annotations for new features
|
72
|
+
|
73
|
+
Jeremy Evans (6):
|
74
|
+
Add after_worker_exit configuration option
|
75
|
+
Fix code example in after_worker_exit documentation
|
76
|
+
Add support for chroot to Worker#user
|
77
|
+
Add after_worker_ready configuration option
|
78
|
+
Add worker_exec configuration option
|
79
|
+
Don't pass a block for fork when forking workers
|
80
|
+
|
81
|
+
Simon Eskildsen (1):
|
82
|
+
check_client_connection: use tcp state on linux
|
37
83
|
|
data/Links
CHANGED
@@ -23,7 +23,7 @@ or services behind them.
|
|
23
23
|
* {golden_brindle}[https://github.com/simonoff/golden_brindle] - tool to
|
24
24
|
manage multiple unicorn instances/applications on a single server
|
25
25
|
|
26
|
-
* {raindrops}[
|
26
|
+
* {raindrops}[https://bogomips.org/raindrops/] - real-time stats for
|
27
27
|
preforking Rack servers
|
28
28
|
|
29
29
|
* {UnXF}[https://bogomips.org/unxf/] Un-X-Forward* the Rack environment,
|
data/NEWS
CHANGED
@@ -1,3 +1,116 @@
|
|
1
|
+
=== unicorn 5.3.0.pre1 / 2017-03-24 00:25 UTC
|
2
|
+
|
3
|
+
A largish release with several new features.
|
4
|
+
|
5
|
+
Simon Eskildsen contributed heavily using TCP_INFO under Linux
|
6
|
+
to implement the (now 5 year old) check_client_connection feature:
|
7
|
+
|
8
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-check_client_connection
|
9
|
+
https://bogomips.org/unicorn-public/?q=s:check_client_connection&d:..20170324&x=t
|
10
|
+
|
11
|
+
This also led to FreeBSD and OpenBSD portability improvements in
|
12
|
+
one of our dependencies, raindrops:
|
13
|
+
|
14
|
+
https://bogomips.org/raindrops-public/20170323024829.GA5190@dcvr/T/#u
|
15
|
+
|
16
|
+
Jeremy Evans contributed several new features. First he
|
17
|
+
implemented after_worker_exit to aid debugging:
|
18
|
+
|
19
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_exit
|
20
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_exit&d:..20170324&x=t#t
|
21
|
+
|
22
|
+
And then security-related features to isolate workers. Workers
|
23
|
+
may now chroot to drop access to the master filesystem, and the
|
24
|
+
new after_worker_ready configuration hook now exists to aid with
|
25
|
+
chroot support in workers:
|
26
|
+
|
27
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-after_worker_ready
|
28
|
+
https://bogomips.org/unicorn/Unicorn/Worker.html#method-i-user
|
29
|
+
https://bogomips.org/unicorn-public/?q=s:after_worker_ready&d:..20170324&x=t#t
|
30
|
+
https://bogomips.org/unicorn-public/?q=s:chroot&d:..20170324&x=t#t
|
31
|
+
|
32
|
+
Additionally, workers may run in a completely different VM space
|
33
|
+
(nullifying preload_app and any CoW savings) with the new
|
34
|
+
worker_exec option:
|
35
|
+
|
36
|
+
https://bogomips.org/unicorn/Unicorn/Configurator.html#method-i-worker_exec
|
37
|
+
https://bogomips.org/unicorn-public/?q=s:worker_exec&d:..20170324&x=t#t
|
38
|
+
|
39
|
+
There are also several improvements to FreeBSD and OpenBSD
|
40
|
+
support with the addition of these features.
|
41
|
+
|
42
|
+
34 changes since 5.2.0 (2016-10-31):
|
43
|
+
|
44
|
+
Eric Wong (27):
|
45
|
+
drop rb_str_set_len compatibility replacement
|
46
|
+
TUNING: document THP caveat for Linux users
|
47
|
+
tee_input: simplify condition for IO#write
|
48
|
+
remove response_start_sent
|
49
|
+
http_request: freeze constant strings passed IO#write
|
50
|
+
Revert "remove response_start_sent"
|
51
|
+
t/t0012-reload-empty-config.sh: access ivars directly if needed
|
52
|
+
t0011-active-unix-socket.sh: fix race condition in test
|
53
|
+
new test for check_client_connection
|
54
|
+
revert signature change to HttpServer#process_client
|
55
|
+
support "struct tcp_info" on non-Linux and Ruby 2.2+
|
56
|
+
unicorn_http: reduce rb_global_variable calls
|
57
|
+
oob_gc: rely on opt_aref_with optimization on Ruby 2.2+
|
58
|
+
http_request: reduce insn size for check_client_connection
|
59
|
+
freebsd: avoid EINVAL when setting accept filter
|
60
|
+
test-lib: expr(1) portability fix
|
61
|
+
tests: keep disabled tests defined
|
62
|
+
test_exec: SO_KEEPALIVE value only needs to be true
|
63
|
+
doc: fix links to raindrops project
|
64
|
+
http_request: support proposed Raindrops::TCP states on non-Linux
|
65
|
+
ISSUES: expand on mail archive info + subscription disclaimer
|
66
|
+
test_ccc: use a pipe to synchronize test
|
67
|
+
doc: remove private email support address
|
68
|
+
input: update documentation and hide internals.
|
69
|
+
http_server: initialize @pid ivar
|
70
|
+
gemspec: remove olddoc from build dependency
|
71
|
+
doc: add version annotations for new features
|
72
|
+
|
73
|
+
Jeremy Evans (6):
|
74
|
+
Add after_worker_exit configuration option
|
75
|
+
Fix code example in after_worker_exit documentation
|
76
|
+
Add support for chroot to Worker#user
|
77
|
+
Add after_worker_ready configuration option
|
78
|
+
Add worker_exec configuration option
|
79
|
+
Don't pass a block for fork when forking workers
|
80
|
+
|
81
|
+
Simon Eskildsen (1):
|
82
|
+
check_client_connection: use tcp state on linux
|
83
|
+
|
84
|
+
=== unicorn 5.2.0 / 2016-10-31 20:00 UTC
|
85
|
+
|
86
|
+
Most notably, this release allows us to support requests with
|
87
|
+
lines delimited by LF-only, as opposed to the standard CRLF
|
88
|
+
pair and allowed by RFC 2616 sec 19.3.
|
89
|
+
|
90
|
+
Thanks to Mishael A Sibiryakov for the explanation and change:
|
91
|
+
|
92
|
+
https://bogomips.org/unicorn-public/1476954332.1736.156.camel@junki.org/
|
93
|
+
|
94
|
+
Thanks to Let's Encrypt, the website also moves to HTTPS
|
95
|
+
<https://bogomips.org/unicorn/> to improve reader privacy. The
|
96
|
+
"unicorn.bogomips.org" subdomain will be retired soon to reduce
|
97
|
+
subjectAltName bloat and speed up certificate renewals.
|
98
|
+
|
99
|
+
There's also the usual round of documentation and example
|
100
|
+
updates, too.
|
101
|
+
|
102
|
+
Eric Wong (7):
|
103
|
+
examples/init.sh: update to reduce upgrade raciness
|
104
|
+
doc: systemd should only kill master in example
|
105
|
+
examples/logrotate.conf: update example for systemd
|
106
|
+
doc: update gmane URLs to point to our own archives
|
107
|
+
relocate website to https://bogomips.org/unicorn/
|
108
|
+
TODO: remove Rack 2.x item
|
109
|
+
build: "install-gem" target avoids network
|
110
|
+
|
111
|
+
Mishael A Sibiryakov (1):
|
112
|
+
Add some tolerance (RFC2616 sec. 19.3)
|
113
|
+
|
1
114
|
=== unicorn 5.1.0 - rack is optional, again / 2016-04-01 00:35 UTC
|
2
115
|
|
3
116
|
Note: no code changes since 5.1.0.pre1 from January.^WNo, wait,
|
data/TUNING
CHANGED
@@ -72,10 +72,28 @@ See Unicorn::Configurator for details on the config file format.
|
|
72
72
|
have them unbuffered (File#sync = true) or they are
|
73
73
|
record(line)-buffered in userspace before any writes.
|
74
74
|
|
75
|
-
== Kernel Parameters (Linux sysctl)
|
75
|
+
== Kernel Parameters (Linux sysctl and sysfs)
|
76
76
|
|
77
77
|
WARNING: Do not change system parameters unless you know what you're doing!
|
78
78
|
|
79
|
+
* Transparent hugepages (THP) improves performance in many cases,
|
80
|
+
but can also increase memory use when relying on a
|
81
|
+
copy-on-write(CoW)-friendly GC (Ruby 2.0+) with "preload_app true".
|
82
|
+
CoW operates at the page level, so writing to a huge page would
|
83
|
+
trigger a 2 MB copy (x86-64), as opposed to a 4 KB copy on a
|
84
|
+
regular (non-huge) page.
|
85
|
+
|
86
|
+
Consider only allowing THP to be used when it is requested via the
|
87
|
+
madvise(2) syscall:
|
88
|
+
|
89
|
+
echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
|
90
|
+
|
91
|
+
Or disabling it system-wide, via "never".
|
92
|
+
|
93
|
+
n.b. "page" in this context only applies to the OS kernel,
|
94
|
+
Ruby GC implementations also use this term for the same concept
|
95
|
+
in a way that is agnostic to the OS.
|
96
|
+
|
79
97
|
* net.core.rmem_max and net.core.wmem_max can increase the allowed
|
80
98
|
size of :rcvbuf and :sndbuf respectively. This is mostly only useful
|
81
99
|
for UNIX domain sockets which do not have auto-tuning buffer sizes.
|
@@ -60,7 +60,7 @@ static struct common_field common_http_fields[] = {
|
|
60
60
|
#define HTTP_PREFIX_LEN (sizeof(HTTP_PREFIX) - 1)
|
61
61
|
|
62
62
|
/* this function is not performance-critical, called only at load time */
|
63
|
-
static void init_common_fields(
|
63
|
+
static void init_common_fields(VALUE mark_ary)
|
64
64
|
{
|
65
65
|
int i;
|
66
66
|
struct common_field *cf = common_http_fields;
|
@@ -77,7 +77,7 @@ static void init_common_fields(void)
|
|
77
77
|
cf->value = rb_str_new(tmp, HTTP_PREFIX_LEN + cf->len);
|
78
78
|
}
|
79
79
|
cf->value = rb_obj_freeze(cf->value);
|
80
|
-
|
80
|
+
rb_ary_push(mark_ary, cf->value);
|
81
81
|
}
|
82
82
|
}
|
83
83
|
|
data/ext/unicorn_http/ext_help.h
CHANGED
@@ -1,26 +1,6 @@
|
|
1
1
|
#ifndef ext_help_h
|
2
2
|
#define ext_help_h
|
3
3
|
|
4
|
-
#ifndef RSTRING_PTR
|
5
|
-
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
6
|
-
#endif /* !defined(RSTRING_PTR) */
|
7
|
-
#ifndef RSTRING_LEN
|
8
|
-
#define RSTRING_LEN(s) (RSTRING(s)->len)
|
9
|
-
#endif /* !defined(RSTRING_LEN) */
|
10
|
-
|
11
|
-
#ifndef HAVE_RB_STR_SET_LEN
|
12
|
-
# ifdef RUBINIUS
|
13
|
-
# error we should never get here with current Rubinius (1.x)
|
14
|
-
# endif
|
15
|
-
/* this is taken from Ruby 1.8.7, 1.8.6 may not have it */
|
16
|
-
static void rb_18_str_set_len(VALUE str, long len)
|
17
|
-
{
|
18
|
-
RSTRING(str)->len = len;
|
19
|
-
RSTRING(str)->ptr[len] = '\0';
|
20
|
-
}
|
21
|
-
# define rb_str_set_len(str,len) rb_18_str_set_len(str,len)
|
22
|
-
#endif /* !defined(HAVE_RB_STR_SET_LEN) */
|
23
|
-
|
24
4
|
/* not all Ruby implementations support frozen objects (Rubinius does not) */
|
25
5
|
#if defined(OBJ_FROZEN)
|
26
6
|
# define assert_frozen(f) assert(OBJ_FROZEN(f) && "unfrozen object")
|
data/ext/unicorn_http/extconf.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
have_macro("SIZEOF_OFF_T", "ruby.h") or check_sizeof("off_t", "sys/types.h")
|
5
5
|
have_macro("SIZEOF_SIZE_T", "ruby.h") or check_sizeof("size_t", "sys/types.h")
|
6
6
|
have_macro("SIZEOF_LONG", "ruby.h") or check_sizeof("long", "sys/types.h")
|
7
|
-
have_func("rb_str_set_len", "ruby.h")
|
7
|
+
have_func("rb_str_set_len", "ruby.h") or abort 'Ruby 1.9.3+ required'
|
8
8
|
have_func("rb_hash_clear", "ruby.h") # Ruby 2.0+
|
9
9
|
have_func("gmtime_r", "time.h")
|
10
10
|
|
@@ -56,7 +56,7 @@ NORETURN(static void parser_raise(VALUE klass, const char *));
|
|
56
56
|
/** Defines global strings in the init method. */
|
57
57
|
#define DEF_GLOBAL(N, val) do { \
|
58
58
|
g_##N = rb_obj_freeze(rb_str_new(val, sizeof(val) - 1)); \
|
59
|
-
|
59
|
+
rb_ary_push(mark_ary, g_##N); \
|
60
60
|
} while (0)
|
61
61
|
|
62
62
|
/* Defines the maximum allowed lengths for various input elements.*/
|
@@ -67,7 +67,7 @@ DEF_MAX_LENGTH(FRAGMENT, 1024); /* Don't know if this length is specified somewh
|
|
67
67
|
DEF_MAX_LENGTH(REQUEST_PATH, 4096); /* common PATH_MAX on modern systems */
|
68
68
|
DEF_MAX_LENGTH(QUERY_STRING, (1024 * 10));
|
69
69
|
|
70
|
-
static void init_globals(
|
70
|
+
static void init_globals(VALUE mark_ary)
|
71
71
|
{
|
72
72
|
DEF_GLOBAL(rack_url_scheme, "rack.url_scheme");
|
73
73
|
DEF_GLOBAL(request_method, "REQUEST_METHOD");
|