changeset 450:551102312e19 release-0.1.0

nginx-0.1.0-RELEASE import *) The first public version.
author Igor Sysoev <igor@sysoev.ru>
date Mon, 04 Oct 2004 15:04:06 +0000
parents 3b1e8c9df9ad
children f40362e47689
files conf/koi-win conf/mime.types conf/nginx.conf docs/dtd/change_log_conf.dtd docs/dtd/changes.dtd docs/html/index.html docs/text/LICENSE docs/text/README docs/xml/change_log_conf.xml docs/xml/nginx/changes.xml docs/xsls/changes.xsls docs/xsls/dump.xsls docs/xslt/changes.xslt src/os/unix/ngx_linux_init.c
diffstat 14 files changed, 1555 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/conf/koi-win
@@ -0,0 +1,85 @@
+
+charset_map  koi8-r  windows-1251 {
+
+    95  95 ; # bullet
+
+    9A  A0 ; # &nbsp;
+
+    9C  B0 ; # &deg;
+
+    9E  B7 ; # &middot;
+
+    A3  B8 ; # small yo
+
+    B3  A8 ; # capital YO
+
+    BF  A9 ; # (C)
+
+    C0  FE ; # small yu
+    C1  E0 ; # small a
+    C2  E1 ; # small b
+    C3  F6 ; # small ts
+    C4  E4 ; # small d
+    C5  E5 ; # small ye
+    C6  F4 ; # small f
+    C7  E3 ; # small g
+    C8  F5 ; # small kh
+    C9  E8 ; # small i
+    CA  E9 ; # small j
+    CB  EA ; # small k
+    CC  EB ; # small l
+    CD  EC ; # small m
+    CE  ED ; # small n
+    CF  EE ; # small o
+
+    D0  EF ; # small p
+    D1  FF ; # small ya
+    D2  F0 ; # small r
+    D3  F1 ; # small s
+    D4  F2 ; # small t
+    D5  F3 ; # small u
+    D6  E6 ; # small zh
+    D7  E2 ; # small v
+    D8  FC ; # small soft sign
+    D9  FB ; # small y
+    DA  E7 ; # small z
+    DB  F8 ; # small sh
+    DC  FD ; # small e
+    DD  F9 ; # small shch
+    DE  F7 ; # small ch
+    DF  FA ; # small hard sign
+
+    E0  DE ; # capital YU
+    E1  C0 ; # capital A
+    E2  C1 ; # capital B
+    E3  D6 ; # capital TS
+    E4  C4 ; # capital D
+    E5  C5 ; # capital YE
+    E6  D4 ; # capital F
+    E7  C3 ; # capital G
+    E8  D5 ; # capital KH
+    E9  C8 ; # capital I
+    EA  C9 ; # capital J
+    EB  CA ; # capital K
+    EC  CB ; # capital L
+    ED  CC ; # capital M
+    EE  CD ; # capital N
+    EF  CE ; # capital O
+
+    F0  CF ; # capital P
+    F1  DF ; # capital YA
+    F2  D0 ; # capital R
+    F3  D1 ; # capital S
+    F4  D2 ; # capital T
+    F5  D3 ; # capital U
+    F6  C6 ; # capital ZH
+    F7  C2 ; # capital V
+    F8  DC ; # capital soft sign
+    F9  DB ; # capital Y
+    FA  C7 ; # capital Z
+    FB  D8 ; # capital SH
+    FC  DD ; # capital E
+    FD  D9 ; # capital SHCH
+    FE  D7 ; # capital CH
+    FF  DA ; # capital hard sign
+}
new file mode 100644
--- /dev/null
+++ b/conf/mime.types
@@ -0,0 +1,24 @@
+
+types {
+    text/html                      html htm shtml;
+    text/xml                       xml rss;
+    text/css                       css;
+    text/plain                     txt;
+
+    image/gif                      gif;
+    image/png                      png;
+    image/jpeg                     jpeg jpg;
+    image/x-icon                   ico;
+
+    application/pdf                pdf;
+    application/x-shockwave-flash  swf;
+    application/x-javascript       js;
+
+    audio/mpeg                     mp3;
+    audio/x-realaudio              ra;
+
+    video/mpeg                     mpeg mpg;
+    video/quicktime                mov;
+    video/x-msvideo                avi;
+    video/x-ms-wmv                 wmv;
+}
new file mode 100644
--- /dev/null
+++ b/conf/nginx.conf
@@ -0,0 +1,37 @@
+
+user  nobody;
+worker_processes  3;
+
+#error_log  logs/error.log;
+#pid        logs/nginx.pid;
+
+
+events {
+    connections  1024;
+}
+
+
+http {
+    include       conf/mime.types;
+    default_type  application/octet-stream;
+
+    sendfile  on;
+
+    #gzip  on;
+
+    server {
+        listen  80;
+
+        charset         on;
+        source_charset  koi8-r;
+
+        #access_log  logs/access.log;
+
+        location / {
+            root   html;
+            index  index.html index.htm;
+        }
+
+    }
+
+}
new file mode 100644
--- /dev/null
+++ b/docs/dtd/change_log_conf.dtd
@@ -0,0 +1,22 @@
+
+<!ELEMENT configuration   (length, start, indent, changes+) >
+
+<!ELEMENT length          (#PCDATA) >
+<!ELEMENT start           (#PCDATA) >
+<!ELEMENT indent          (#PCDATA) >
+
+<!ELEMENT changes         (title, length,
+                           bugfix, feature, change, workaround,
+                           (month, month, month, month, month, month,
+                            month, month, month, month, month, month)?) >
+
+<!ATTLIST changes         lang ( ru | en) #REQUIRED>
+
+<!ELEMENT title           (#PCDATA) >
+
+<!ELEMENT bugfix          (#PCDATA) >
+<!ELEMENT feature         (#PCDATA) >
+<!ELEMENT change          (#PCDATA) >
+<!ELEMENT workaround      (#PCDATA) >
+
+<!ELEMENT month           (#PCDATA) >
new file mode 100644
--- /dev/null
+++ b/docs/dtd/changes.dtd
@@ -0,0 +1,21 @@
+
+<!ENTITY  nbsp         "&#xA0;" >
+
+
+<!ELEMENT change_log   (changes)* >
+<!ATTLIST change_log   title  CDATA #REQUIRED >
+
+<!ELEMENT changes      (change)* >
+<!ATTLIST changes      ver    CDATA #REQUIRED
+                       date   CDATA #REQUIRED
+>
+
+<!ELEMENT change       (para)* >
+<!ATTLIST change       type (bugfix | feature | change | workaround) #IMPLIED >
+
+<!ELEMENT para         (#PCDATA | at | br | nobr)* >
+<!ATTLIST para         lang (ru | en) #IMPLIED >
+
+<!ELEMENT at           EMPTY >
+<!ELEMENT br           EMPTY >
+<!ELEMENT nobr         (#PCDATA) >
new file mode 100644
--- /dev/null
+++ b/docs/html/index.html
@@ -0,0 +1,8 @@
+<html>
+<head>
+<title>Welcome to nginx!</title>
+</head>
+<body bgcolor="white" text="black">
+<center><h1>Welcome to nginx!</h1></center>
+</body>
+</html>
new file mode 100644
--- /dev/null
+++ b/docs/text/LICENSE
@@ -0,0 +1,25 @@
+/* 
+ * Copyright (C) 2002-2004 Igor Sysoev
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ */
new file mode 100644
--- /dev/null
+++ b/docs/text/README
@@ -0,0 +1,3 @@
+
+Documentation is available at http://sysoev.ru/nginx/ only.
+
new file mode 100644
--- /dev/null
+++ b/docs/xml/change_log_conf.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="KOI8-R" ?>
+<!DOCTYPE configuration SYSTEM "../dtd/change_log_conf.dtd" >
+
+<configuration>
+
+<length>78</length>
+
+<start>    *) </start>
+<indent>       </indent>
+
+<changes lang="ru">
+    <title>Изменения в </title>
+    <length>66</length>
+
+    <bugfix>Исправление</bugfix>
+    <feature>Добавление</feature>
+    <change>Изменение</change>
+    <workaround>Изменение</workaround>
+</changes>
+
+<changes lang="en">
+    <title>Changes with </title>
+    <length>65</length>
+
+    <bugfix>Bugfix</bugfix>
+    <feature>Feature</feature>
+    <change>Change</change>
+    <workaround>Workaround</workaround>
+
+    <month> Jan </month>
+    <month> Feb </month>
+    <month> Mar </month>
+    <month> Apr </month>
+    <month> May </month>
+    <month> Jun </month>
+    <month> Jul </month>
+    <month> Aug </month>
+    <month> Sep </month>
+    <month> Oct </month>
+    <month> Nov </month>
+    <month> Dec </month>
+
+</changes>
+
+</configuration>
new file mode 100644
--- /dev/null
+++ b/docs/xml/nginx/changes.xml
@@ -0,0 +1,979 @@
+<?xml version="1.0" encoding="KOI8-R" ?>
+<!DOCTYPE change_log SYSTEM "../dtd/changes.dtd" >
+
+
+<change_log title="mod_accel">
+
+
+<changes ver="1.0.29" date="15.06.2003">
+
+<change type="bugfix">
+<para lang="ru">
+mod_accel не определял и не патчил EAPI, если собирался вместе
+с mod_ssl-2.8.13-1.3.27+.
+</para>
+<para lang="en">
+mod_accel did not detect and patch broken EAPI when built with
+mod_ssl-2.8.13-1.3.27+.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+при проксировании с помощью модуля mod_rewrite mod_accel
+поддерживает переписывание заголовков "Location" и "Refresh" с помощью
+этого же модуля и
+для этого <!-- эти два лишних слова написаны для тупого xsltproc -->
+указывает имя бэкенда в переменной
+среды "ACCEL_REWRITE".
+</para>
+<para lang="en">
+when request is proxied with the help of mod_rewrite module mod_accel
+set the backend name in the "ACCEL_RWRITE" enviroment variable and
+supports the rewriting of "Location" and "Refresh" headers with the help of
+mod_rewrite module.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+mod_accel переписывает содержимое заголовка "Destination",
+если имя хоста в этом заголовке совпадает с содержимым
+заголовка "Host", или же если URI не абсолютный.
+</para>
+<para lang="en">
+mod_accel now rewrites "Destination" header if the host name in this header
+is as in "Host" header or if the destination URI is not absolute.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+mod_accel зацикливался в случае, если клиент запрашивал byte range,
+а бэкенд не передавал кэшируемый ответ полностью.
+</para>
+<para lang="en">
+mod_accel went into an endless loop if the client requested the byte range
+and the backend did not send the full cachable response.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.28" date="02.05.2003">
+
+<change type="bugfix">
+<para lang="ru">
+сделана проверка и патч для EAPI из mod_ssl-2.8.13-1.3.27+.
+</para>
+<para lang="en">
+broken EAPI from mod_ssl-2.8.13-1.3.27+ now is checked and patched.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+директива AccelSetXURI не работала.
+</para>
+<para lang="en">
+AccelSetXURI directive did not work.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.27" date="26.02.2003">
+
+<change type="bugfix">
+<para lang="ru">
+бэкенды, использующие named-based вирутальные хосты, не были доступны
+через _the_same_host_.
+</para>
+<para lang="en">
+backends that use named-based virtual hosts can not be accessed via
+_the_same_host_.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.26" date="20.12.2002">
+
+<change type="change">
+<para lang="ru">
+AccelReverse работает и для запросов, проксированных через AccelPass.
+</para>
+<para lang="en">
+AccelReverse works for AccelPass'ed requests too.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+action remove в accel-cachemgr не работал с URL, в которых символы
+кодировались в виде %XX.
+</para>
+<para lang="en">
+accel-cachemgr's remove action did not work with URLs with characters
+endcoded as %XX.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.25" date="20.11.2002">
+
+<change type="bugfix">
+<para lang="ru">
+флаги дополнительных модулей R, Q и F залипали в кэше до тех пор, пока
+файл не удалялся из кэша.
+</para>
+<para lang="en">
+additional modules R, Q and F flags were sticky until cache file was
+not removed from cache.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+не работал action remove в accel-cachemgr.
+</para>
+<para lang="en">
+accel-cachemgr's remove action did not work.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+давно неменяемые документы не кэшировались, если для кэширования
+использовался AccelLastModifiedFactor.
+</para>
+<para lang="en">
+long invariable documents were not cached if AccelLastModifiedFactor
+was used to choose cache time.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.24" date="21.10.2002">
+
+<change type="bugfix">
+<para lang="ru">
+если в URL, созданным модулем mod_rewrite, находились
+символы <nobr>в виде %XX,</nobr>
+то они передавались бэкенду в раскрытом виде.
+</para>
+<para lang="en">
+if mod_rewrite created URL contained characters encoded as %XX then
+they was passed to backend unescaped.
+</para>
+</change>
+
+<change type="change">
+<para lang="ru">
+ключ -DMOD_REWRITE_DISABLE_TO_PROXY_SUBREQ.
+</para>
+<para lang="en">
+-DMOD_REWRITE_DISABLE_TO_PROXY_SUBREQ switch was added.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+переменная среды ACCEL_NOCACHE.
+</para>
+<para lang="en">
+ACCEL_NOCACHE enviroment variable was added.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.23" date="30.08.2002">
+
+<change type="change">
+<para lang="ru">
+в директиве FreezeStart.
+</para>
+<para lang="en">
+in FreezeStart directive.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+директива AccelCacheSetCookie.
+</para>
+<para lang="en">
+AccelCacheSetCookie directive.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+AccelCacheRoot не понимал параметры в кавычках.
+</para>
+<para lang="en">
+AccelCacheRoot did not understand quoted parameters.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+модуль mod_freeze не замораживал схемы, если они указаны в
+одинарных кавычках.
+</para>
+<para lang="en">
+mod_freeze did not freeze schemas if they was quoted in apostrophes.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+модуль mod_freeze не замораживал тэг style, параметр style и
+схему behavior:.
+</para>
+<para lang="en">
+mod_freeze did not freeze style tag, style parameter and behavior: schema.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+последовательность вида &lt;&lt;script не замораживалась модулем mod_freeze.
+</para>
+<para lang="en">
+&lt;&lt;script sequence was not frozen by mod_freeze.
+</para>
+</change>
+
+<change type="change">
+<para lang="ru">
+оптимизирован алгоритм поиска в модуле mod_freeze.
+</para>
+<para lang="en">
+mod_freeze's search algorithm was optimized.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.22" date="12.08.2002">
+
+<change type="bugfix">
+<para lang="ru">
+флаги дополнительных модулей R, Q и F не выставлялись,
+если запрос был некэшируемым.
+</para>
+<para lang="en">
+additional modules R, Q and F flags were not set
+if request was not cachable.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+директива AccelPassXAccel.
+</para>
+<para lang="en">
+AccelPassXAccel directive.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+модуль mod_freeze.
+</para>
+<para lang="en">
+mod_freeze module.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.21" date="04.07.2002">
+
+<change type="bugfix">
+<para lang="ru">
+директива "AccelPassServer off" в Apache-1.3.26 вообще не выдавала
+заголовок "Server".
+</para>
+<para lang="en">
+"AccelPassServer off" did not send any "Server" header in Apache-1.3.26.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+документация по mod_accel копируется в /manual/mod/mod_accel.html.
+</para>
+<para lang="en">
+mod_accel Russian documentation is copied in /manual/mod/mod_accel.html.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.20" date="24.06.2002">
+
+<change type="bugfix">
+<para lang="ru">
+параметр MP в директиве AccelPass работал некорректно, если также
+был задал параметр PH или использовалось специальное имя _the_same_host_.
+</para>
+<para lang="en">
+AccelPass MP parameter was worked incorrectly if used with PH parameter
+or with special _the_same_host_ host name.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.19" date="29.05.2002">
+
+<change type="bugfix">
+<para lang="ru">
+во время плавного (graceful) рестарта мог произойти segmentation fault
+в основном процессе, если все рабочие слоты были заняты.
+</para>
+<para lang="en">
+segmentation fault can occur in main process while graceful restart
+when all child slots were busy.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.18" date="12.04.2002">
+
+<change type="feature">
+<para lang="ru">
+директивы AccelRetry5XX и AccelSetXURI.
+</para>
+<para lang="en">
+AccelRetry5XX and AccelSetXURI directives were added.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+заметки accel_request_body и accel_rewrite_response.
+</para>
+<para lang="en">
+accel_request_body and accel_rewrite_response notes were added.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+mod_accel не собирался компилятором aCC на платформе HP-UX.
+Спасибо Marko Asplund, aspa<at/>kronodoc.fi.
+</para>
+<para lang="en">
+mod_accel is not built by aCC on HP-UX.<br/>
+Thanks to Marko Asplund, aspa<at/>kronodoc.fi.
+</para>
+</change>
+
+<change type="change">
+<para lang="ru">
+косметические правки.
+</para>
+<para lang="en">
+code clean up.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.17" date="29.03.2002">
+
+<change type="bugfix">
+<para lang="ru">
+если в URL перед аргументами находились символы <nobr>в виде %XX,</nobr>
+то они передавались бэкенду в раскрытом виде.
+</para>
+<para lang="en">
+if URL before arguments contained characters encoded as %XX then
+they was passed to backend unescaped.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.16" date="27.03.2002">
+
+<change type="feature">
+<para lang="ru">
+в директиве AccelPass можно использовать специальное
+имя хоста _the_same_host_.
+</para>
+<para lang="en">
+special hostname _the_same_host_ can be used in AccelPass directive.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+не работало ограничение количества соединений и ждущих процессов
+при использовании флага PH в директиве AccelPass.
+</para>
+<para lang="en">
+limition of connections and waiting processes does not work
+if PH flag in AccelPass directive was used.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+директива AccelPassServer.
+</para>
+<para lang="en">
+AccelPassServer directive was added.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.15" date="12.03.2002">
+
+<change type="bugfix">
+<para lang="ru">
+если модули mod_quoted или mod_randban были собраны статически
+или подгружались с помощью LoadModule, но не были добавлены
+директивой AddModule после директивы ClearModuleList, то
+директивы этих модулей не воспринимались.
+Если же директивы этих модулей не использовались в конфигурационных файлах,
+то при любых запросах, обрабатываемых модулем mod_accel,
+происходил segmentation fault.
+</para>
+<para lang="en">
+if mod_quoted or mod_randban modules were statically build 
+or were loaded with LoadModule directive and were not added
+with AddModule directive after ClearModuleList directive then
+their directives were unrecognized.
+If their directives were not used in configration files
+then any request handled by mod_accel caused segmentation fault.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.14" date="26.02.2002">
+
+<change type="bugfix">
+<para lang="ru">
+некорректно обрабатывались ответы бэкенда с большими заголовками.
+</para>
+<para lang="en">
+backend response with big header was incorrectly handled.
+</para>
+</change>
+
+<change type="workaround">
+<para lang="ru">
+игнорируются строки типа "HTTP/1.0 200 OK" в середине заголовка ответа
+бэкенда. Добавлена запись в ErrorLog некорректных заголовков в ответе
+бэкенда.
+</para>
+<para lang="en">
+lines like "HTTP/1.0 200 OK" are ignored in middle of backend response header.
+Incorrect backend header lines are logged in ErrorLog.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+директива AccelInvalidate, accel-cachemgr и заголовки типа
+<nobr>"Pragma: no-cache"</nobr> не обновляли кэш,
+если задана директива "AccelUnlinkNoCached off".
+</para>
+<para lang="en">
+AccelInvalidate directive, accel-cachemgr and headers like
+<nobr>"Pragma: no-cache"</nobr> did not refresh cache
+if AccelUnlinkNoCached directive was off.
+</para>
+</change>
+
+<change type="change">
+<para lang="ru">
+порядок наследования AccelPass изменён, сначала проверяются
+директивы из виртуального сервера, а затем из основного.
+</para>
+<para lang="en">
+merge order of AccelPass directive is changed. Virtual server direcitves
+are checked first.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.13" date="12.02.2002">
+
+<change type="bugfix">
+<para lang="ru">
+не корректировался порт в заголовках "Location" и "Refresh"
+если использовался флаг PH в директиве AccelPass и номера портов
+фронтенда и бэкенда отличались.
+</para>
+<para lang="en">
+port was not corrected in "Location" and "Refresh" headers
+if PH flag in AccelPass directive was used and frontend and backend
+port numbers were not the same.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.12" date="10.02.2002">
+
+<change type="feature">
+<para lang="ru">
+флаг PH в директиве AccelPass.
+</para>
+<para lang="en">
+PH flag was added in AccelPass directive.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.11" date="01.02.2002">
+
+<change type="change">
+<para lang="ru">
+упразднена директива AccelContentTail.
+</para>
+<para lang="en">
+AccelContentTail directive was removed.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+если перезаписываемая строка попадала на границу буфера, mod_randban
+мог некорректно поменять случайное число.
+</para>
+<para lang="en">
+mod_randban can incorrectly change random value if string to rewrite
+was on buffer edge.
+</para>
+</change>
+
+<change>
+<para lang="ru">
+Совместимость с Apache 1.3.23.
+</para>
+<para lang="en">
+Apache 1.3.23 compatibility.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+если в конфигурации AccelPass описан Location в виде /proxied/,
+то при запросе /proxied возвращается редирект на URL с добавленным
+слэшом - /proxied/.
+</para>
+<para lang="en">
+if Location is specified in AccelPass as /proxied/ then
+on request /proxied redirect is returned to URL with slash added - /proxied/.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+не возвращалась ошибка, если не удавалось создать временный файл
+для хранения тела запроса POST.
+</para>
+<para lang="en">
+error was not returned if POST request body temporary file creation was failed.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.10" date="28.12.2001">
+
+<change type="feature">
+<para lang="ru">
+директива AccelReverse.
+</para>
+<para lang="en">
+AccelReverse directive was added.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.9" date="24.12.2001">
+
+<change type="bugfix">
+<para lang="ru">
+на Solaris 7 и FreeBSD 2.x большие ответы передавались не до конца.
+</para>
+<para lang="en">   
+big repsonses was truncated on Solaris 7 and FreeBSD 2.x.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.8" date="19.12.2001">
+
+<change type="bugfix">
+<para lang="ru">
+скорректированы некоторые сообщения об ошибках.
+</para>
+<para lang="en">
+some error messages was corrected.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+если клиент в запросе POST обрывал соединение,
+то бэкенду передавалось неполное тело запроса.
+Теперь mod_accel в такой ситуации не соединяется с бэкендом.
+</para>
+<para lang="en">
+if client aborted connection while POST
+then backend received incompleted request body.
+Now mod_accel doesn't connect to backend in this situation.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+mod_accel не собирался без библиотеки mm.
+</para>
+<para lang="en">
+mod_accel did not build without mm library.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.7" date="06.12.2001">
+
+<change type="feature">
+<para lang="ru">
+в сообщения об ошибках добавлен URL, который передаётся бэкенду.
+</para>
+<para lang="en">
+backend URL was added in error messages.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+третий параметр в директиве AccelBusyLock.
+</para>
+<para lang="en">
+third parameter was added in AccelBusyLock directory.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+порядок загрузки модулей mod_accel, mod_randban, mod_quoted
+и mod_ssl не важен.
+</para>
+<para lang="en">
+load order of mod_accel, mod_randban, mod_quoted and mod_ssl
+has no meaning now.
+</para>
+</change>
+
+<change type="change">
+<para lang="ru">
+добавлен параметр --with-patch в configure.<br/>
+Упразднены параметры --without-mod_charset и --without-mod_ssl.
+</para>
+<para lang="en">
+--with-patch directive was added in configure.<br/>
+--without-mod_charset and --without-mod_ssl directives is removed.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+улучшение портабильности.
+</para>
+<para lang="en">
+portability enhancement.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.6" date="02.11.2001">
+
+<change type="feature">
+<para lang="ru">
+во флаге MP директивы AccelPass можно указывать тэг.
+</para>
+<para lang="en">
+MP flag of AccelPass directive can have tag.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+при использовании проксирования (флаг P) в директиве
+RewriteRule модуля mod_rewrite можно использовать флаг MP.
+</para>
+<para lang="en">
+MP flag can be used in mod_rewrite module RewriteRule
+directive when proxing is specified (P flag).
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при указании времени кэширования с помощью директив
+AccelDefaultExpire или AccelLastModifiedFactor ответ не сохранялся
+в кэш, если разница во времени между фронтендом и бэкендом была
+больше время кэширования.
+</para>
+<para lang="en">
+if time to cache is specified in AccelDefaultExpire or
+AccelLastModifiedFactor directive and time difference between
+frontend and backend is more then specified time then answer
+was not saved in cache.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.5" date="18.10.2001">
+
+<change type="feature">
+<para lang="ru">   
+директива AccelIgnoreAuth.
+</para>
+<para lang="en">
+AccelIgnoreAuth directive was added.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при использовании проксирования (флаг P) в директиве
+RewriteRule модуля mod_rewrite модуль mod_proxy дублировал
+строку аргументов.
+</para>
+<para lang="en">  
+mod_proxy module duplicated argument string when proxing
+is specified in mod_rewrite module RewriteRule directive (P flag).
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.4" date="16.10.2001">
+
+<change type="bugfix">
+<para lang="ru">
+если бэкендов несколько и с одним из них соединение
+не было установлено, то информация об этой попытке в заметки
+%{accel*}x не добавлялась.
+</para>
+<para lang="en">
+if there are several backends and connection with one of them
+was not established then %{accel*}x notes did not contain state of it.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при получении от бэкенда большого заголовка происходил
+segmentation fault.
+</para>
+<para lang="en">
+backend big header caused segmentation fault.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+в accel-cachemgr добавлены два состояния - invalid
+и no_accelerated.
+</para>
+<para lang="en">
+two status codes - invalid and no_accelerated was added
+in accel-cachemgr.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+директива RewriteRule модуля mod_rewrite с флагом [P]
+работала только при использовании в SSI.
+</para>
+<para lang="en">
+mod_rewrite module RewriteRule directive with flag [P]
+worked in SSI enviroment only.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.3" date="10.10.2001">
+
+<change>
+<para lang="ru">
+Изменения в директиве AccelCacheCookie:
+Добавлены параметр "all", запрещающие параметры и регулярные выражения.
+В одной директиве может быть указано несколько параметров.
+Директивы из вложенных блоков не объединяются.
+Имена cookie сортируются в алфавитном порядке.
+</para>
+<para lang="en">
+Changes in AccelCacheCookie directive:
+"all" parameter, supressing parameters and regular expressions was added.
+There can be several parameters in one directive.
+Directives is not merged.
+Cookie names is sorted in alphabetical order.
+</para>
+</change>
+
+<change>
+<para lang="ru">
+Изменения в директиве AccelNoPass:
+Регулярное выражение может быть нечуствительно к регистру.
+Между символом "~" и регулярным выражением не должно быть пробела.
+В одной директиве может быть указано несколько параметров.
+</para>
+<para lang="en">
+Changes in AccelNoPass directive:
+Regular expression can be case-insensitive.
+There should not be space between "~" symbol and regular expression.
+There can be several parameters in one directive.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.2" date="04.10.2001">
+
+<change type="feature">
+<para lang="ru">
+директива AccelCacheCookie.
+</para>
+<para lang="en">
+AccelCacheCookie directive was added.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+заметка accel_nocache.
+</para>
+<para lang="en">
+accel_nocache note was added.
+</para>
+</change>
+
+<change type="feature">
+<para lang="ru">
+обработчик accel-cachemgr.
+</para>
+<para lang="en">
+accel-cachemgr handler was added.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+при запросе нескольких невозрастающих byteranges мог
+выдаваться неверный ответ.
+</para>
+<para lang="en">
+answer may be wrong if request contains several non-growing
+byteranges.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+заметка %{accel_r}x не записывалась в лог.
+</para>
+<para lang="en">
+%{accel_r}x note was not logged.
+</para>
+</change>
+
+<change type="bugfix">
+<para lang="ru">
+если ответ некэшируемый, то при преждевременном обрыве
+соединения с клиентом соединение с бэкендом не закрывалось сразу.
+</para>
+<para lang="en">
+if response is not cachable and client prematurely closes
+connection then connection to backend was not closed at once.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.1" date="29.08.2001">
+
+<change type="bugfix">
+<para lang="ru">
+ошибка в accel_read_and_check_writable() вызывала нагрузку на процессор.
+</para>
+<para lang="en">
+bug in accel_read_and_check_writable() caused high CPU usage.
+</para>
+</change>
+
+</changes>
+
+
+<changes ver="1.0.0" date="28.08.2001">
+
+<change>
+<para lang="ru">
+Первая версия.<br/>
+Тестировалась на Apache 1.3.14, 1.3.17, 1.3.19, 1.3.20 на
+<nobr>FreeBSD 3.4, 4.2.</nobr>
+</para>
+<para lang="en">
+First release.<br/>
+Tested with Apache 1.3.14, 1.3.17, 1.3.19, 1.3.20 on FreeBSD 3.4, 4.2.
+</para>
+</change>
+
+</changes>
+
+</change_log>
new file mode 100644
--- /dev/null
+++ b/docs/xsls/changes.xsls
@@ -0,0 +1,118 @@
+X:stylesheet {
+
+X:output method="text" encoding="koi8-r";
+
+X:param lang="'en'";
+X:param configuration="'../xml/change_log_conf.xml'";
+
+X:var conf = "document($configuration)/configuration";
+X:var start = "$conf/start";
+X:var indent = "$conf/indent";
+X:var max = "$conf/length";
+X:var br = {&lt;br&gt;}
+
+
+X:template = "/" { !! "change_log"; }
+X:template = "change_log" { !! "changes"; }
+
+
+X:template = "changes" {
+    X:text {&#10;}
+
+    !{substring(concat($conf/changes[@lang=$lang]/title,
+                       //change_log/@title,
+                       ' ', @ver,
+                       '                                                    '),
+                1, $conf/changes[@lang=$lang]/length)}
+
+    X:if "$lang='ru'" { !{@date} }
+
+    X:if "$lang='en'" {
+        !{substring(@date, 1, 2)}
+        !{$conf/changes[@lang=$lang]/month[number(substring(current()/@date,
+                                                            4, 2))]}
+        !{substring(@date, 7, 4)}
+    }
+
+    X:text {&#10;}
+
+    !! "change";
+
+    X:text {&#10;}
+}
+
+
+X:template = "change" {
+    X:var prefix = "$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]"
+
+    X:var postfix = { X:if "$prefix" { X:text {: } } }
+
+    !! "para[@lang=$lang]" (prefix = "concat($start, $prefix, $postfix)");
+}
+
+
+X:template para(prefix) = "para" {
+    X:var text = { !!; }
+
+    X:text {&#10;}
+
+    !wrap(text = "normalize-space($text)",
+          prefix = { X:if "position() = 1" { !{$prefix} } else { !{$indent} } })
+}
+
+
+X:template wrap(text, prefix) {
+    X:if "$text" {
+        X:var offset = {
+            X:if "starts-with($text, concat($br, ' '))" {
+                !{string-length($br) + 2}
+            } else {
+                1
+            }
+        }
+
+        X:var length = {
+            !length(text = "substring($text, $offset)",
+                    prefix = "string-length($prefix)",
+                    length = "$max")
+        }
+
+        !{$prefix}
+
+        !{translate(substring($text, $offset, $length), '&#xA0;', ' ')}
+
+        X:text {&#10;}
+
+        !wrap(text = "substring($text, $length + $offset)", prefix = "$indent")
+    }
+}
+
+
+X:template length(text, prefix, length) {
+    X:var break = "substring-before(substring($text, 1, $length - $prefix),
+                                    $br)"
+
+    X:choose {
+        X:when "$break" { !{string-length($break)} }
+
+        X:when "$length = 0" { !{$max} }
+
+        X:when "string-length($text) + $prefix &lt;= $length
+                or substring($text, $length - $prefix, 1) = ' '"
+        {
+            !{$length - $prefix}
+        }
+
+        X:otherwise {
+            !length(text = "$text", prefix = "$prefix", length = "$length - 1")
+        }
+    }
+}
+
+
+X:template = "at" {@}
+X:template = "br" { !{$br} }
+X:template = "nobr" { !{translate(., ' ', '&#xA0;')} }
+
+
+}
new file mode 100644
--- /dev/null
+++ b/docs/xsls/dump.xsls
@@ -0,0 +1,29 @@
+X:stylesheet {
+
+X:output method="xml"
+X:param indent-increment="'   '";
+
+X:template noname(indent="'&#xA;'") = "*" {
+	!{$indent}
+
+	X:if "name()='xsl:template'" {
+		!{$indent}
+	}
+
+	X:copy {
+	   X:copy-of "@*"
+     	   !!( indent = "concat($indent, $indent-increment)" );
+	   X:if "./* " { !{$indent}  }
+	}
+}
+
+ 
+X:template = "comment()|processing-instruction()" {
+    X:copy;
+}
+
+<!--
+X:template ="text()[normalize-space(.)='']" {}
+-->
+
+}
new file mode 100644
--- /dev/null
+++ b/docs/xslt/changes.xslt
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+
+   <xsl:output encoding="koi8-r" method="text"/>
+
+   <xsl:param select="'en'" name="lang"/>
+   <xsl:param select="'../xml/change_log_conf.xml'" name="configuration"/>
+
+   <xsl:variable select="document($configuration)/configuration" name="conf"/>
+   <xsl:variable select="$conf/start" name="start"/>
+   <xsl:variable select="$conf/indent" name="indent"/>
+   <xsl:variable select="$conf/length" name="max"/>
+   <xsl:variable name="br">&lt;br&gt;</xsl:variable>
+   
+   <xsl:template match="/">
+      <xsl:apply-templates select="change_log"/>
+   </xsl:template>
+   
+   <xsl:template match="change_log">
+      <xsl:apply-templates select="changes"/>
+   </xsl:template>
+   
+   <xsl:template match="changes">
+      <xsl:text>
+</xsl:text>
+
+      <xsl:value-of select="substring(concat($conf/changes[@lang=$lang]/title,                        //change_log/@title,                        ' ', @ver,                        '                                                    '),                 1, $conf/changes[@lang=$lang]/length)"/>
+
+      <xsl:if test="$lang='ru'">
+         <xsl:value-of select="@date"/>
+      </xsl:if>
+
+      <xsl:if test="$lang='en'">
+         <xsl:value-of select="substring(@date, 1, 2)"/>
+         <xsl:value-of select="$conf/changes[@lang=$lang]/month[number(substring(current()/@date,                                                             4, 2))]"/>
+         <xsl:value-of select="substring(@date, 7, 4)"/>
+      </xsl:if>
+      <xsl:text>
+</xsl:text>
+
+      <xsl:apply-templates select="change"/>
+
+      <xsl:text>
+</xsl:text>
+   </xsl:template>
+
+   
+   <xsl:template match="change">
+      <xsl:variable select="$conf/changes[@lang=$lang]/*[local-name(.)=current()/@type]" name="prefix"/>
+
+      <xsl:variable name="postfix">
+         <xsl:if test="$prefix">
+            <xsl:text>: </xsl:text>
+         </xsl:if>
+      </xsl:variable>
+
+      <xsl:apply-templates select="para[@lang=$lang]">
+         <xsl:with-param select="concat($start, $prefix, $postfix)" name="prefix"/>
+      </xsl:apply-templates>
+   </xsl:template>
+
+   
+   <xsl:template match="para" name="para">
+      <xsl:param name="prefix"/>
+      <xsl:variable name="text">
+         <xsl:apply-templates/>
+      </xsl:variable>
+
+      <xsl:text>
+</xsl:text>
+
+      <xsl:call-template name="wrap">
+         <xsl:with-param select="normalize-space($text)" name="text"/>
+         <xsl:with-param name="prefix">
+            <xsl:choose>
+               <xsl:when test="position() = 1">
+                  <xsl:value-of select="$prefix"/>
+               </xsl:when>
+               <xsl:otherwise>
+                  <xsl:value-of select="$indent"/>
+               </xsl:otherwise>
+            </xsl:choose>
+         </xsl:with-param>
+      </xsl:call-template>
+   </xsl:template>
+
+   
+   <xsl:template name="wrap">
+      <xsl:param name="text"/>
+      <xsl:param name="prefix"/>
+      <xsl:if test="$text">
+         <xsl:variable name="offset">
+            <xsl:choose>
+               <xsl:when test="starts-with($text, concat($br, ' '))">
+                  <xsl:value-of select="string-length($br) + 2"/>
+               </xsl:when>
+               <xsl:otherwise>
+                1</xsl:otherwise>
+            </xsl:choose>
+         </xsl:variable>
+
+         <xsl:variable name="length">
+            <xsl:call-template name="length">
+               <xsl:with-param select="substring($text, $offset)" name="text"/>
+               <xsl:with-param select="string-length($prefix)" name="prefix"/>
+               <xsl:with-param select="$max" name="length"/>
+            </xsl:call-template>
+         </xsl:variable>
+         <xsl:value-of select="$prefix"/>
+
+         <xsl:value-of select="translate(substring($text, $offset, $length), 'б═', ' ')"/>
+
+         <xsl:text>
+</xsl:text>
+
+         <xsl:call-template name="wrap">
+            <xsl:with-param select="substring($text, $length + $offset)" name="text"/>
+            <xsl:with-param select="$indent" name="prefix"/>
+         </xsl:call-template>
+      </xsl:if>
+   </xsl:template>
+   
+   <xsl:template name="length">
+      <xsl:param name="text"/>
+      <xsl:param name="prefix"/>
+      <xsl:param name="length"/>
+      <xsl:variable select="substring-before(substring($text, 1, $length - $prefix),                                     $br)" name="break"/>
+      <xsl:choose>
+         <xsl:when test="$break">
+            <xsl:value-of select="string-length($break)"/>
+         </xsl:when>
+         <xsl:when test="$length = 0">
+            <xsl:value-of select="$max"/>
+         </xsl:when>
+         <xsl:when test="string-length($text) + $prefix &lt;= $length                 or substring($text, $length - $prefix, 1) = ' '">
+            <xsl:value-of select="$length - $prefix"/>
+         </xsl:when>
+         <xsl:otherwise>
+            <xsl:call-template name="length">
+               <xsl:with-param select="$text" name="text"/>
+               <xsl:with-param select="$prefix" name="prefix"/>
+               <xsl:with-param select="$length - 1" name="length"/>
+            </xsl:call-template>
+         </xsl:otherwise>
+      </xsl:choose>
+   </xsl:template>
+
+   
+   <xsl:template match="at">@</xsl:template>
+   
+   <xsl:template match="br">
+      <xsl:value-of select="$br"/>
+   </xsl:template>
+   
+   <xsl:template match="nobr">
+      <xsl:value-of select="translate(., ' ', 'б═')"/>
+   </xsl:template>
+</xsl:stylesheet>
\ No newline at end of file
--- a/src/os/unix/ngx_linux_init.c
+++ b/src/os/unix/ngx_linux_init.c
@@ -55,7 +55,7 @@ ngx_int_t ngx_os_init(ngx_log_t *log)
 
     name[0] = CTL_KERN;
     name[1] = KERN_RTSIGMAX;
-    len = sizeof(rtsig_max);
+    len = sizeof(ngx_linux_rtsig_max);
     if (sysctl(name, sizeof(name), &ngx_linux_rtsig_max, &len, NULL, 0) == -1) {
         ngx_log_error(NGX_LOG_INFO, log, ngx_errno,
                       "sysctl(KERN_RTSIGMAX) failed");