annotate src/http/modules/perl/nginx.pm @ 3440:88741ec7731a stable-0.7

merge r3294, r3305: Fix a bug introduced in r2032: After a child process has read a terminate message from a channel, the process tries to read the channel again. The kernel (at least FreeBSD) may preempt the process and sends a SIGIO signal to a master process. The master process sends a new terminate message, the kernel switches again to the the child process, and the child process reads the messages instead of an EAGAIN error. And this may repeat over and over. Being that the child process can not exit the cycle and test the termination flag set by the message handler. The fix disallow the master process to send a new terminate message on SIGIO signal reception. It may send the message only on SIGALARM signal.
author Igor Sysoev <igor@sysoev.ru>
date Mon, 01 Feb 2010 15:49:36 +0000
parents e6f6d048374e
children b7c4d96cd61c
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
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
17 HTTP_NO_CONTENT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
18 HTTP_PARTIAL_CONTENT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
19
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
20 HTTP_MOVED_PERMANENTLY
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
21 HTTP_MOVED_TEMPORARILY
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22 HTTP_REDIRECT
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
23 HTTP_NOT_MODIFIED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
24
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
25 HTTP_BAD_REQUEST
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
26 HTTP_UNAUTHORIZED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
27 HTTP_PAYMENT_REQUIRED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
28 HTTP_FORBIDDEN
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 HTTP_NOT_FOUND
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
30 HTTP_NOT_ALLOWED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
31 HTTP_NOT_ACCEPTABLE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
32 HTTP_REQUEST_TIME_OUT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
33 HTTP_CONFLICT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
34 HTTP_GONE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
35 HTTP_LENGTH_REQUIRED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
36 HTTP_REQUEST_ENTITY_TOO_LARGE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
37 HTTP_REQUEST_URI_TOO_LARGE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
38 HTTP_UNSUPPORTED_MEDIA_TYPE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
39 HTTP_RANGE_NOT_SATISFIABLE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
40
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
41 HTTP_INTERNAL_SERVER_ERROR
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
42 HTTP_SERVER_ERROR
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
43 HTTP_NOT_IMPLEMENTED
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
44 HTTP_BAD_GATEWAY
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
45 HTTP_SERVICE_UNAVAILABLE
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
46 HTTP_GATEWAY_TIME_OUT
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
47 HTTP_INSUFFICIENT_STORAGE
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
48 );
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49
3423
e6f6d048374e bump version
Igor Sysoev <igor@sysoev.ru>
parents: 3334
diff changeset
50 our $VERSION = '0.7.65';
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 require XSLoader;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53 XSLoader::load('nginx', $VERSION);
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 # Preloaded methods go here.
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
56
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
57 use constant OK => 0;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
58 use constant DECLINED => -5;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
59
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
60 use constant HTTP_OK => 200;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
61 use constant HTTP_CREATED => 201;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
62 use constant HTTP_NO_CONTENT => 204;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
63 use constant HTTP_PARTIAL_CONTENT => 206;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
64
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
65 use constant HTTP_MOVED_PERMANENTLY => 301;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
66 use constant HTTP_MOVED_TEMPORARILY => 302;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
67 use constant HTTP_REDIRECT => 302;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
68 use constant HTTP_NOT_MODIFIED => 304;
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
69
914
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
70 use constant HTTP_BAD_REQUEST => 400;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
71 use constant HTTP_UNAUTHORIZED => 401;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
72 use constant HTTP_PAYMENT_REQUIRED => 402;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
73 use constant HTTP_FORBIDDEN => 403;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
74 use constant HTTP_NOT_FOUND => 404;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
75 use constant HTTP_NOT_ALLOWED => 405;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
76 use constant HTTP_NOT_ACCEPTABLE => 406;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
77 use constant HTTP_REQUEST_TIME_OUT => 408;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
78 use constant HTTP_CONFLICT => 409;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
79 use constant HTTP_GONE => 410;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
80 use constant HTTP_LENGTH_REQUIRED => 411;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
81 use constant HTTP_REQUEST_ENTITY_TOO_LARGE => 413;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
82 use constant HTTP_REQUEST_URI_TOO_LARGE => 414;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
83 use constant HTTP_UNSUPPORTED_MEDIA_TYPE => 415;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
84 use constant HTTP_RANGE_NOT_SATISFIABLE => 416;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
85
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
86 use constant HTTP_INTERNAL_SERVER_ERROR => 500;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
87 use constant HTTP_SERVER_ERROR => 500;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
88 use constant HTTP_NOT_IMPLEMENTED => 501;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
89 use constant HTTP_BAD_GATEWAY => 502;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
90 use constant HTTP_SERVICE_UNAVAILABLE => 503;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
91 use constant HTTP_GATEWAY_TIME_OUT => 504;
b10286697f8d add HTTP response codes
Igor Sysoev <igor@sysoev.ru>
parents: 904
diff changeset
92 use constant HTTP_INSUFFICIENT_STORAGE => 507;
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
94
1178
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
95 sub rflush {
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
96 my $r = shift;
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
97
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
98 $r->flush;
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
99 }
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
100
a77f6980de50 rename $r->rflush to $r->flush
Igor Sysoev <igor@sysoev.ru>
parents: 1177
diff changeset
101
599
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
102 1;
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
103 __END__
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
104
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
105 =head1 NAME
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
106
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
107 nginx - Perl interface to the nginx HTTP server API
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109 =head1 SYNOPSIS
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 use nginx;
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 =head1 DESCRIPTION
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 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
116
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
117
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
118 =head1 SEE ALSO
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
119
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
120 http://sysoev.ru/nginx/docs/http/ngx_http_perl_module.html
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
121
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
122 =head1 AUTHOR
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 Igor Sysoev
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
126 =head1 COPYRIGHT AND LICENSE
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 Copyright (C) Igor Sysoev
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
869b6444d234 nginx-0.3.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
131 =cut