annotate src/http/modules/perl/nginx.pm @ 6059:c81d79a7befd

SPDY: always push pending data. This helps to avoid suboptimal behavior when a client waits for a control frame or more data to increase window size, but the frames have been delayed in the socket buffer. The delays can be caused by bad interaction between Nagle's algorithm on nginx side and delayed ACK on the client side or by TCP_CORK/TCP_NOPUSH if SPDY was working without SSL and sendfile() was used. The pushing code is now very similar to ngx_http_set_keepalive().
author Valentin Bartenev <vbart@nginx.com>
date Mon, 23 Mar 2015 21:04:13 +0300
parents f45b83d20cfb
children be5cfa918bfc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1 package nginx;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 use 5.006001;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4 use strict;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 use warnings;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 require Exporter;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 our @ISA = qw(Exporter);
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 our @EXPORT = qw(
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 OK
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 DECLINED
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
14
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15 HTTP_OK
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
16 HTTP_CREATED
3604
3a64bdacf1e4 202 Accepted status code
Igor Sysoev <igor@sysoev.ru>
parents: 3603
diff changeset
17 HTTP_ACCEPTED
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
18 HTTP_NO_CONTENT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
19 HTTP_PARTIAL_CONTENT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
20
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
21 HTTP_MOVED_PERMANENTLY
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
22 HTTP_MOVED_TEMPORARILY
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
23 HTTP_REDIRECT
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4483
diff changeset
24 HTTP_SEE_OTHER
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
25 HTTP_NOT_MODIFIED
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4483
diff changeset
26 HTTP_TEMPORARY_REDIRECT
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
27
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
28 HTTP_BAD_REQUEST
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
29 HTTP_UNAUTHORIZED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
30 HTTP_PAYMENT_REQUIRED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
31 HTTP_FORBIDDEN
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
32 HTTP_NOT_FOUND
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
33 HTTP_NOT_ALLOWED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
34 HTTP_NOT_ACCEPTABLE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
35 HTTP_REQUEST_TIME_OUT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
36 HTTP_CONFLICT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
37 HTTP_GONE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
38 HTTP_LENGTH_REQUIRED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
39 HTTP_REQUEST_ENTITY_TOO_LARGE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
40 HTTP_REQUEST_URI_TOO_LARGE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
41 HTTP_UNSUPPORTED_MEDIA_TYPE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
42 HTTP_RANGE_NOT_SATISFIABLE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
43
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
44 HTTP_INTERNAL_SERVER_ERROR
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45 HTTP_SERVER_ERROR
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
46 HTTP_NOT_IMPLEMENTED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
47 HTTP_BAD_GATEWAY
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
48 HTTP_SERVICE_UNAVAILABLE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
49 HTTP_GATEWAY_TIME_OUT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
50 HTTP_INSUFFICIENT_STORAGE
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
51 );
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
52
5146
f45b83d20cfb Simplified nginx version maintenance.
Ruslan Ermilov <ru@nginx.com>
parents: 5140
diff changeset
53 our $VERSION = '%%VERSION%%';
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
54
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55 require XSLoader;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
56 XSLoader::load('nginx', $VERSION);
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
57
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58 # Preloaded methods go here.
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
59
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
60 use constant OK => 0;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
61 use constant DECLINED => -5;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
62
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
63 use constant HTTP_OK => 200;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
64 use constant HTTP_CREATED => 201;
3604
3a64bdacf1e4 202 Accepted status code
Igor Sysoev <igor@sysoev.ru>
parents: 3603
diff changeset
65 use constant HTTP_ACCEPTED => 202;
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
66 use constant HTTP_NO_CONTENT => 204;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
67 use constant HTTP_PARTIAL_CONTENT => 206;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
68
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
69 use constant HTTP_MOVED_PERMANENTLY => 301;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
70 use constant HTTP_MOVED_TEMPORARILY => 302;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
71 use constant HTTP_REDIRECT => 302;
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4483
diff changeset
72 use constant HTTP_SEE_OTHER => 303;
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
73 use constant HTTP_NOT_MODIFIED => 304;
4491
d11f86a16e3b Added support for the 307 Temporary Redirect.
Ruslan Ermilov <ru@nginx.com>
parents: 4483
diff changeset
74 use constant HTTP_TEMPORARY_REDIRECT => 307;
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
75
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
76 use constant HTTP_BAD_REQUEST => 400;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
77 use constant HTTP_UNAUTHORIZED => 401;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
78 use constant HTTP_PAYMENT_REQUIRED => 402;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
79 use constant HTTP_FORBIDDEN => 403;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
80 use constant HTTP_NOT_FOUND => 404;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
81 use constant HTTP_NOT_ALLOWED => 405;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
82 use constant HTTP_NOT_ACCEPTABLE => 406;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
83 use constant HTTP_REQUEST_TIME_OUT => 408;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
84 use constant HTTP_CONFLICT => 409;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
85 use constant HTTP_GONE => 410;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
86 use constant HTTP_LENGTH_REQUIRED => 411;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
87 use constant HTTP_REQUEST_ENTITY_TOO_LARGE => 413;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
88 use constant HTTP_REQUEST_URI_TOO_LARGE => 414;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
89 use constant HTTP_UNSUPPORTED_MEDIA_TYPE => 415;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
90 use constant HTTP_RANGE_NOT_SATISFIABLE => 416;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
91
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
92 use constant HTTP_INTERNAL_SERVER_ERROR => 500;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
93 use constant HTTP_SERVER_ERROR => 500;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
94 use constant HTTP_NOT_IMPLEMENTED => 501;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
95 use constant HTTP_BAD_GATEWAY => 502;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
96 use constant HTTP_SERVICE_UNAVAILABLE => 503;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
97 use constant HTTP_GATEWAY_TIME_OUT => 504;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
98 use constant HTTP_INSUFFICIENT_STORAGE => 507;
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
100
1178
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
101 sub rflush {
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
102 my $r = shift;
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
103
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
104 $r->flush;
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
105 }
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
106
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
107
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108 1;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109 __END__
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
110
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
111 =head1 NAME
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
112
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
113 nginx - Perl interface to the nginx HTTP server API
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
114
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
115 =head1 SYNOPSIS
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
116
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
117 use nginx;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
118
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
119 =head1 DESCRIPTION
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
120
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
121 This module provides a Perl interface to the nginx HTTP server API.
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
122
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
123
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
124 =head1 SEE ALSO
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125
4977
b216d212920b Brought the link to ngx_http_perl_module documentation up to date.
Ruslan Ermilov <ru@nginx.com>
parents: 4942
diff changeset
126 http://nginx.org/en/docs/http/ngx_http_perl_module.html
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
127
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
128 =head1 AUTHOR
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
129
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
130 Igor Sysoev
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
131
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
132 =head1 COPYRIGHT AND LICENSE
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134 Copyright (C) Igor Sysoev
4411
e7a7e1a1f695 Version bump.
Maxim Konovalov <maxim@nginx.com>
parents: 4391
diff changeset
135 Copyright (C) Nginx, Inc.
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
136
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
137
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
138 =cut