From: serassio <> Date: Sat, 1 Mar 2008 01:29:51 +0000 (+0000) Subject: Merged changes from SQUID_3_0 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f14d04d3aca93ac4e992bd0ba6af220e11976af0;p=thirdparty%2Fsquid.git Merged changes from SQUID_3_0 --- diff --git a/ChangeLog b/ChangeLog index 2bc9bac69e..d8375a0712 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +Changes to squid-3.0.STABLE1 (1 Mar 2008): + + - Add myportname ACL for matching the accepting port name (see release notes) + - Add include directive for squid.conf (see release notes) + - Add ability to strip kerberos realm from usernames during Auth + - License cleanup to comply with GPLv2 or later + - Updated Error Pages and Translations + - Updated configuration examples + - Updated valgrind support for valgrind-3.3.0 + - Improved support for Windows and MacOS X Leopard + - Improved support for files larger than 2GB + - Improved support for CARP arrays and WCCPv2 + - Improved cachmgr, SNMP, and log reporting + - ... and as usual Many bug fixes since STABLE 1 + Changes to squid-3.0.STABLE1 (13 Dec 2007): - Major rewrite translating the code to C++, originally based on diff --git a/configure b/configure index 100e3edbb3..71cfcfedb5 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision. +# From configure.in Revision: 1.488.2.2 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.61 for Squid Web Proxy 3.0.STABLE1-CVS. # @@ -24235,6 +24235,7 @@ fi + for ac_header in \ @@ -24249,6 +24250,7 @@ for ac_header in \ fcntl.h \ fnmatch.h \ getopt.h \ + glob.h \ gnumalloc.h \ grp.h \ ip_compat.h \ @@ -42504,6 +42506,7 @@ esac + for ac_func in \ @@ -42521,6 +42524,7 @@ for ac_func in \ getrusage \ getspnam \ gettimeofday \ + glob \ htobe16 \ htole16 \ kqueue\ diff --git a/configure.in b/configure.in index 5754c93295..7a6ca2b736 100644 --- a/configure.in +++ b/configure.in @@ -1,7 +1,7 @@ dnl Configuration input file for Squid dnl -dnl $Id: configure.in,v 1.488.2.1.2.1 2007/12/27 20:34:51 serassio Exp $ +dnl $Id: configure.in,v 1.488.2.1.2.2 2008/02/29 18:29:52 serassio Exp $ dnl dnl dnl @@ -11,7 +11,7 @@ AM_CONFIG_HEADER(include/autoconf.h) AC_CONFIG_AUX_DIR(cfgaux) AC_CONFIG_SRCDIR([src/main.cc]) AM_INIT_AUTOMAKE([tar-ustar]) -AC_REVISION($Revision: 1.488.2.1.2.1 $)dnl +AC_REVISION($Revision: 1.488.2.1.2.2 $)dnl AC_PREFIX_DEFAULT(/usr/local/squid) AM_MAINTAINER_MODE @@ -1848,6 +1848,7 @@ AC_CHECK_HEADERS( \ fcntl.h \ fnmatch.h \ getopt.h \ + glob.h \ gnumalloc.h \ grp.h \ ip_compat.h \ @@ -2493,6 +2494,7 @@ AC_CHECK_FUNCS(\ getrusage \ getspnam \ gettimeofday \ + glob \ htobe16 \ htole16 \ kqueue\ diff --git a/doc/release-notes/release-3.0.html b/doc/release-notes/release-3.0.html index 74aea85bfe..3b8f55f3c7 100644 --- a/doc/release-notes/release-3.0.html +++ b/doc/release-notes/release-3.0.html @@ -2,12 +2,12 @@ - Squid 3.0.RC1 release notes + Squid 3.0.STABLE2 release notes -

Squid 3.0.RC1 release notes

+

Squid 3.0.STABLE2 release notes

-

Squid Developers

$Id: release-3.0.html,v 1.12 2007/11/18 17:23:01 serassio Exp $ +

Squid Developers

$Id: release-3.0.html,v 1.12.4.1 2008/02/29 18:29:52 serassio Exp $
This document contains the release notes for version 3.0 of Squid. Squid is a WWW Cache application developed by the National Laboratory @@ -15,21 +15,20 @@ for Applied Network Research and members of the Web Caching community.

1. Notice

-

The Squid Team are pleased to announce the release of Squid-3.0.RC1 for pre-release testing.

+

The Squid Team are pleased to announce the release of Squid-3.0.STABLE2.

This new release is available for download from http://www.squid-cache.org/Versions/v3/3.0/ or the mirrors.

-

A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support. -While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.

+

A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support and additional Languages.

We welcome feedback and bug reports. If you find a bug, please see http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d for how to submit a report with a stack trace.

2. Known issues

-

Although this release is deemed good enough for testing in many setups, please note the existence of +

Although this release is deemed good enough for use in many setups, please note the existence of open bugs against Squid-3.0.

-

3. Changes since earlier PRE releases of Squid-3.0

+

3. Changes since earlier STABLE releases of Squid-3.0

The 3.0 change history can be viewed here.

@@ -92,7 +91,7 @@ to perform some simple XML based processing, offloading the final page assembly

Some of the features found in Squid-2.6 is not available in Squid-3. -Some has been dropped as they are not needed. Some has not yet been forward-ported to Squid-3 and may appear in a later release.

+Some have been dropped as they are not needed. Some have not yet been forward-ported to Squid-3 and may appear in a later release.

-The ESI processor returned: +ESI motorn returnerade:

-%Z +%z

-This means that: +Detta betyder att:

- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
+ Surrogat servern kunde inte bearbeta ESI mallen. 
+ Vänligen kontakta den ansvariga för webbservern ifråga.
 
-

Your webmaster is %w.

-

This page is in english because a translation has not been made. If you are able to, please create a translation and contact the squid project to get it included.

+

+Addressen till ansvarig administratör är %w. +

diff --git a/errors/Ukrainian-1251/ERR_ACCESS_DENIED b/errors/Ukrainian-1251/ERR_ACCESS_DENIED new file mode 100644 index 0000000000..2bdbc7f7b9 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_ACCESS_DENIED @@ -0,0 +1,25 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. + diff --git a/errors/Ukrainian-1251/ERR_CACHE_ACCESS_DENIED b/errors/Ukrainian-1251/ERR_CACHE_ACCESS_DENIED new file mode 100644 index 0000000000..e9cff832aa --- /dev/null +++ b/errors/Ukrainian-1251/ERR_CACHE_ACCESS_DENIED @@ -0,0 +1,34 @@ + + +ÏÎÌÈËÊÀ: Äîñòóï äî êåøó çàáîðîíåíèé + + + +

ÏÎÌÈËÊÀ

+

Äîñòóï äî êåøó çàáîðîíåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+

+ +

Âèáà÷òå, àëå Âè íå ìîæåòå çàïðîñèòè: +

    %U
+ç öüîãî êåøó äî òèõ ï³ð, ïîêè íå ïðîéäåòå àóòåíòèô³êàö³þ. +

+ +

+Âàì ïîòð³áíî âèêîðèñòîâóâàòè Netscape âåðñ³¿ 2.0 ÷è âèùå, àáî Microsoft Internet +Explorer 3.0, àáî HTTP/1.1 ñóì³ñíèé áðîóçåð. Áóäü-ëàñêà, çâ'ÿæ³òüñÿ +ç àäì³í³ñòðàòîðîì êåøó, ÿêùî ó Âàñ âèíèêëè òðóäíîù³ +ç àóòåíòèô³êàö³ºþ, àáî çì³í³òü +Âàø ïàðîëü ïî çàìîâ÷óâàííþ. +

diff --git a/errors/Ukrainian-1251/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Ukrainian-1251/ERR_CACHE_MGR_ACCESS_DENIED new file mode 100644 index 0000000000..cf35aaba67 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_CACHE_MGR_ACCESS_DENIED @@ -0,0 +1,33 @@ + + +ÏÎÌÈËÊÀ: Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé + + + +

ÏÎÌÈËÊÀ

+

Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+

+ +

Âèáà÷òå, Âè íå ìîæåòå çàïðîñèòè: +

    %U
+ç öüîãî êåø ìåíåäæåðà äî òèõ ï³ð, ïîêè íå ïðîéäåòå àóòåíòèô³êàö³þ. +

+

+Âàì ïîòð³áíî âèêîðèñòîâóâàòè Netscape âåðñ³¿ 2.0 ÷è âèùå, àáî Microsoft Internet +Explorer 3.0, àáî HTTP/1.1 ñóì³ñíèé áðîóçåð. Áóäü-ëàñêà, çâ'ÿæ³òüñÿ +ç àäì³í³ñòðàòîðîì êåøó, ÿêùî ó Âàñ âèíèêëè òðóäíîù³ +ç àóòåíòèô³êàö³ºþ, à ÿêùî Âè º àäì³í³ñòðàòîðîì, +ïðî÷èòàéòå äîêóìåíòàö³þ Squid ïî ³íòåðôåéñó êåðóâàííÿ êåøîì ³ ïåðåâ³ðòå +æóðíàë êåøó (cache log) íà ïðåäìåò á³ëüø äåòàëüíèõ ïîâ³äîìëåíü ïðî ïîìèëêè.

diff --git a/errors/Ukrainian-1251/ERR_CANNOT_FORWARD b/errors/Ukrainian-1251/ERR_CANNOT_FORWARD new file mode 100644 index 0000000000..b497ed5786 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_CANNOT_FORWARD @@ -0,0 +1,30 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Äàíèé çàïèò íå ìîæå áóòè ïåðåñëàíèé äî ñåðâåðà-äæåðåëà, ÷è äî áóäü-ÿêîãî +ç âèùåñòîÿ÷èõ êåø³â. Íàéá³ëüø â³ðîã³äíà ïðè÷èíà ïîìèëêè: +

+

Âàøèì êåø àäì³í³ñòðàòîðîì º %w. + diff --git a/errors/Ukrainian-1251/ERR_CONNECT_FAIL b/errors/Ukrainian-1251/ERR_CONNECT_FAIL new file mode 100644 index 0000000000..43d9013235 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_CONNECT_FAIL @@ -0,0 +1,27 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Ñèñòåìà ïîâ³äîìëÿº: +

    %E
+ +

+³ääàëåí³ õîñò ÷è ìåðåæà íå â³äïîâ³äàþòü. Áóäü-ëàñêà, ïîâòîð³òü ñâ³é çàïèò ùå ðàç. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_DNS_FAIL b/errors/Ukrainian-1251/ERR_DNS_FAIL new file mode 100644 index 0000000000..e094d08b14 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_DNS_FAIL @@ -0,0 +1,32 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+Íåìîæëèâî âèçíà÷èòè IP àäðåñó âóçëà +%H +
+ +

+DNS ñåðâåð ïîâ³äîìëÿº: +

+%z +
+ +

+Öå îçíà÷àº: +

+ Êåøó íå âäàëîñÿ âèçíà÷èòè ³ì'ÿ ñåðâåðà, âêàçàíå â URL.
+ Ïåðåâ³ðòå ïðàâèëüí³ñòü íàïèñàííÿ àäðåñó.
+
+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. + diff --git a/errors/Ukrainian-1251/ERR_ESI b/errors/Ukrainian-1251/ERR_ESI new file mode 100644 index 0000000000..7ad18056f9 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_ESI @@ -0,0 +1,28 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+Îáðîáêà ESI çàâåðøèëàñü íåâäàëî. +
+ +

+ESI ïðîöåñîð ïîâ³äîìèâ: +

+%Z +
+ +

+Öå îçíà÷ຠùî: +

+ Çàì³ííèê íå çì³ã îáðîáèòè ESI òåìïëåéò. Áóäü-ëàñêà ïîâ³äîìòå ïðî öþ ïîìèëêó âåáìàéñòðà. 
+
+

Âàøèì âåáìàéñòðîì º %w. diff --git a/errors/Ukrainian-1251/ERR_FORWARDING_DENIED b/errors/Ukrainian-1251/ERR_FORWARDING_DENIED new file mode 100644 index 0000000000..3606528d55 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FORWARDING_DENIED @@ -0,0 +1,24 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Öåé êåø íå ïåðåñèëàòèìå Âàø çàïèò, òîìó ùî â³í íàìàãàºòüñÿ âñòàíîâèòè áðàòí³ â³äíîñèíè (sibling relationship). +Ìîæëèâî, ê볺íò %i - íåâ³ðíî ñêîíô³ãóðîâàíèé êåø. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_FTP_DISABLED b/errors/Ukrainian-1251/ERR_FTP_DISABLED new file mode 100644 index 0000000000..afd07ee5ff --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_DISABLED @@ -0,0 +1,23 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Öåé êåø íå ï³äòðèìóº ïðîòîêîë FTP. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_FTP_FAILURE b/errors/Ukrainian-1251/ERR_FTP_FAILURE new file mode 100644 index 0000000000..6a5e576c9a --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_FAILURE @@ -0,0 +1,19 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL +âèíèêëà ïîìèëêà ïðîòîêîëó FTP: +%U +

+Squid ïîñëàâ íàñòóïíó êîìàíäó FTP: +

%f
+³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü +
%F
+
%g
+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_FTP_FORBIDDEN b/errors/Ukrainian-1251/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..01f4435635 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_FORBIDDEN @@ -0,0 +1,19 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +Ñòàëàñü íåâäàëà FTP àóòåíòèô³êàö³ÿ +

+Squid ïîñëàâ íàñòóïíó FTP êîìàíäó: +

%f
+³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü +
%F
+
%g
+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_FTP_NOT_FOUND b/errors/Ukrainian-1251/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..e288d454fc --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_NOT_FOUND @@ -0,0 +1,22 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+Äàíèé URL íå ìîæå áóòè äîñòàâëåíèé: +%U +

+Squid ïîñëàâ íàñòóïíó FTP êîìàíäó: +

%f
+³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü +
%F
+
%g
+

+Öå ìîæå áóòè âèêëèêàíî FTP àäðåñîþ ç àáñîëþòíèì øëÿõîì (ÿêèé íå +â³äïîâ³äຠñòàíäàðòó RFC 1738).  òàêîìó âèïàäêó, ôàéë ìîæå áóòè +çíàéäåíèé çà àäðåñîþ %B. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_FTP_PUT_CREATED b/errors/Ukrainian-1251/ERR_FTP_PUT_CREATED new file mode 100644 index 0000000000..7e180cddd5 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_PUT_CREATED @@ -0,0 +1,9 @@ + + +Êîìàíäà FTP PUT çàâåðøèëàñü óñï³øíî: Ôàéë ñòâîðåíèé + + +

Îïåðàö³ÿ çàâåðøèëàñü óñï³øíî

+

Ôàéë ñòâîðåíèé

+
+ diff --git a/errors/Ukrainian-1251/ERR_FTP_PUT_ERROR b/errors/Ukrainian-1251/ERR_FTP_PUT_ERROR new file mode 100644 index 0000000000..97e461044c --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_PUT_ERROR @@ -0,0 +1,26 @@ + + +ÏÎÌÈËÊÀ: Êîìàíäà FTP PUT/upload çàâåðøèëàñü íåâäàëî + + +

ÏÎÌÈËÊÀ

+

FTP PUT/upload çàâåðøèëàñü íåâäàëî

+
+

+ϳä ÷àñ äîñòàâêè ôàéëà çà àäðåñîþ: +%U +

+Squid ïîñëàâ íàñòóïíó FTP êîìàíäó: +


+        %f
+
+³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü +

+        %F
+
+

+Öå îçíà÷ຠùî: +

+Âàì ñë³ä ïåðåâ³ðèòè øëÿõ, ïðàâà äîñòóïó, â³ëüíå ì³ñöå ³ ï³ñëÿ öüîãî ñïðîáóâàòè çíîâó.
+
+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_FTP_PUT_MODIFIED b/errors/Ukrainian-1251/ERR_FTP_PUT_MODIFIED new file mode 100644 index 0000000000..ef8286dc36 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_PUT_MODIFIED @@ -0,0 +1,11 @@ + + +Êîìàíäà FTP PUT çàâåðøèëàñü óñï³øíî: Ôàéë îíîâëåíèé + + +

Îïåðàö³ÿ çàâåðøèëàñü óñï³øíî.

+

Ôàéë îíîâëåíèé

+
+

+

+ diff --git a/errors/Ukrainian-1251/ERR_FTP_UNAVAILABLE b/errors/Ukrainian-1251/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..b602401ea2 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_FTP_UNAVAILABLE @@ -0,0 +1,20 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +FTP ñåðâåð áóâ ïåðåãðóæåíèé +

+Squid ïîñëàâ íàñòóïíó FTP êîìàíäó: +

%f
+³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü +
%F
+
%g
+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. + diff --git a/errors/Ukrainian-1251/ERR_ICAP_FAILURE b/errors/Ukrainian-1251/ERR_ICAP_FAILURE new file mode 100644 index 0000000000..82b8b63d60 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_ICAP_FAILURE @@ -0,0 +1,33 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Ñèñòåìà ïîâ³äîìèëà: +

    %E
+ +

+Öå ìîæå îçíà÷àòè: +Äåÿê³ àñïåêòè ICAP ç'ºäíàííÿ íåñïðàâí³. Ìîæëèâ³ ïðîáëåìè: +

+

+ diff --git a/errors/Ukrainian-1251/ERR_INVALID_REQ b/errors/Ukrainian-1251/ERR_INVALID_REQ new file mode 100644 index 0000000000..028da1d7d7 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_INVALID_REQ @@ -0,0 +1,31 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Äåÿê³ àñïåêòè HTTP çàïèòó íåâ³ðí³. Ìîæëèâ³ ïðîáëåìè: +

+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_INVALID_RESP b/errors/Ukrainian-1251/ERR_INVALID_RESP new file mode 100644 index 0000000000..0d3b17fc2f --- /dev/null +++ b/errors/Ukrainian-1251/ERR_INVALID_RESP @@ -0,0 +1,28 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+The HTTP â³äïîâ³äíå ïîâ³äîìëåííÿ, îòðèìàíå â³ä ñåðâåðà +íå ìîæå áóòè âèçíà÷åíå àáî º íåïðàâèëüíî çôîðìîâàíèì. +Áóäü-ëàñêà, êîíòàêòóéòå ç àäì³í³ñòðàòîðîì ñàéòó. Âàø àäì³í³ñòðàòîð +êåøó ìîæå íàäàòè Âàì á³ëüø äåòàëüíó ³íôîðìàö³þ ïðî +äàíó ïîìèëêó, ÿêùî öå íåîáõ³äíî. + +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_INVALID_URL b/errors/Ukrainian-1251/ERR_INVALID_URL new file mode 100644 index 0000000000..dcb19b4303 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_INVALID_URL @@ -0,0 +1,30 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Äåÿê³ àñïåêòè çàïðîøåíîãî URL º íåïðàâèëüíèìè. Ìîæëèâ³ ïðîáëåìè: +

+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_LIFETIME_EXP b/errors/Ukrainian-1251/ERR_LIFETIME_EXP new file mode 100644 index 0000000000..87e8cfe95d --- /dev/null +++ b/errors/Ukrainian-1251/ERR_LIFETIME_EXP @@ -0,0 +1,24 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Squid çàâåðøèâ Âàø çàïèò ó çâ'ÿçêó ç ïåðåâèùåííÿì +ìàêñèìàëüíîãî ÷àñó ç'ºäíàííÿ. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_NO_RELAY b/errors/Ukrainian-1251/ERR_NO_RELAY new file mode 100644 index 0000000000..cac818cb97 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_NO_RELAY @@ -0,0 +1,23 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Äëÿ öüîãî êåøó íå âèçíà÷åíèé WAIS Relay host! Çâåðí³òüñÿ äî àäì³í³ñòðàòîðà. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_ONLY_IF_CACHED_MISS b/errors/Ukrainian-1251/ERR_ONLY_IF_CACHED_MISS new file mode 100644 index 0000000000..4bf4cb0497 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_ONLY_IF_CACHED_MISS @@ -0,0 +1,26 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Âû ïîñëàëè çàïèò ç äèðåêòèâîþ êåø-êîíòðîëþ only-if-cached. +Îá'ºêò íå áóâ çíàéäåíèé â êåø³, àáî â³í âèìàãຠîíîâëåííÿ, +ÿêå çàáîðîíåíî only-if-cached äèðåêòèâîþ. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_READ_ERROR b/errors/Ukrainian-1251/ERR_READ_ERROR new file mode 100644 index 0000000000..6fea0d5051 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_READ_ERROR @@ -0,0 +1,28 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Ñèñòåìà ïîâ³äîìèëà: +

    %E
+ +

+ϳä ÷àñ ÷èòàííÿ äàíèõ ç ìåðåæ³ âèíèêëà ïîìèëêà. Áóäü-ëàñêà, ïîâòîð³òü +Âàø çàïèò. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_READ_TIMEOUT b/errors/Ukrainian-1251/ERR_READ_TIMEOUT new file mode 100644 index 0000000000..3348572c46 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_READ_TIMEOUT @@ -0,0 +1,28 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Ñèñòåìà ïîâ³äîìèëà: +

    %E
+ +

+Ïåðåâèùåíèé ÷àñ î÷³êóâàííÿ â³äïîâ³ä³ ï³ä ÷àñ ÷èòàííÿ äàíèõ ç ìåðåæ³. Ìåðåæà +÷è ñåðâåð ìîæóòü íå ïðàöþâàòè ÷è áóòè ïåðåãðóæåíèìè. Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_SECURE_CONNECT_FAIL b/errors/Ukrainian-1251/ERR_SECURE_CONNECT_FAIL new file mode 100644 index 0000000000..0cbbe670e9 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_SECURE_CONNECT_FAIL @@ -0,0 +1,31 @@ + + +ERROR: The requested URL could not be retrieved + + +

ERROR

+

The requested URL could not be retrieved

+
+

+While trying to retrieve the URL: +%U +

+The following error was encountered: +

+ +

+The system returned: +

    %E
+ +

+This proxy and the remote host failed to negotiate a mutually acceptable +security settings for handling your request. It is possible that the remote +host does not support secure connections, or the proxy is not satisfied with +the host security credentials. + +

Your cache administrator is %w. diff --git a/errors/Ukrainian-1251/ERR_SHUTTING_DOWN b/errors/Ukrainian-1251/ERR_SHUTTING_DOWN new file mode 100644 index 0000000000..35ea961c1d --- /dev/null +++ b/errors/Ukrainian-1251/ERR_SHUTTING_DOWN @@ -0,0 +1,17 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+Öåé êåø â äàíèé ìîìåíò ÷àñó çíàõîäèòüñÿ â ïðîöåñ³ çóïèíêè ³ íå ìîæå îáñëóæèòè +âàø çàïèò. Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò ÷åðåç äåÿêèé ÷àñ çíîâó. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_SOCKET_FAILURE b/errors/Ukrainian-1251/ERR_SOCKET_FAILURE new file mode 100644 index 0000000000..11b1bfc36c --- /dev/null +++ b/errors/Ukrainian-1251/ERR_SOCKET_FAILURE @@ -0,0 +1,28 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Ñèñòåìà ïîâ³äîìèëà: +

    %E
+ +

+Squid íå ìîæå ñòâîðèòè TCP socket, ñêîð³ø çà âñå ÷åðåç äóæå âèñîêó çàãðóçêó ñåðâåðà. +Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_TOO_BIG b/errors/Ukrainian-1251/ERR_TOO_BIG new file mode 100644 index 0000000000..72de80b074 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_TOO_BIG @@ -0,0 +1,28 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_UNSUP_REQ b/errors/Ukrainian-1251/ERR_UNSUP_REQ new file mode 100644 index 0000000000..dfb8800b0a --- /dev/null +++ b/errors/Ukrainian-1251/ERR_UNSUP_REQ @@ -0,0 +1,24 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Squid íå ï³äòðèìóº âñ³ ìåòîäè çàïèò³â äëÿ óñ³õ ïðîòîêîë³â. +Íàïðèêëàä, äëÿ ïðîòîêîëó Gopher Âè íå ìîæåòå âèêîíàòè çàïèò POST. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_URN_RESOLVE b/errors/Ukrainian-1251/ERR_URN_RESOLVE new file mode 100644 index 0000000000..8e0ec33959 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_URN_RESOLVE @@ -0,0 +1,24 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URN íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

URL äëÿ çàïðîøåíîãî URN íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URN: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Íå âàðòî áàãàòî ÷îãî î÷³êóâàòè â³ä ö³º¿ òåõíîëî㳿 URNs íà %T :) +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/ERR_WRITE_ERROR b/errors/Ukrainian-1251/ERR_WRITE_ERROR new file mode 100644 index 0000000000..1ad3f4bd78 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_WRITE_ERROR @@ -0,0 +1,32 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Ñèñòåìà ïîâ³äîìèëà: +

    %E
+ +

+ϳä ÷àñ â³äïðàâëåííÿ ³íôîðìàö³¿ â ìåðåæó âèíèêëà ïîìèëêà. Áóäü-ëàñêà, ïîâòîð³òü +Âàø çàïèò +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. + + + + diff --git a/errors/Ukrainian-1251/ERR_ZERO_SIZE_OBJECT b/errors/Ukrainian-1251/ERR_ZERO_SIZE_OBJECT new file mode 100644 index 0000000000..73ef10bfc1 --- /dev/null +++ b/errors/Ukrainian-1251/ERR_ZERO_SIZE_OBJECT @@ -0,0 +1,23 @@ + + +ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé + + +

ÏÎÌÈËÊÀ

+

Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé

+
+

+ϳä ÷àñ äîñòàâêè URL: +%U +

+Âèíèêëà íàñòóïíà ïîìèëêà: +

+ +

+Squid íå îòðèìàâ áóäü-ÿêèõ äàíèõ äëÿ öüîãî çàïèòó. +

Âàøèì àäì³í³ñòðàòîðîì êåøó º %w. diff --git a/errors/Ukrainian-1251/README b/errors/Ukrainian-1251/README new file mode 100644 index 0000000000..8dafd52f15 --- /dev/null +++ b/errors/Ukrainian-1251/README @@ -0,0 +1,4 @@ +Thank you to + Ïåòðî Íåê + Vitaliy Matytsyn (main) +for creating these error pages in Ukrainian! diff --git a/errors/Ukrainian-koi8-u/ERR_ACCESS_DENIED b/errors/Ukrainian-koi8-u/ERR_ACCESS_DENIED new file mode 100644 index 0000000000..49f382af17 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_ACCESS_DENIED @@ -0,0 +1,25 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. + diff --git a/errors/Ukrainian-koi8-u/ERR_CACHE_ACCESS_DENIED b/errors/Ukrainian-koi8-u/ERR_CACHE_ACCESS_DENIED new file mode 100644 index 0000000000..88b76c650e --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_CACHE_ACCESS_DENIED @@ -0,0 +1,34 @@ + + +ðïíéìëá: äÏÓÔÕÐ ÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ + + + +

ðïíéìëá

+

äÏÓÔÕÐ ÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+

+ +

÷ÉÂÁÞÔÅ, ÁÌÅ ÷É ÎÅ ÍÏÖÅÔÅ ÚÁÐÒÏÓÉÔÉ: +

    %U
+Ú ÃØÏÇÏ ËÅÛÕ ÄÏ ÔÉÈ Ð¦Ò, ÐÏËÉ ÎÅ ÐÒÏÊÄÅÔÅ ÁÕÔÅÎÔÉÆ¦ËÁæÀ. +

+ +

+÷ÁÍ ÐÏÔÒ¦ÂÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Netscape ×ÅÒÓ¦§ 2.0 ÞÉ ×ÉÝÅ, ÁÂÏ Microsoft Internet +Explorer 3.0, ÁÂÏ HTTP/1.1 ÓÕͦÓÎÉÊ ÂÒÏÕÚÅÒ. âÕÄØ-ÌÁÓËÁ, Ú×'ÑÖ¦ÔØÓÑ +Ú ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ, ÑËÝÏ Õ ÷ÁÓ ×ÉÎÉËÌÉ ÔÒÕÄÎÏݦ +Ú ÁÕÔÅÎÔÉÆ¦ËÁæ¤À, ÁÂÏ ÚÍ¦Î¦ÔØ +÷ÁÛ ÐÁÒÏÌØ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ. +

diff --git a/errors/Ukrainian-koi8-u/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Ukrainian-koi8-u/ERR_CACHE_MGR_ACCESS_DENIED new file mode 100644 index 0000000000..eac1a26cf5 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_CACHE_MGR_ACCESS_DENIED @@ -0,0 +1,33 @@ + + +ðïíéìëá: äÏÓÔÕÐ ÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ + + + +

ðïíéìëá

+

äÏÓÔÕÐ ÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+

+ +

÷ÉÂÁÞÔÅ, ÷É ÎÅ ÍÏÖÅÔÅ ÚÁÐÒÏÓÉÔÉ: +

    %U
+Ú ÃØÏÇÏ ËÅÛ ÍÅÎÅÄÖÅÒÁ ÄÏ ÔÉÈ Ð¦Ò, ÐÏËÉ ÎÅ ÐÒÏÊÄÅÔÅ ÁÕÔÅÎÔÉÆ¦ËÁæÀ. +

+

+÷ÁÍ ÐÏÔÒ¦ÂÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Netscape ×ÅÒÓ¦§ 2.0 ÞÉ ×ÉÝÅ, ÁÂÏ Microsoft Internet +Explorer 3.0, ÁÂÏ HTTP/1.1 ÓÕͦÓÎÉÊ ÂÒÏÕÚÅÒ. âÕÄØ-ÌÁÓËÁ, Ú×'ÑÖ¦ÔØÓÑ +Ú ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ, ÑËÝÏ Õ ÷ÁÓ ×ÉÎÉËÌÉ ÔÒÕÄÎÏݦ +Ú ÁÕÔÅÎÔÉÆ¦ËÁæ¤À, Á ÑËÝÏ ÷É ¤ ÁÄͦΦÓÔÒÁÔÏÒÏÍ, +ÐÒÏÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁæÀ Squid ÐÏ ¦ÎÔÅÒÆÅÊÓÕ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ¦ ÐÅÒÅצÒÔÅ +ÖÕÒÎÁÌ ËÅÛÕ (cache log) ÎÁ ÐÒÅÄÍÅÔ Â¦ÌØÛ ÄÅÔÁÌØÎÉÈ ÐÏצÄÏÍÌÅÎØ ÐÒÏ ÐÏÍÉÌËÉ.

diff --git a/errors/Ukrainian-koi8-u/ERR_CANNOT_FORWARD b/errors/Ukrainian-koi8-u/ERR_CANNOT_FORWARD new file mode 100644 index 0000000000..710f4925b8 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_CANNOT_FORWARD @@ -0,0 +1,30 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+äÁÎÉÊ ÚÁÐÉÔ ÎÅ ÍÏÖÅ ÂÕÔÉ ÐÅÒÅÓÌÁÎÉÊ ÄÏ ÓÅÒ×ÅÒÁ-ÄÖÅÒÅÌÁ, ÞÉ ÄÏ ÂÕÄØ-ÑËÏÇÏ +Ú ×ÉÝÅÓÔÏÑÞÉÈ ËÅÛ¦×. îÁÊÂ¦ÌØÛ ×¦ÒÏǦÄÎÁ ÐÒÉÞÉÎÁ ÐÏÍÉÌËÉ: +

+

÷ÁÛÉÍ ËÅÛ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ¤ %w. + diff --git a/errors/Ukrainian-koi8-u/ERR_CONNECT_FAIL b/errors/Ukrainian-koi8-u/ERR_CONNECT_FAIL new file mode 100644 index 0000000000..a79d25439b --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_CONNECT_FAIL @@ -0,0 +1,27 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+óÉÓÔÅÍÁ ÐÏצÄÏÍÌѤ: +

    %E
+ +

+÷¦ÄÄÁÌÅΦ ÈÏÓÔ ÞÉ ÍÅÒÅÖÁ ΊצÄÐÏצÄÁÀÔØ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ Ó×¦Ê ÚÁÐÉÔ ÝÅ ÒÁÚ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_DNS_FAIL b/errors/Ukrainian-koi8-u/ERR_DNS_FAIL new file mode 100644 index 0000000000..9946e273e7 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_DNS_FAIL @@ -0,0 +1,32 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+îÅÍÏÖÌÉ×Ï ×ÉÚÎÁÞÉÔÉ IP ÁÄÒÅÓÕ ×ÕÚÌÁ +%H +
+ +

+DNS ÓÅÒ×ÅÒ ÐÏצÄÏÍÌѤ: +

+%z +
+ +

+ãÅ ÏÚÎÁÞÁ¤: +

+ ëÅÛÕ ÎÅ ×ÄÁÌÏÓÑ ×ÉÚÎÁÞÉÔÉ ¦Í'Ñ ÓÅÒ×ÅÒÁ, ×ËÁÚÁÎÅ × URL.
+ ðÅÒÅצÒÔÅ ÐÒÁ×ÉÌØÎ¦ÓÔØ ÎÁÐÉÓÁÎÎÑ ÁÄÒÅÓÕ.
+
+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. + diff --git a/errors/Ukrainian-koi8-u/ERR_ESI b/errors/Ukrainian-koi8-u/ERR_ESI new file mode 100644 index 0000000000..9f0e64bc98 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_ESI @@ -0,0 +1,28 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ïÂÒÏÂËÁ ESI ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ. +
+ +

+ESI ÐÒÏÃÅÓÏÒ ÐÏצÄÏÍÉ×: +

+%Z +
+ +

+ãÅ ÏÚÎÁÞÁ¤ ÝÏ: +

+ úÁͦÎÎÉË ÎÅ ÚÍ¦Ç ÏÂÒÏÂÉÔÉ ESI ÔÅÍÐÌÅÊÔ. âÕÄØ-ÌÁÓËÁ ÐÏצÄÏÍÔÅ ÐÒÏ ÃÀ ÐÏÍÉÌËÕ ×ÅÂÍÁÊÓÔÒÁ. 
+
+

÷ÁÛÉÍ ×ÅÂÍÁÊÓÔÒÏÍ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FORWARDING_DENIED b/errors/Ukrainian-koi8-u/ERR_FORWARDING_DENIED new file mode 100644 index 0000000000..16c27ee370 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FORWARDING_DENIED @@ -0,0 +1,24 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+ãÅÊ ËÅÛ ÎÅ ÐÅÒÅÓÉÌÁÔÉÍÅ ÷ÁÛ ÚÁÐÉÔ, ÔÏÍÕ ÝÏ ×¦Î ÎÁÍÁÇÁ¤ÔØÓÑ ×ÓÔÁÎÏ×ÉÔÉ ÂÒÁÔΦ צÄÎÏÓÉÎÉ (sibling relationship). +íÏÖÌÉ×Ï, Ë̦¤ÎÔ %i - ÎÅצÒÎÏ ÓËÏÎÆ¦ÇÕÒÏ×ÁÎÉÊ ËÅÛ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_DISABLED b/errors/Ukrainian-koi8-u/ERR_FTP_DISABLED new file mode 100644 index 0000000000..79d79d5d67 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_DISABLED @@ -0,0 +1,23 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+ãÅÊ ËÅÛ ÎŠЦÄÔÒÉÍÕ¤ ÐÒÏÔÏËÏÌ FTP. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_FAILURE b/errors/Ukrainian-koi8-u/ERR_FTP_FAILURE new file mode 100644 index 0000000000..39d6e98544 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_FAILURE @@ -0,0 +1,19 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL +×ÉÎÉËÌÁ ÐÏÍÉÌËÁ ÐÒÏÔÏËÏÌÕ FTP: +%U +

+Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ ËÏÍÁÎÄÕ FTP: +

%f
+¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצĨ +
%F
+
%g
+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_FORBIDDEN b/errors/Ukrainian-koi8-u/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..404ebcba18 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_FORBIDDEN @@ -0,0 +1,19 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +óÔÁÌÁÓØ ÎÅ×ÄÁÌÁ FTP ÁÕÔÅÎÔÉÆ¦ËÁÃ¦Ñ +

+Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ: +

%f
+¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצĨ +
%F
+
%g
+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_NOT_FOUND b/errors/Ukrainian-koi8-u/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..c4d1b0949b --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_NOT_FOUND @@ -0,0 +1,22 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+äÁÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ: +%U +

+Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ: +

%f
+¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצĨ +
%F
+
%g
+

+ãÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÌÉËÁÎÏ FTP ÁÄÒÅÓÏÀ Ú ÁÂÓÏÌÀÔÎÉÍ ÛÌÑÈÏÍ (ÑËÉÊ ÎÅ +צÄÐÏצÄÁ¤ ÓÔÁÎÄÁÒÔÕ RFC 1738). ÷ ÔÁËÏÍÕ ×ÉÐÁÄËÕ, ÆÁÊÌ ÍÏÖÅ ÂÕÔÉ +ÚÎÁÊÄÅÎÉÊ ÚÁ ÁÄÒÅÓÏÀ %B. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_PUT_CREATED b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_CREATED new file mode 100644 index 0000000000..9ff1f04a03 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_CREATED @@ -0,0 +1,9 @@ + + +ëÏÍÁÎÄÁ FTP PUT ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ: æÁÊÌ ÓÔ×ÏÒÅÎÉÊ + + +

ïÐÅÒÁÃ¦Ñ ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ

+

æÁÊÌ ÓÔ×ÏÒÅÎÉÊ

+
+ diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_PUT_ERROR b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_ERROR new file mode 100644 index 0000000000..4cf9a7762a --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_ERROR @@ -0,0 +1,26 @@ + + +ðïíéìëá: ëÏÍÁÎÄÁ FTP PUT/upload ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ + + +

ðïíéìëá

+

FTP PUT/upload ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ ÆÁÊÌÁ ÚÁ ÁÄÒÅÓÏÀ: +%U +

+Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ: +


+        %f
+
+¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצĨ +

+        %F
+
+

+ãÅ ÏÚÎÁÞÁ¤ ÝÏ: +

+÷ÁÍ ÓÌ¦Ä ÐÅÒÅצÒÉÔÉ ÛÌÑÈ, ÐÒÁ×Á ÄÏÓÔÕÐÕ, ×¦ÌØÎŠͦÓÃÅ ¦ ЦÓÌÑ ÃØÏÇÏ ÓÐÒÏÂÕ×ÁÔÉ ÚÎÏ×Õ.
+
+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_PUT_MODIFIED b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_MODIFIED new file mode 100644 index 0000000000..e0d35b74b0 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_MODIFIED @@ -0,0 +1,11 @@ + + +ëÏÍÁÎÄÁ FTP PUT ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ: æÁÊÌ ÏÎÏ×ÌÅÎÉÊ + + +

ïÐÅÒÁÃ¦Ñ ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ.

+

æÁÊÌ ÏÎÏ×ÌÅÎÉÊ

+
+

+

+ diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_UNAVAILABLE b/errors/Ukrainian-koi8-u/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..60d6eb0d13 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_FTP_UNAVAILABLE @@ -0,0 +1,20 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +FTP ÓÅÒ×ÅÒ ÂÕ× ÐÅÒÅÇÒÕÖÅÎÉÊ +

+Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ: +

%f
+¦ ÐÏÔ¦Í ÏÔÒÉÍÁ× ÔÁËÕ ×¦ÄÐÏצĨ +
%F
+
%g
+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. + diff --git a/errors/Ukrainian-koi8-u/ERR_ICAP_FAILURE b/errors/Ukrainian-koi8-u/ERR_ICAP_FAILURE new file mode 100644 index 0000000000..2871186c42 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_ICAP_FAILURE @@ -0,0 +1,33 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ: +

    %E
+ +

+ãÅ ÍÏÖÅ ÏÚÎÁÞÁÔÉ: +äÅÑ˦ ÁÓÐÅËÔÉ ICAP Ú'¤ÄÎÁÎÎÑ ÎÅÓÐÒÁ×Φ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ: +

+

+ diff --git a/errors/Ukrainian-koi8-u/ERR_INVALID_REQ b/errors/Ukrainian-koi8-u/ERR_INVALID_REQ new file mode 100644 index 0000000000..cd58aaa08b --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_INVALID_REQ @@ -0,0 +1,31 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+äÅÑ˦ ÁÓÐÅËÔÉ HTTP ÚÁÐÉÔÕ ÎÅצÒΦ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ: +

+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_INVALID_RESP b/errors/Ukrainian-koi8-u/ERR_INVALID_RESP new file mode 100644 index 0000000000..05fb47704c --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_INVALID_RESP @@ -0,0 +1,28 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+The HTTP צÄÐÏצÄÎÅ ÐÏצÄÏÍÌÅÎÎÑ, ÏÔÒÉÍÁÎÅ ×¦Ä ÓÅÒ×ÅÒÁ +ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉÚÎÁÞÅÎÅ ÁÂÏ ¤ ÎÅÐÒÁ×ÉÌØÎÏ ÚÆÏÒÍÏ×ÁÎÉÍ. +âÕÄØ-ÌÁÓËÁ, ËÏÎÔÁËÔÕÊÔÅ Ú ÁÄͦΦÓÔÒÁÔÏÒÏÍ ÓÁÊÔÕ. ÷ÁÛ ÁÄͦΦÓÔÒÁÔÏÒ +ËÅÛÕ ÍÏÖÅ ÎÁÄÁÔÉ ÷ÁÍ Â¦ÌØÛ ÄÅÔÁÌØÎÕ ¦ÎÆÏÒÍÁæÀ ÐÒÏ +ÄÁÎÕ ÐÏÍÉÌËÕ, ÑËÝÏ ÃÅ ÎÅÏÂȦÄÎÏ. + +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_INVALID_URL b/errors/Ukrainian-koi8-u/ERR_INVALID_URL new file mode 100644 index 0000000000..99800147ff --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_INVALID_URL @@ -0,0 +1,30 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+äÅÑ˦ ÁÓÐÅËÔÉ ÚÁÐÒÏÛÅÎÏÇÏ URL ¤ ÎÅÐÒÁ×ÉÌØÎÉÍÉ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ: +

+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_LIFETIME_EXP b/errors/Ukrainian-koi8-u/ERR_LIFETIME_EXP new file mode 100644 index 0000000000..a4bacf97e7 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_LIFETIME_EXP @@ -0,0 +1,24 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+Squid ÚÁ×ÅÒÛÉ× ÷ÁÛ ÚÁÐÉÔ Õ Ú×'ÑÚËÕ Ú ÐÅÒÅ×ÉÝÅÎÎÑÍ +ÍÁËÓÉÍÁÌØÎÏÇÏ ÞÁÓÕ Ú'¤ÄÎÁÎÎÑ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_NO_RELAY b/errors/Ukrainian-koi8-u/ERR_NO_RELAY new file mode 100644 index 0000000000..603391b36c --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_NO_RELAY @@ -0,0 +1,23 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+äÌÑ ÃØÏÇÏ ËÅÛÕ ÎÅ ×ÉÚÎÁÞÅÎÉÊ WAIS Relay host! ú×ÅÒÎ¦ÔØÓÑ ÄÏ ÁÄͦΦÓÔÒÁÔÏÒÁ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_ONLY_IF_CACHED_MISS b/errors/Ukrainian-koi8-u/ERR_ONLY_IF_CACHED_MISS new file mode 100644 index 0000000000..9bc794a59d --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_ONLY_IF_CACHED_MISS @@ -0,0 +1,26 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+÷Ù ÐÏÓÌÁÌÉ ÚÁÐÉÔ Ú ÄÉÒÅËÔÉ×ÏÀ ËÅÛ-ËÏÎÔÒÏÌÀ only-if-cached. +ïÂ'¤ËÔ ÎÅ ÂÕ× ÚÎÁÊÄÅÎÉÊ × ËÅÛ¦, ÁÂÏ ×¦Î ×ÉÍÁÇÁ¤ ÏÎÏ×ÌÅÎÎÑ, +ÑËÅ ÚÁÂÏÒÏÎÅÎÏ only-if-cached ÄÉÒÅËÔÉ×ÏÀ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_READ_ERROR b/errors/Ukrainian-koi8-u/ERR_READ_ERROR new file mode 100644 index 0000000000..f70f36fa16 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_READ_ERROR @@ -0,0 +1,28 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ: +

    %E
+ +

+ð¦Ä ÞÁÓ ÞÉÔÁÎÎÑ ÄÁÎÉÈ Ú ÍÅÒÅÖ¦ ×ÉÎÉËÌÁ ÐÏÍÉÌËÁ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ +÷ÁÛ ÚÁÐÉÔ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_READ_TIMEOUT b/errors/Ukrainian-koi8-u/ERR_READ_TIMEOUT new file mode 100644 index 0000000000..76b775918d --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_READ_TIMEOUT @@ -0,0 +1,28 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ: +

    %E
+ +

+ðÅÒÅ×ÉÝÅÎÉÊ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎÑ ×¦ÄÐÏצĦ Ð¦Ä ÞÁÓ ÞÉÔÁÎÎÑ ÄÁÎÉÈ Ú ÍÅÒÅÖ¦. íÅÒÅÖÁ +ÞÉ ÓÅÒ×ÅÒ ÍÏÖÕÔØ ÎÅ ÐÒÁÃÀ×ÁÔÉ ÞÉ ÂÕÔÉ ÐÅÒÅÇÒÕÖÅÎÉÍÉ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_SECURE_CONNECT_FAIL b/errors/Ukrainian-koi8-u/ERR_SECURE_CONNECT_FAIL new file mode 100644 index 0000000000..0cbbe670e9 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_SECURE_CONNECT_FAIL @@ -0,0 +1,31 @@ + + +ERROR: The requested URL could not be retrieved + + +

ERROR

+

The requested URL could not be retrieved

+
+

+While trying to retrieve the URL: +%U +

+The following error was encountered: +

+ +

+The system returned: +

    %E
+ +

+This proxy and the remote host failed to negotiate a mutually acceptable +security settings for handling your request. It is possible that the remote +host does not support secure connections, or the proxy is not satisfied with +the host security credentials. + +

Your cache administrator is %w. diff --git a/errors/Ukrainian-koi8-u/ERR_SHUTTING_DOWN b/errors/Ukrainian-koi8-u/ERR_SHUTTING_DOWN new file mode 100644 index 0000000000..3e9461aae7 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_SHUTTING_DOWN @@ -0,0 +1,17 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ãÅÊ ËÅÛ × ÄÁÎÉÊ ÍÏÍÅÎÔ ÞÁÓÕ ÚÎÁÈÏÄÉÔØÓÑ × ÐÒÏÃÅÓ¦ ÚÕÐÉÎËÉ ¦ ÎÅ ÍÏÖÅ ÏÂÓÌÕÖÉÔÉ +×ÁÛ ÚÁÐÉÔ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ ÞÅÒÅÚ ÄÅÑËÉÊ ÞÁÓ ÚÎÏ×Õ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_SOCKET_FAILURE b/errors/Ukrainian-koi8-u/ERR_SOCKET_FAILURE new file mode 100644 index 0000000000..1777b76d53 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_SOCKET_FAILURE @@ -0,0 +1,28 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ: +

    %E
+ +

+Squid ÎÅ ÍÏÖÅ ÓÔ×ÏÒÉÔÉ TCP socket, ÓËÏÒ¦Û ÚÁ ×ÓÅ ÞÅÒÅÚ ÄÕÖÅ ×ÉÓÏËÕ ÚÁÇÒÕÚËÕ ÓÅÒ×ÅÒÁ. +âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_TOO_BIG b/errors/Ukrainian-koi8-u/ERR_TOO_BIG new file mode 100644 index 0000000000..f4ae4d0458 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_TOO_BIG @@ -0,0 +1,28 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_UNSUP_REQ b/errors/Ukrainian-koi8-u/ERR_UNSUP_REQ new file mode 100644 index 0000000000..e8e2576f54 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_UNSUP_REQ @@ -0,0 +1,24 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+Squid ΊЦÄÔÒÉÍÕ¤ ×Ó¦ ÍÅÔÏÄÉ ÚÁÐÉÔ¦× ÄÌÑ ÕÓ¦È ÐÒÏÔÏËÏ̦×. +îÁÐÒÉËÌÁÄ, ÄÌÑ ÐÒÏÔÏËÏÌÕ Gopher ÷É ÎÅ ÍÏÖÅÔÅ ×ÉËÏÎÁÔÉ ÚÁÐÉÔ POST. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_URN_RESOLVE b/errors/Ukrainian-koi8-u/ERR_URN_RESOLVE new file mode 100644 index 0000000000..42a6922f43 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_URN_RESOLVE @@ -0,0 +1,24 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URN ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

URL ÄÌÑ ÚÁÐÒÏÛÅÎÏÇÏ URN ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URN: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+îÅ ×ÁÒÔÏ ÂÁÇÁÔÏ ÞÏÇÏ ÏÞ¦ËÕ×ÁÔÉ ×¦Ä Ã¦¤§ ÔÅÈÎÏÌÏǦ§ URNs ÎÁ %T :) +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/ERR_WRITE_ERROR b/errors/Ukrainian-koi8-u/ERR_WRITE_ERROR new file mode 100644 index 0000000000..ebcad88022 --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_WRITE_ERROR @@ -0,0 +1,32 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ: +

    %E
+ +

+ð¦Ä ÞÁÓ ×¦ÄÐÒÁ×ÌÅÎÎÑ ¦ÎÆÏÒÍÁæ§ × ÍÅÒÅÖÕ ×ÉÎÉËÌÁ ÐÏÍÉÌËÁ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ +÷ÁÛ ÚÁÐÉÔ +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. + + + + diff --git a/errors/Ukrainian-koi8-u/ERR_ZERO_SIZE_OBJECT b/errors/Ukrainian-koi8-u/ERR_ZERO_SIZE_OBJECT new file mode 100644 index 0000000000..2556a630fd --- /dev/null +++ b/errors/Ukrainian-koi8-u/ERR_ZERO_SIZE_OBJECT @@ -0,0 +1,23 @@ + + +ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ + + +

ðïíéìëá

+

úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ

+
+

+ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL: +%U +

+÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ: +

+ +

+Squid ÎÅ ÏÔÒÉÍÁ× ÂÕÄØ-ÑËÉÈ ÄÁÎÉÈ ÄÌÑ ÃØÏÇÏ ÚÁÐÉÔÕ. +

÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ %w. diff --git a/errors/Ukrainian-koi8-u/README b/errors/Ukrainian-koi8-u/README new file mode 100644 index 0000000000..0568e85372 --- /dev/null +++ b/errors/Ukrainian-koi8-u/README @@ -0,0 +1,4 @@ +Thank you to + ðÅÔÒÏ îÅË + Vitaliy Matytsyn (main) +for creating these error pages in Ukrainian! diff --git a/errors/Ukrainian-utf8/ERR_ACCESS_DENIED b/errors/Ukrainian-utf8/ERR_ACCESS_DENIED new file mode 100644 index 0000000000..e113691722 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_ACCESS_DENIED @@ -0,0 +1,25 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+

Вашим адміністратором кешу є %w. + diff --git a/errors/Ukrainian-utf8/ERR_CACHE_ACCESS_DENIED b/errors/Ukrainian-utf8/ERR_CACHE_ACCESS_DENIED new file mode 100644 index 0000000000..30f0b8ea79 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_CACHE_ACCESS_DENIED @@ -0,0 +1,34 @@ + + +ПОМИЛКА: Доступ до кешу заборонений + + + +

ПОМИЛКА

+

Доступ до кешу заборонений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+

+ +

Вибачте, але Ви не можете запросити: +

    %U
+з цього кешу до тих пір, поки не пройдете аутентифікацію. +

+ +

+Вам потрібно використовувати Netscape версії 2.0 чи вище, або Microsoft Internet +Explorer 3.0, або HTTP/1.1 сумісний броузер. Будь-ласка, зв'яжіться +з адміністратором кешу, якщо у Вас виникли труднощі +з аутентифікацією, або змініть +Ваш пароль по замовчуванню. +

diff --git a/errors/Ukrainian-utf8/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Ukrainian-utf8/ERR_CACHE_MGR_ACCESS_DENIED new file mode 100644 index 0000000000..3195ebdb19 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_CACHE_MGR_ACCESS_DENIED @@ -0,0 +1,33 @@ + + +ПОМИЛКА: Доступ до керування кешом заборонений + + + +

ПОМИЛКА

+

Доступ до керування кешом заборонений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+

+ +

Вибачте, Ви не можете запросити: +

    %U
+з цього кеш менеджера до тих пір, поки не пройдете аутентифікацію. +

+

+Вам потрібно використовувати Netscape версії 2.0 чи вище, або Microsoft Internet +Explorer 3.0, або HTTP/1.1 сумісний броузер. Будь-ласка, зв'яжіться +з адміністратором кешу, якщо у Вас виникли труднощі +з аутентифікацією, а якщо Ви є адміністратором, +прочитайте документацію Squid по інтерфейсу керування кешом і перевірте +журнал кешу (cache log) на предмет більш детальних повідомлень про помилки.

diff --git a/errors/Ukrainian-utf8/ERR_CANNOT_FORWARD b/errors/Ukrainian-utf8/ERR_CANNOT_FORWARD new file mode 100644 index 0000000000..b8d3b4deff --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_CANNOT_FORWARD @@ -0,0 +1,30 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Даний запит не може бути пересланий до сервера-джерела, чи до будь-якого +з вищестоячих кешів. Найбільш вірогідна причина помилки: +

+

Вашим кеш адміністратором є %w. + diff --git a/errors/Ukrainian-utf8/ERR_CONNECT_FAIL b/errors/Ukrainian-utf8/ERR_CONNECT_FAIL new file mode 100644 index 0000000000..9b0abbb297 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_CONNECT_FAIL @@ -0,0 +1,27 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Система повідомляє: +

    %E
+ +

+Віддалені хост чи мережа не відповідають. Будь-ласка, повторіть свій запит ще раз. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_DNS_FAIL b/errors/Ukrainian-utf8/ERR_DNS_FAIL new file mode 100644 index 0000000000..f4290aa669 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_DNS_FAIL @@ -0,0 +1,32 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+Неможливо визначити IP адресу вузла +%H +
+ +

+DNS сервер повідомляє: +

+%z +
+ +

+Це означає: +

+ Кешу не вдалося визначити ім'я сервера, вказане в URL.
+ Перевірте правильність написання адресу.
+
+

Вашим адміністратором кешу є %w. + diff --git a/errors/Ukrainian-utf8/ERR_ESI b/errors/Ukrainian-utf8/ERR_ESI new file mode 100644 index 0000000000..74006deac1 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_ESI @@ -0,0 +1,28 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+Обробка ESI завершилась невдало. +
+ +

+ESI процесор повідомив: +

+%Z +
+ +

+Це означає що: +

+ Замінник не зміг обробити ESI темплейт. Будь-ласка повідомте про цю помилку вебмайстра. 
+
+

Вашим вебмайстром є %w. diff --git a/errors/Ukrainian-utf8/ERR_FORWARDING_DENIED b/errors/Ukrainian-utf8/ERR_FORWARDING_DENIED new file mode 100644 index 0000000000..329c6bf4d7 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FORWARDING_DENIED @@ -0,0 +1,24 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Цей кеш не пересилатиме Ваш запит, тому що він намагається встановити братні відносини (sibling relationship). +Можливо, клієнт %i - невірно сконфігурований кеш. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_FTP_DISABLED b/errors/Ukrainian-utf8/ERR_FTP_DISABLED new file mode 100644 index 0000000000..26234bace3 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_DISABLED @@ -0,0 +1,23 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Цей кеш не підтримує протокол FTP. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_FTP_FAILURE b/errors/Ukrainian-utf8/ERR_FTP_FAILURE new file mode 100644 index 0000000000..63568a1ddb --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_FAILURE @@ -0,0 +1,19 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL +виникла помилка протоколу FTP: +%U +

+Squid послав наступну команду FTP: +

%f
+і потім отримав таку відповідь +
%F
+
%g
+

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_FTP_FORBIDDEN b/errors/Ukrainian-utf8/ERR_FTP_FORBIDDEN new file mode 100644 index 0000000000..d79a8c6d71 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_FORBIDDEN @@ -0,0 +1,19 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +Сталась невдала FTP аутентифікація +

+Squid послав наступну FTP команду: +

%f
+і потім отримав таку відповідь +
%F
+
%g
+

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_FTP_NOT_FOUND b/errors/Ukrainian-utf8/ERR_FTP_NOT_FOUND new file mode 100644 index 0000000000..f5488db76a --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_NOT_FOUND @@ -0,0 +1,22 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Даний URL не може бути доставлений: +%U +

+Squid послав наступну FTP команду: +

%f
+і потім отримав таку відповідь +
%F
+
%g
+

+Це може бути викликано FTP адресою з абсолютним шляхом (який не +відповідає стандарту RFC 1738). В такому випадку, файл може бути +знайдений за адресою %B. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_FTP_PUT_CREATED b/errors/Ukrainian-utf8/ERR_FTP_PUT_CREATED new file mode 100644 index 0000000000..9af5f98486 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_PUT_CREATED @@ -0,0 +1,9 @@ + + +Команда FTP PUT завершилась успішно: Файл створений + + +

Операція завершилась успішно

+

Файл створений

+
+ diff --git a/errors/Ukrainian-utf8/ERR_FTP_PUT_ERROR b/errors/Ukrainian-utf8/ERR_FTP_PUT_ERROR new file mode 100644 index 0000000000..fc5feecd6e --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_PUT_ERROR @@ -0,0 +1,26 @@ + + +ПОМИЛКА: Команда FTP PUT/upload завершилась невдало + + +

ПОМИЛКА

+

FTP PUT/upload завершилась невдало

+
+

+Під час доставки файла за адресою: +%U +

+Squid послав наступну FTP команду: +


+        %f
+
+і потім отримав таку відповідь +

+        %F
+
+

+Це означає що: +

+Вам слід перевірити шлях, права доступу, вільне місце і після цього спробувати знову.
+
+

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_FTP_PUT_MODIFIED b/errors/Ukrainian-utf8/ERR_FTP_PUT_MODIFIED new file mode 100644 index 0000000000..66e9f6ee91 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_PUT_MODIFIED @@ -0,0 +1,11 @@ + + +Команда FTP PUT завершилась успішно: Файл оновлений + + +

Операція завершилась успішно.

+

Файл оновлений

+
+

+

+ diff --git a/errors/Ukrainian-utf8/ERR_FTP_UNAVAILABLE b/errors/Ukrainian-utf8/ERR_FTP_UNAVAILABLE new file mode 100644 index 0000000000..7fc76932cd --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_FTP_UNAVAILABLE @@ -0,0 +1,20 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +FTP сервер був перегружений +

+Squid послав наступну FTP команду: +

%f
+і потім отримав таку відповідь +
%F
+
%g
+

Вашим адміністратором кешу є %w. + diff --git a/errors/Ukrainian-utf8/ERR_ICAP_FAILURE b/errors/Ukrainian-utf8/ERR_ICAP_FAILURE new file mode 100644 index 0000000000..b93029de87 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_ICAP_FAILURE @@ -0,0 +1,33 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Система повідомила: +

    %E
+ +

+Це може означати: +Деякі аспекти ICAP з'єднання несправні. Можливі проблеми: +

+

+ diff --git a/errors/Ukrainian-utf8/ERR_INVALID_REQ b/errors/Ukrainian-utf8/ERR_INVALID_REQ new file mode 100644 index 0000000000..10f21d8f6a --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_INVALID_REQ @@ -0,0 +1,31 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Деякі аспекти HTTP запиту невірні. Можливі проблеми: +

+

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_INVALID_RESP b/errors/Ukrainian-utf8/ERR_INVALID_RESP new file mode 100644 index 0000000000..3067790026 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_INVALID_RESP @@ -0,0 +1,28 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+The HTTP відповідне повідомлення, отримане від сервера +не може бути визначене або є неправильно зформованим. +Будь-ласка, контактуйте з адміністратором сайту. Ваш адміністратор +кешу може надати Вам більш детальну інформацію про +дану помилку, якщо це необхідно. + +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_INVALID_URL b/errors/Ukrainian-utf8/ERR_INVALID_URL new file mode 100644 index 0000000000..898c6af8a3 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_INVALID_URL @@ -0,0 +1,30 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Деякі аспекти запрошеного URL є неправильними. Можливі проблеми: +

+

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_LIFETIME_EXP b/errors/Ukrainian-utf8/ERR_LIFETIME_EXP new file mode 100644 index 0000000000..df7f880180 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_LIFETIME_EXP @@ -0,0 +1,24 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Squid завершив Ваш запит у зв'язку з перевищенням +максимального часу з'єднання. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_NO_RELAY b/errors/Ukrainian-utf8/ERR_NO_RELAY new file mode 100644 index 0000000000..0127520b5d --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_NO_RELAY @@ -0,0 +1,23 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Для цього кешу не визначений WAIS Relay host! Зверніться до адміністратора. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_ONLY_IF_CACHED_MISS b/errors/Ukrainian-utf8/ERR_ONLY_IF_CACHED_MISS new file mode 100644 index 0000000000..bf1404675e --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_ONLY_IF_CACHED_MISS @@ -0,0 +1,26 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Вы послали запит з директивою кеш-контролю only-if-cached. +Об'єкт не був знайдений в кеші, або він вимагає оновлення, +яке заборонено only-if-cached директивою. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_READ_ERROR b/errors/Ukrainian-utf8/ERR_READ_ERROR new file mode 100644 index 0000000000..d761a31638 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_READ_ERROR @@ -0,0 +1,28 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Система повідомила: +

    %E
+ +

+Під час читання даних з мережі виникла помилка. Будь-ласка, повторіть +Ваш запит. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_READ_TIMEOUT b/errors/Ukrainian-utf8/ERR_READ_TIMEOUT new file mode 100644 index 0000000000..d909be7416 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_READ_TIMEOUT @@ -0,0 +1,28 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Система повідомила: +

    %E
+ +

+Перевищений час очікування відповіді під час читання даних з мережі. Мережа +чи сервер можуть не працювати чи бути перегруженими. Будь-ласка, повторіть Ваш запит. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_SECURE_CONNECT_FAIL b/errors/Ukrainian-utf8/ERR_SECURE_CONNECT_FAIL new file mode 100644 index 0000000000..0cbbe670e9 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_SECURE_CONNECT_FAIL @@ -0,0 +1,31 @@ + + +ERROR: The requested URL could not be retrieved + + +

ERROR

+

The requested URL could not be retrieved

+
+

+While trying to retrieve the URL: +%U +

+The following error was encountered: +

+ +

+The system returned: +

    %E
+ +

+This proxy and the remote host failed to negotiate a mutually acceptable +security settings for handling your request. It is possible that the remote +host does not support secure connections, or the proxy is not satisfied with +the host security credentials. + +

Your cache administrator is %w. diff --git a/errors/Ukrainian-utf8/ERR_SHUTTING_DOWN b/errors/Ukrainian-utf8/ERR_SHUTTING_DOWN new file mode 100644 index 0000000000..90c9259afc --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_SHUTTING_DOWN @@ -0,0 +1,17 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+Цей кеш в даний момент часу знаходиться в процесі зупинки і не може обслужити +ваш запит. Будь-ласка, повторіть Ваш запит через деякий час знову. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_SOCKET_FAILURE b/errors/Ukrainian-utf8/ERR_SOCKET_FAILURE new file mode 100644 index 0000000000..a8dc0f04fb --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_SOCKET_FAILURE @@ -0,0 +1,28 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Система повідомила: +

    %E
+ +

+Squid не може створити TCP socket, скоріш за все через дуже високу загрузку сервера. +Будь-ласка, повторіть Ваш запит. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_TOO_BIG b/errors/Ukrainian-utf8/ERR_TOO_BIG new file mode 100644 index 0000000000..0ac5a85269 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_TOO_BIG @@ -0,0 +1,28 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_UNSUP_REQ b/errors/Ukrainian-utf8/ERR_UNSUP_REQ new file mode 100644 index 0000000000..6453b69355 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_UNSUP_REQ @@ -0,0 +1,24 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Squid не підтримує всі методи запитів для усіх протоколів. +Наприклад, для протоколу Gopher Ви не можете виконати запит POST. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_URN_RESOLVE b/errors/Ukrainian-utf8/ERR_URN_RESOLVE new file mode 100644 index 0000000000..43acf325b5 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_URN_RESOLVE @@ -0,0 +1,24 @@ + + +ПОМИЛКА: Запрошений URN не може бути доставлений + + +

ПОМИЛКА

+

URL для запрошеного URN не може бути доставлений

+
+

+Під час доставки URN: +%U +

+Виникла наступна помилка: +

+ +

+Не варто багато чого очікувати від цієї технології URNs на %T :) +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/ERR_WRITE_ERROR b/errors/Ukrainian-utf8/ERR_WRITE_ERROR new file mode 100644 index 0000000000..5e88d5cf30 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_WRITE_ERROR @@ -0,0 +1,32 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Система повідомила: +

    %E
+ +

+Під час відправлення інформації в мережу виникла помилка. Будь-ласка, повторіть +Ваш запит +

Вашим адміністратором кешу є %w. + + + + diff --git a/errors/Ukrainian-utf8/ERR_ZERO_SIZE_OBJECT b/errors/Ukrainian-utf8/ERR_ZERO_SIZE_OBJECT new file mode 100644 index 0000000000..118ed2d842 --- /dev/null +++ b/errors/Ukrainian-utf8/ERR_ZERO_SIZE_OBJECT @@ -0,0 +1,23 @@ + + +ПОМИЛКА: Запрошений URL не може бути доставлений + + +

ПОМИЛКА

+

Запрошений URL не може бути доставлений

+
+

+Під час доставки URL: +%U +

+Виникла наступна помилка: +

+ +

+Squid не отримав будь-яких даних для цього запиту. +

Вашим адміністратором кешу є %w. diff --git a/errors/Ukrainian-utf8/README b/errors/Ukrainian-utf8/README new file mode 100644 index 0000000000..c8c92cbc57 --- /dev/null +++ b/errors/Ukrainian-utf8/README @@ -0,0 +1,4 @@ +Thank you to + Петро Нек + Vitaliy Matytsyn (main) +for creating these error pages in Ukrainian! diff --git a/errors/list b/errors/list index 7232a1456c..ccde6aa4e4 100644 --- a/errors/list +++ b/errors/list @@ -2,23 +2,30 @@ ERR_ACCESS_DENIED ERR_CACHE_ACCESS_DENIED ERR_CACHE_MGR_ACCESS_DENIED ERR_CANNOT_FORWARD -ERR_CLIENT_ABORT ERR_CONNECT_FAIL ERR_DNS_FAIL +ERR_ESI ERR_FORWARDING_DENIED ERR_FTP_DISABLED ERR_FTP_FAILURE +ERR_FTP_FORBIDDEN +ERR_FTP_NOT_FOUND ERR_FTP_PUT_CREATED ERR_FTP_PUT_ERROR ERR_FTP_PUT_MODIFIED +ERR_FTP_UNAVAILABLE +ERR_ICAP_FAILURE ERR_INVALID_REQ +ERR_INVALID_RESP ERR_INVALID_URL ERR_LIFETIME_EXP ERR_NO_RELAY ERR_ONLY_IF_CACHED_MISS ERR_READ_ERROR ERR_READ_TIMEOUT +ERR_SHUTTING_DOWN ERR_SOCKET_FAILURE +ERR_TOO_BIG ERR_UNSUP_REQ ERR_URN_RESOLVE ERR_WRITE_ERROR diff --git a/helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c b/helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c index fa4b4836ce..08acc269ee 100755 --- a/helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c +++ b/helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c @@ -37,6 +37,9 @@ #include "spnegohelp.h" #endif +#ifndef HOST_NAME_MAX +#define HOST_NAME_MAX 256 +#endif #ifndef MAXHOSTNAMELEN #define MAXHOSTNAMELEN HOST_NAME_MAX #endif diff --git a/include/autoconf.h.in b/include/autoconf.h.in index 5a54db1b5e..0dd1013063 100644 --- a/include/autoconf.h.in +++ b/include/autoconf.h.in @@ -170,6 +170,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_GLIB_H +/* Define to 1 if you have the `glob' function. */ +#undef HAVE_GLOB + +/* Define to 1 if you have the header file. */ +#undef HAVE_GLOB_H + /* Define to 1 if you have the header file. */ #undef HAVE_GNUMALLOC_H diff --git a/include/config.h b/include/config.h index c468320310..d4bcd88aca 100644 --- a/include/config.h +++ b/include/config.h @@ -1,5 +1,5 @@ /* - * $Id: config.h,v 1.25 2007/09/20 11:07:53 amosjeffries Exp $ + * $Id: config.h,v 1.25.4.1 2008/02/29 18:30:01 serassio Exp $ * * AUTHOR: Duane Wessels * @@ -440,12 +440,22 @@ typedef union { */ #if WITH_VALGRIND #include +#undef VALGRIND_MAKE_NOACCESS +#undef VALGRIND_MAKE_WRITABLE +#undef VALGRIND_MAKE_READABLE +/* A little glue for older valgrind version prior to 3.2.0 */ +#ifndef VALGRIND_MAKE_MEM_NOACCESS +#define VALGRIND_MAKE_MEM_NOACCESS VALGRIND_MAKE_NOACCESS +#define VALGRIND_MAKE_MEM_UNDEFINED VALGRIND_MAKE_WRITABLE +#define VALGRIND_MAKE_MEM_DEFINED VALGRIND_MAKE_READABLE +#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE VALGRIND_CHECK_WRITABLE +#endif #else -#define VALGRIND_MAKE_NOACCESS(a,b) (0) -#define VALGRIND_MAKE_WRITABLE(a,b) (0) -#define VALGRIND_MAKE_READABLE(a,b) (0) -#define VALGRIND_CHECK_WRITABLE(a,b) (0) -#define VALGRIND_CHECK_READABLE(a,b) (0) +#define VALGRIND_MAKE_MEM_NOACCESS(a,b) (0) +#define VALGRIND_MAKE_MEM_UNDEFINED(a,b) (0) +#define VALGRIND_MAKE_MEM_DEFINED(a,b) (0) +#define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(a,b) (0) +#define VALGRIND_CHECK_MEM_IS_DEFINED(a,b) (0) #define VALGRIND_MALLOCLIKE_BLOCK(a,b,c,d) #define VALGRIND_FREELIKE_BLOCK(a,b) #define RUNNING_ON_VALGRIND 0 diff --git a/lib/MemPool.cc b/lib/MemPool.cc index 2c660f71da..a7a0ba822b 100644 --- a/lib/MemPool.cc +++ b/lib/MemPool.cc @@ -1,6 +1,6 @@ /* - * $Id: MemPool.cc,v 1.10 2007/11/13 23:25:33 rousskov Exp $ + * $Id: MemPool.cc,v 1.10.4.1 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: section 63 Low Level Memory Pool Management * AUTHOR: Alex Rousskov, Andres Kroonmaa, Robert Collins @@ -211,7 +211,7 @@ MemChunk::MemChunk(MemPool *aPool) for (int i = 1; i < pool->chunk_capacity; i++) { *Free = (void *) ((char *) Free + pool->obj_size); void **nextFree = (void **)*Free; - (void) VALGRIND_MAKE_NOACCESS(Free, pool->obj_size); + (void) VALGRIND_MAKE_MEM_NOACCESS(Free, pool->obj_size); Free = nextFree; } nextFreeChunk = pool->nextFreeChunk; @@ -277,7 +277,7 @@ MemPool::push(void *obj) Free = (void **)obj; *Free = freeCache; freeCache = obj; - (void) VALGRIND_MAKE_NOACCESS(obj, obj_size); + (void) VALGRIND_MAKE_MEM_NOACCESS(obj, obj_size); } /* @@ -294,7 +294,7 @@ MemPool::get() /* first, try cache */ if (freeCache) { Free = (void **)freeCache; - (void) VALGRIND_MAKE_READABLE(Free, obj_size); + (void) VALGRIND_MAKE_MEM_DEFINED(Free, obj_size); freeCache = *Free; *Free = NULL; return Free; @@ -317,7 +317,7 @@ MemPool::get() /* last free in this chunk, so remove us from perchunk freelist chain */ nextFreeChunk = chunk->nextFreeChunk; } - (void) VALGRIND_MAKE_READABLE(Free, obj_size); + (void) VALGRIND_MAKE_MEM_DEFINED(Free, obj_size); return Free; } @@ -557,7 +557,7 @@ void MemImplementingAllocator::free(void *obj) { assert(obj != NULL); - (void) VALGRIND_CHECK_WRITABLE(obj, obj_size); + (void) VALGRIND_CHECK_MEM_IS_ADDRESSABLE(obj, obj_size); deallocate(obj); ++free_calls; } @@ -602,10 +602,10 @@ MemPool::convertFreeCacheToChunkFreeCache() assert(splayLastResult == 0); assert(chunk->inuse_count > 0); chunk->inuse_count--; - (void) VALGRIND_MAKE_READABLE(Free, sizeof(void *)); + (void) VALGRIND_MAKE_MEM_DEFINED(Free, sizeof(void *)); freeCache = *(void **)Free; /* remove from global cache */ *(void **)Free = chunk->freeList; /* stuff into chunks freelist */ - (void) VALGRIND_MAKE_NOACCESS(Free, sizeof(void *)); + (void) VALGRIND_MAKE_MEM_NOACCESS(Free, sizeof(void *)); chunk->freeList = Free; chunk->lastref = squid_curtime; } diff --git a/lib/rfc2617.c b/lib/rfc2617.c index 0247879532..ba7bd9095a 100644 --- a/lib/rfc2617.c +++ b/lib/rfc2617.c @@ -13,7 +13,7 @@ /* - * $Id: rfc2617.c,v 1.12 2007/11/15 16:47:34 wessels Exp $ + * $Id: rfc2617.c,v 1.12.4.1 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: * AUTHOR: RFC 2617 & Robert Collins @@ -94,7 +94,7 @@ CvtBin(const HASHHEX Hex, HASH Bin) else Bin[i / 2] |= n; } - for (; i <= HASHHEXLEN; i++) { + for (i = i / 2; i < HASHLEN; i++) { Bin[i] = '\0'; } } diff --git a/src/ACLChecklist.cc b/src/ACLChecklist.cc index f5d0181949..5a472f13a1 100644 --- a/src/ACLChecklist.cc +++ b/src/ACLChecklist.cc @@ -1,5 +1,5 @@ /* - * $Id: ACLChecklist.cc,v 1.42 2007/09/01 05:56:37 amosjeffries Exp $ + * $Id: ACLChecklist.cc,v 1.42.4.1 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -394,12 +394,9 @@ ACLChecklist::~ACLChecklist() HTTPMSGUNLOCK(reply); - /* - * DPW 2007-05-08 - * If this fails, then we'll need a backup UNLOCK call in the - * destructor. - */ - assert(auth_user_request == NULL); + // no auth_user_request in builds without any Authentication configured + if (auth_user_request) + AUTHUSERREQUESTUNLOCK(auth_user_request, "ACLChecklist destructor"); conn_ = NULL; diff --git a/src/ACLDestinationDomain.cc b/src/ACLDestinationDomain.cc index 68739f53bb..a25d1521d9 100644 --- a/src/ACLDestinationDomain.cc +++ b/src/ACLDestinationDomain.cc @@ -1,5 +1,5 @@ /* - * $Id: ACLDestinationDomain.cc,v 1.15 2007/11/03 04:49:53 wessels Exp $ + * $Id: ACLDestinationDomain.cc,v 1.15.4.1 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -76,6 +76,8 @@ ACLStrategised ACLDestinationDomain::RegexRegistryEntry_(new ACLRe int ACLDestinationDomainStrategy::match (ACLData * &data, ACLChecklist *checklist) { + assert(checklist != NULL && checklist->request != NULL); + const ipcache_addrs *ia = NULL; const char *fqdn = NULL; diff --git a/src/ACLMyPortName.cc b/src/ACLMyPortName.cc new file mode 100644 index 0000000000..094d290d19 --- /dev/null +++ b/src/ACLMyPortName.cc @@ -0,0 +1,63 @@ + +/* + * $Id: ACLMyPortName.cc,v 1.2.6.1 2008/02/29 18:30:02 serassio Exp $ + * + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + * + * Copyright (c) 2003, Robert Collins + */ + +#include "squid.h" +#include "ACLMyPortName.h" +#include "ACLStringData.h" +#include "ACLChecklist.h" + +/* explicit template instantiation required for some systems */ + +template class ACLStrategised; + +ACL::Prototype ACLMyPortName::RegistryProtoype(&ACLMyPortName::RegistryEntry_, "myportname"); + +ACLStrategised ACLMyPortName::RegistryEntry_(new ACLStringData, ACLMyPortNameStrategy::Instance(), "myportname"); + +int +ACLMyPortNameStrategy::match (ACLData * &data, ACLChecklist *checklist) +{ + if (checklist->conn() != NULL) + return data->match (checklist->conn()->port->name); + return 0; +} + +ACLMyPortNameStrategy * +ACLMyPortNameStrategy::Instance() +{ + return &Instance_; +} + +ACLMyPortNameStrategy ACLMyPortNameStrategy::Instance_; diff --git a/src/ACLMyPortName.h b/src/ACLMyPortName.h new file mode 100644 index 0000000000..1743e5ca35 --- /dev/null +++ b/src/ACLMyPortName.h @@ -0,0 +1,67 @@ + +/* + * $Id: ACLMyPortName.h,v 1.1.6.1 2008/02/29 18:30:02 serassio Exp $ + * + * + * SQUID Web Proxy Cache http://www.squid-cache.org/ + * ---------------------------------------------------------- + * + * Squid is the result of efforts by numerous individuals from + * the Internet community; see the CONTRIBUTORS file for full + * details. Many organizations have provided support for Squid's + * development; see the SPONSORS file for full details. Squid is + * Copyrighted (C) 2001 by the Regents of the University of + * California; see the COPYRIGHT file for full details. Squid + * incorporates software developed and/or copyrighted by other + * sources; see the CREDITS file for full details. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. + * + * + * Copyright (c) 2003, Robert Collins + */ + +#ifndef SQUID_ACLMYPORTNAME_H +#define SQUID_ACLMYPORTNAME_H +#include "ACLStrategy.h" +#include "ACLStrategised.h" + +class ACLMyPortNameStrategy : public ACLStrategy +{ + +public: + virtual int match (ACLData * &, ACLChecklist *); + static ACLMyPortNameStrategy *Instance(); + /* Not implemented to prevent copies of the instance. */ + /* Not private to prevent brain dead g+++ warnings about + * private constructors with no friends */ + ACLMyPortNameStrategy(ACLMyPortNameStrategy const &); + +private: + static ACLMyPortNameStrategy Instance_; + ACLMyPortNameStrategy(){} + + ACLMyPortNameStrategy&operator=(ACLMyPortNameStrategy const &); +}; + +class ACLMyPortName +{ + +private: + static ACL::Prototype RegistryProtoype; + static ACLStrategised RegistryEntry_; +}; + +#endif /* SQUID_ACLMYPORTNAME_H */ diff --git a/src/ESI.cc b/src/ESI.cc index c008d84762..09003a5918 100644 --- a/src/ESI.cc +++ b/src/ESI.cc @@ -1,6 +1,6 @@ /* - * $Id: ESI.cc,v 1.26.4.2 2008/01/20 19:39:26 serassio Exp $ + * $Id: ESI.cc,v 1.26.4.3 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -1566,7 +1566,7 @@ esiLiteral::esiLiteral(ESIContext *context, const char *s, int numberOfCharacter assert (s); buffer = new ESISegment; ESISegment::Pointer local = buffer; - off_t start = 0; + size_t start = 0; int remainingCharacters = numberOfCharacters; while (remainingCharacters > 0) { diff --git a/src/ESIContext.h b/src/ESIContext.h index 240ab3af81..d96a46caef 100644 --- a/src/ESIContext.h +++ b/src/ESIContext.h @@ -1,5 +1,5 @@ /* - * $Id: ESIContext.h,v 1.4 2003/08/04 22:14:40 robertc Exp $ + * $Id: ESIContext.h,v 1.4.6.1 2008/02/29 18:30:02 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -133,8 +133,8 @@ int detached: * for some reason */ size_t outbound_offset; - off_t readpos; /* the logical position we are reading from */ - off_t pos; /* the logical position of outbound_offset in the data stream */ + int64_t readpos; /* the logical position we are reading from */ + int64_t pos; /* the logical position of outbound_offset in the data stream */ class ParserState { diff --git a/src/ESIInclude.cc b/src/ESIInclude.cc index e32a9e8cb9..373c24d5ad 100644 --- a/src/ESIInclude.cc +++ b/src/ESIInclude.cc @@ -1,6 +1,6 @@ /* - * $Id: ESIInclude.cc,v 1.14.4.2 2008/01/20 19:39:26 serassio Exp $ + * $Id: ESIInclude.cc,v 1.14.4.3 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: section 86 ESI processing * AUTHOR: Robert Collins @@ -320,7 +320,7 @@ void ESIInclude::prepareRequestHeaders(HttpHeader &tempheaders, ESIVarState *vars) { tempheaders.update (&vars->header(), NULL); - tempheaders.removeConnectionHeaderEntries(); + tempheaders.removeHopByHopEntries(); } diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index 9e5b886706..c0beafa35a 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -1,6 +1,6 @@ /* - * $Id: HttpHeader.cc,v 1.138 2007/11/26 13:09:55 hno Exp $ + * $Id: HttpHeader.cc,v 1.138.4.1 2008/02/29 18:30:02 serassio Exp $ * * DEBUG: section 55 HTTP Header * AUTHOR: Alex Rousskov @@ -236,6 +236,12 @@ static http_hdr_type RequestHeadersArr[] = HDR_USER_AGENT, HDR_X_FORWARDED_FOR, HDR_SURROGATE_CAPABILITY }; +static http_hdr_type HopByHopHeadersArr[] = + { + HDR_CONNECTION, HDR_KEEP_ALIVE, HDR_PROXY_AUTHENTICATE, HDR_PROXY_AUTHORIZATION, + HDR_TE, HDR_TRAILERS, HDR_TRANSFER_ENCODING, HDR_UPGRADE + }; + /* header accounting */ static HttpHeaderStat HttpHeaderStats[] = { @@ -1762,6 +1768,18 @@ HttpHeader::hasByNameListMember(const char *name, const char *member, const char return result; } +void +HttpHeader::removeHopByHopEntries() +{ + removeConnectionHeaderEntries(); + + int count = countof(HopByHopHeadersArr); + + for (int i=0; i entries; /* parsed fields in raw format */ HttpHeaderMask mask; /* bit set <=> entry present */ http_hdr_owner_type owner; /* request or reply */ int len; /* length when packed, not counting terminating '\0' */ +protected: + void removeConnectionHeaderEntries(); + private: HttpHeaderEntry *findLastEntry(http_hdr_type id) const; // Make it non-copyable. Our destructor is a bit nasty... diff --git a/src/ICAP/ICAPModXact.cc b/src/ICAP/ICAPModXact.cc index 90622d11eb..b06cecb8de 100644 --- a/src/ICAP/ICAPModXact.cc +++ b/src/ICAP/ICAPModXact.cc @@ -1085,6 +1085,16 @@ void ICAPModXact::makeRequestHeaders(MemBuf &buf) if (!TheICAPConfig.reuse_connections) buf.Printf("Connection: close\r\n"); + // we must forward "Proxy-Authenticate" and "Proxy-Authorization" + // as ICAP headers. + if (virgin.header->header.has(HDR_PROXY_AUTHENTICATE)) + buf.Printf("Proxy-Authenticate: %s\r\n", + virgin.header->header.getByName("Proxy-Authenticate").buf()); + + if (virgin.header->header.has(HDR_PROXY_AUTHORIZATION)) + buf.Printf("Proxy-Authorization: %s\r\n", + virgin.header->header.getByName("Proxy-Authorization").buf()); + buf.Printf("Encapsulated: "); MemBuf httpBuf; @@ -1173,8 +1183,38 @@ void ICAPModXact::encapsulateHead(MemBuf &icapBuf, const char *section, MemBuf & // update ICAP header icapBuf.Printf("%s=%d, ", section, (int) httpBuf.contentSize()); - // pack HTTP head - packHead(httpBuf, head); + // begin cloning + HttpMsg *headClone = NULL; + + if (const HttpRequest* old_request = dynamic_cast(head)) { + HttpRequest* new_request = new HttpRequest; + urlParse(old_request->method, old_request->canonical,new_request); + new_request->http_ver = old_request->http_ver; + inheritVirginProperties(*new_request, *old_request); + headClone = new_request; + } + else if (const HttpReply *old_reply = dynamic_cast(head)) { + HttpReply* new_reply = new HttpReply; + new_reply->sline = old_reply->sline; + headClone = new_reply; + } + + Must(headClone); + + HttpHeaderPos pos = HttpHeaderInitPos; + HttpHeaderEntry* p_head_entry = NULL; + while (NULL != (p_head_entry = head->header.getEntry(&pos)) ) + headClone->header.addEntry(p_head_entry->clone()); + + // end cloning + + // remove all hop-by-hop headers from the clone + headClone->header.removeHopByHopEntries(); + + // pack polished HTTP header + packHead(httpBuf, headClone); + + delete headClone; } void ICAPModXact::packHead(MemBuf &httpBuf, const HttpMsg *head) diff --git a/src/Makefile.am b/src/Makefile.am index d4775064a9..e0132c0ee5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.am,v 1.193 2007/10/31 04:52:15 amosjeffries Exp $ +# $Id: Makefile.am,v 1.193.4.1 2008/02/29 18:30:02 serassio Exp $ # # Uncomment and customize the following to suit your needs: # @@ -329,6 +329,8 @@ squid_ACLSOURCES = \ ACLMyIP.h \ ACLMyPort.cc \ ACLMyPort.h \ + ACLMyPortName.cc \ + ACLMyPortName.h \ ACLProtocol.cc \ ACLProtocol.h \ ACLProtocolData.cc \ diff --git a/src/Makefile.in b/src/Makefile.in index 860bc44670..ef84d85402 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -17,7 +17,7 @@ # # Makefile for the Squid Object Cache server # -# $Id: Makefile.in,v 1.447.4.2 2007/12/27 20:37:46 serassio Exp $ +# $Id: Makefile.in,v 1.447.4.3 2008/02/29 18:30:03 serassio Exp $ # # Uncomment and customize the following to suit your needs: # @@ -186,10 +186,10 @@ am__squid_SOURCES_DIST = access_log.cc AccessLogEntry.h acl.cc \ ACLMaxConnection.cc ACLMaxConnection.h ACLMaxUserIP.cc \ ACLMaxUserIP.h ACLMethod.cc ACLMethod.h ACLMethodData.cc \ ACLMethodData.h ACLMyIP.cc ACLMyIP.h ACLMyPort.cc ACLMyPort.h \ - ACLProtocol.cc ACLProtocol.h ACLProtocolData.cc \ - ACLProtocolData.h ACLProxyAuth.cc ACLProxyAuth.h ACLReferer.cc \ - ACLReferer.h ACLRegexData.cc ACLRegexData.h \ - ACLReplyHeaderStrategy.h ACLReplyMIMEType.cc \ + ACLMyPortName.cc ACLMyPortName.h ACLProtocol.cc ACLProtocol.h \ + ACLProtocolData.cc ACLProtocolData.h ACLProxyAuth.cc \ + ACLProxyAuth.h ACLReferer.cc ACLReferer.h ACLRegexData.cc \ + ACLRegexData.h ACLReplyHeaderStrategy.h ACLReplyMIMEType.cc \ ACLReplyMIMEType.h ACLHTTPRepHeader.cc ACLHTTPRepHeader.h \ ACLHTTPReqHeader.cc ACLHTTPReqHeader.h \ ACLRequestHeaderStrategy.h ACLRequestMIMEType.cc \ @@ -277,16 +277,16 @@ am__objects_6 = $(am__objects_5) ACLASN.$(OBJEXT) ACLBrowser.$(OBJEXT) \ ACLIntRange.$(OBJEXT) ACLIP.$(OBJEXT) \ ACLMaxConnection.$(OBJEXT) ACLMaxUserIP.$(OBJEXT) \ ACLMethod.$(OBJEXT) ACLMethodData.$(OBJEXT) ACLMyIP.$(OBJEXT) \ - ACLMyPort.$(OBJEXT) ACLProtocol.$(OBJEXT) \ - ACLProtocolData.$(OBJEXT) ACLProxyAuth.$(OBJEXT) \ - ACLReferer.$(OBJEXT) ACLRegexData.$(OBJEXT) \ - ACLReplyMIMEType.$(OBJEXT) ACLHTTPRepHeader.$(OBJEXT) \ - ACLHTTPReqHeader.$(OBJEXT) ACLRequestMIMEType.$(OBJEXT) \ - ACLSourceDomain.$(OBJEXT) ACLSourceIP.$(OBJEXT) \ - ACLStrategised.$(OBJEXT) ACLStringData.$(OBJEXT) \ - ACLTime.$(OBJEXT) ACLTimeData.$(OBJEXT) ACLUrl.$(OBJEXT) \ - ACLUrlPath.$(OBJEXT) ACLUrlPort.$(OBJEXT) \ - ACLUserData.$(OBJEXT) + ACLMyPort.$(OBJEXT) ACLMyPortName.$(OBJEXT) \ + ACLProtocol.$(OBJEXT) ACLProtocolData.$(OBJEXT) \ + ACLProxyAuth.$(OBJEXT) ACLReferer.$(OBJEXT) \ + ACLRegexData.$(OBJEXT) ACLReplyMIMEType.$(OBJEXT) \ + ACLHTTPRepHeader.$(OBJEXT) ACLHTTPReqHeader.$(OBJEXT) \ + ACLRequestMIMEType.$(OBJEXT) ACLSourceDomain.$(OBJEXT) \ + ACLSourceIP.$(OBJEXT) ACLStrategised.$(OBJEXT) \ + ACLStringData.$(OBJEXT) ACLTime.$(OBJEXT) \ + ACLTimeData.$(OBJEXT) ACLUrl.$(OBJEXT) ACLUrlPath.$(OBJEXT) \ + ACLUrlPort.$(OBJEXT) ACLUserData.$(OBJEXT) am__objects_7 = comm_select.$(OBJEXT) comm_select_win32.$(OBJEXT) \ comm_poll.$(OBJEXT) comm_epoll.$(OBJEXT) comm_kqueue.$(OBJEXT) am__objects_8 = delay_pools.$(OBJEXT) DelayId.$(OBJEXT) \ @@ -1968,6 +1968,8 @@ squid_ACLSOURCES = \ ACLMyIP.h \ ACLMyPort.cc \ ACLMyPort.h \ + ACLMyPortName.cc \ + ACLMyPortName.h \ ACLProtocol.cc \ ACLProtocol.h \ ACLProtocolData.cc \ @@ -4628,6 +4630,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLMethodData.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLMyIP.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLMyPort.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLMyPortName.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLProtocol.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLProtocolData.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ACLProxyAuth.Po@am__quote@ diff --git a/src/Mem.h b/src/Mem.h index 22f7d44c7b..76cc02879c 100644 --- a/src/Mem.h +++ b/src/Mem.h @@ -1,6 +1,6 @@ /* - * $Id: Mem.h,v 1.4 2006/05/29 00:15:01 robertc Exp $ + * $Id: Mem.h,v 1.4.6.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 13 High Level Memory Pool Management * AUTHOR: Harvest Derived @@ -47,6 +47,7 @@ class Mem public: static void Init(); + static void Report(); static void RegisterWithCacheManager(CacheManager & manager); static void Stats(StoreEntry *); static void CleanIdlePools(void *unused); diff --git a/src/Server.h b/src/Server.h index eef3f5d2b8..a9bc2800b0 100644 --- a/src/Server.h +++ b/src/Server.h @@ -1,6 +1,6 @@ /* - * $Id: Server.h,v 1.10 2007/09/27 14:34:06 rousskov Exp $ + * $Id: Server.h,v 1.10.4.1 2008/02/29 18:30:03 serassio Exp $ * * AUTHOR: Duane Wessels * @@ -163,7 +163,7 @@ protected: size_t replyBodySpace(size_t space = 4096 * 10); // These should be private - off_t currentOffset; // Our current offset in the StoreEntry + int64_t currentOffset; // Our current offset in the StoreEntry MemBuf *responseBodyBuffer; // Data temporarily buffered for ICAP public: // should not be diff --git a/src/SquidString.h b/src/SquidString.h index c2f371d2b2..bd704f96e7 100644 --- a/src/SquidString.h +++ b/src/SquidString.h @@ -1,6 +1,6 @@ /* - * $Id: SquidString.h,v 1.12 2007/11/04 23:59:51 amosjeffries Exp $ + * $Id: SquidString.h,v 1.12.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 67 String * AUTHOR: Duane Wessels @@ -36,6 +36,8 @@ #ifndef SQUID_STRING_H #define SQUID_STRING_H +#include "config.h" + /* forward decls */ class CacheManager; diff --git a/src/Store.h b/src/Store.h index 4f363d211a..bfffa1d0f6 100644 --- a/src/Store.h +++ b/src/Store.h @@ -1,6 +1,6 @@ /* - * $Id: Store.h,v 1.40 2007/11/18 17:19:35 serassio Exp $ + * $Id: Store.h,v 1.40.4.1 2008/02/29 18:30:03 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -301,9 +301,6 @@ private: typedef RefCount StorePointer; SQUIDCEXTERN size_t storeEntryInUse(); -#if UNUSED_CODE_20070420 -SQUIDCEXTERN off_t storeLowestMemReaderOffset(const StoreEntry * entry); -#endif SQUIDCEXTERN const char *storeEntryFlags(const StoreEntry *); extern void storeEntryReplaceObject(StoreEntry *, HttpReply *); diff --git a/src/StoreMetaUnpacker.cc b/src/StoreMetaUnpacker.cc index d0d77cf5ec..b9abf6b8f8 100644 --- a/src/StoreMetaUnpacker.cc +++ b/src/StoreMetaUnpacker.cc @@ -1,6 +1,6 @@ /* - * $Id: StoreMetaUnpacker.cc,v 1.5.6.1 2008/02/24 12:41:29 serassio Exp $ + * $Id: StoreMetaUnpacker.cc,v 1.5.6.2 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 20 Storage Manager Swapfile Unpacker * AUTHOR: Robert Collins @@ -37,7 +37,7 @@ #include "StoreMetaUnpacker.h" #include "StoreMeta.h" -off_t const StoreMetaUnpacker::MinimumBufferLength = sizeof(char) + sizeof(int); +int const StoreMetaUnpacker::MinimumBufferLength = sizeof(char) + sizeof(int); bool StoreMetaUnpacker::isBufferSane() diff --git a/src/StoreMetaUnpacker.h b/src/StoreMetaUnpacker.h index 8cc261e82c..c8db344497 100644 --- a/src/StoreMetaUnpacker.h +++ b/src/StoreMetaUnpacker.h @@ -1,6 +1,6 @@ /* - * $Id: StoreMetaUnpacker.h,v 1.2 2003/02/21 22:50:06 robertc Exp $ + * $Id: StoreMetaUnpacker.h,v 1.2.6.1 2008/02/29 18:30:03 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -45,7 +45,7 @@ public: bool isBufferSane(); private: - static off_t const MinimumBufferLength; + static int const MinimumBufferLength; void getBufferLength(); void getType(); @@ -57,7 +57,7 @@ private: char const * const buf; ssize_t buflen; int *hdr_len; - off_t position; + int position; char type; int length; StoreMeta **tail; diff --git a/src/String.cci b/src/String.cci index ccc48f4ac0..c65b70b15c 100644 --- a/src/String.cci +++ b/src/String.cci @@ -1,6 +1,6 @@ /* - * $Id: String.cci,v 1.10 2007/11/04 23:59:52 amosjeffries Exp $ + * $Id: String.cci,v 1.10.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 67 String * AUTHOR: Duane Wessels @@ -33,6 +33,8 @@ * */ +#include "assert.h" + String::String() : size_(0), len_(0), buf_ (NULL) { #if DEBUGSTRINGS @@ -150,6 +152,8 @@ String::cut(size_t newLength) if(newLength < 0 || newLength > len_) return; len_ = newLength; + + if(len_ == 0 && buf_ == NULL) return; // buf_ may be NULL on zero-length strings. buf_[newLength] = '\0'; } diff --git a/src/asn.cc b/src/asn.cc index a533f2dd11..8e79947715 100644 --- a/src/asn.cc +++ b/src/asn.cc @@ -1,6 +1,6 @@ /* - * $Id: asn.cc,v 1.115 2007/09/21 11:41:52 amosjeffries Exp $ + * $Id: asn.cc,v 1.115.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 53 AS Number handling * AUTHOR: Duane Wessels, Kostas Anagnostakis @@ -89,7 +89,7 @@ struct ASState store_client *sc; HttpRequest *request; int as_number; - off_t offset; + int64_t offset; int reqofs; char reqbuf[AS_REQBUF_SZ]; bool dataRead; @@ -299,7 +299,7 @@ asHandleReply(void *data, StoreIOBuffer result) */ s = buf; - while (s - buf < (off_t)(result.length + asState->reqofs) && *s != '\0') { + while ((size_t)(s - buf) < result.length + asState->reqofs && *s != '\0') { while (*s && xisspace(*s)) s++; diff --git a/src/auth/digest/auth_digest.cc b/src/auth/digest/auth_digest.cc index 8e6a93148e..b20d937562 100644 --- a/src/auth/digest/auth_digest.cc +++ b/src/auth/digest/auth_digest.cc @@ -1,6 +1,6 @@ /* - * $Id: auth_digest.cc,v 1.59 2007/08/27 12:50:45 hno Exp $ + * $Id: auth_digest.cc,v 1.59.4.1 2008/02/29 18:30:05 serassio Exp $ * * DEBUG: section 29 Authenticator * AUTHOR: Robert Collins @@ -666,6 +666,7 @@ AuthDigestUserRequest::authenticate(HttpRequest * request, ConnStateData::Pointe } } else { credentials(Failed); + digest_request->flags.invalid_password = 1; digest_request->setDenyMessage("Incorrect password"); return; } @@ -673,7 +674,6 @@ AuthDigestUserRequest::authenticate(HttpRequest * request, ConnStateData::Pointe /* check for stale nonce */ if (!authDigestNonceIsValid(digest_request->nonce, digest_request->nc)) { debugs(29, 3, "authenticateDigestAuthenticateuser: user '" << digest_user->username() << "' validated OK but nonce stale"); - digest_request->flags.nonce_stale = 1; credentials(Failed); digest_request->setDenyMessage("Stale nonce"); return; @@ -708,11 +708,8 @@ AuthDigestUserRequest::module_direction() case Failed: - if (flags.nonce_stale) - /* nonce is stale, send new challenge */ - return 1; - - return -2; + /* send new challenge */ + return 1; } return -2; @@ -783,14 +780,14 @@ AuthDigestConfig::fixHeader(AuthUserRequest *auth_user_request, HttpReply *rep, if (!authenticate) return; - int stale = 0; + int stale = 1; if (auth_user_request) { AuthDigestUserRequest *digest_request; digest_request = dynamic_cast < AuthDigestUserRequest * >(auth_user_request); assert (digest_request != NULL); - stale = digest_request->flags.nonce_stale; + stale = !digest_request->flags.invalid_password; } /* on a 407 or 401 we always use a new nonce */ @@ -850,6 +847,7 @@ authenticateDigestHandleReply(void *data, char *reply) if (reply && (strncasecmp(reply, "ERR", 3) == 0)) { digest_request->credentials(AuthDigestUserRequest::Failed); + digest_request->flags.invalid_password = 1; if (t && *t) digest_request->setDenyMessage(t); @@ -1047,9 +1045,8 @@ authDigestUserLinkNonce(DigestUser * user, digest_nonce_h * nonce) /* setup the necessary info to log the username */ static AuthUserRequest * -authDigestLogUsername(char *username) +authDigestLogUsername(char *username, AuthDigestUserRequest *auth_user_request) { - AuthDigestUserRequest *auth_user_request = new AuthDigestUserRequest(); assert(auth_user_request != NULL); /* log the username */ @@ -1228,7 +1225,7 @@ AuthDigestConfig::decode(char const *proxy_auth) if (digest_request->cnonce && strlen(digest_request->nc) != 8) { debugs(29, 4, "authenticateDigestDecode: nonce count length invalid"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* now the nonce */ @@ -1237,8 +1234,7 @@ AuthDigestConfig::decode(char const *proxy_auth) if (!nonce) { /* we couldn't find a matching nonce! */ debugs(29, 4, "authenticateDigestDecode: Unexpected or invalid nonce received"); - delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } digest_request->nonce = nonce; @@ -1247,11 +1243,11 @@ AuthDigestConfig::decode(char const *proxy_auth) /* check the qop is what we expected. Note that for compatability with * RFC 2069 we should support a missing qop. Tough. */ - if (!digest_request->qop || strcmp(digest_request->qop, QOP_AUTH)) { + if (digest_request->qop && strcmp(digest_request->qop, QOP_AUTH) != 0) { /* we received a qop option we didn't send */ debugs(29, 4, "authenticateDigestDecode: Invalid qop option received"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* we can't check the URI just yet. We'll check it in the @@ -1262,21 +1258,21 @@ AuthDigestConfig::decode(char const *proxy_auth) if (!digest_request->response || strlen(digest_request->response) != 32) { debugs(29, 4, "authenticateDigestDecode: Response length invalid"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* do we have a username ? */ if (!username || username[0] == '\0') { debugs(29, 4, "authenticateDigestDecode: Empty or not present username"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* check that we're not being hacked / the username hasn't changed */ if (nonce->user && strcmp(username, nonce->user->username())) { debugs(29, 4, "authenticateDigestDecode: Username for the nonce does not equal the username for the request"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* if we got a qop, did we get a cnonce or did we get a cnonce wihtout a qop? */ @@ -1284,7 +1280,7 @@ AuthDigestConfig::decode(char const *proxy_auth) || (!digest_request->qop && digest_request->cnonce)) { debugs(29, 4, "authenticateDigestDecode: qop without cnonce, or vice versa!"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* check the algorithm is present and supported */ @@ -1294,7 +1290,7 @@ AuthDigestConfig::decode(char const *proxy_auth) && strcmp(digest_request->algorithm, "MD5-sess")) { debugs(29, 4, "authenticateDigestDecode: invalid algorithm specified!"); delete digest_request; - return authDigestLogUsername(username); + return authDigestLogUsername(username, digest_request); } /* the method we'll check at the authenticate step as well */ diff --git a/src/auth/digest/auth_digest.h b/src/auth/digest/auth_digest.h index 302ef9ec80..72178a6490 100644 --- a/src/auth/digest/auth_digest.h +++ b/src/auth/digest/auth_digest.h @@ -99,8 +99,7 @@ public: unsigned int authinfo_sent: 1; -unsigned int nonce_stale: - 1; + unsigned int invalid_password:1; unsigned int helper_queried: 1; diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 0420478e07..b7ba0f24c1 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,6 +1,6 @@ /* - * $Id: cache_cf.cc,v 1.528 2007/11/15 23:33:05 wessels Exp $ + * $Id: cache_cf.cc,v 1.528.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -46,6 +46,9 @@ #include "Parsing.h" #include "MemBuf.h" #include "wordlist.h" +#if HAVE_GLOB_H +#include +#endif #if SQUID_SNMP #include "snmp.h" @@ -151,6 +154,8 @@ static int check_null_https_port_list(const https_port_list *); static void parse_b_size_t(size_t * var); static void parse_b_int64_t(int64_t * var); +static int parseOneConfigFile(const char *file_name, unsigned int depth); + /* * LegacyParser is a parser for legacy code that uses the global * approach. This is static so that it is only exposed to cache_cf. @@ -203,17 +208,53 @@ skip_ws(const char* s) return s; } -int -parseConfigFile(const char *file_name, CacheManager & manager) +static int +parseManyConfigFiles(char* files, int depth) +{ + int error_count = 0; + char* saveptr = NULL; +#if HAVE_GLOB + char *path; + glob_t globbuf; + int i; + memset(&globbuf, 0, sizeof(globbuf)); + for (path = strwordtok(files, &saveptr); path; path = strwordtok(NULL, &saveptr)) { + if (glob(path, globbuf.gl_pathc ? GLOB_APPEND : 0, NULL, &globbuf) != 0) { + fatalf("Unable to find configuration file: %s: %s", + path, xstrerror()); + } + } + for (i = 0; i < (int)globbuf.gl_pathc; i++) { + error_count += parseOneConfigFile(globbuf.gl_pathv[i], depth); + } + globfree(&globbuf); +#else + char* file = strwordtok(files, &saveptr); + while (file != NULL) { + error_count += parseOneConfigFile(file, depth); + file = strwordtok(NULL, &saveptr); + } +#endif /* HAVE_GLOB */ + return error_count; +} + +static int +parseOneConfigFile(const char *file_name, unsigned int depth) { FILE *fp = NULL; + const char *orig_cfg_filename = cfg_filename; + const int orig_config_lineno = config_lineno; char *token = NULL; char *tmp_line = NULL; int tmp_line_len = 0; int err_count = 0; int is_pipe = 0; - configFreeMemory(); - default_all(); + + debugs(3, 1, "Processing Configuration File: " << file_name << " (depth " << depth << ")"); + if (depth > 16) { + fatalf("WARNING: can't include %s: includes are nested too deeply (>16)!\n", file_name); + return 1; + } if (file_name[0] == '!' || file_name[0] == '|') { fp = popen(file_name + 1, "r"); @@ -223,8 +264,7 @@ parseConfigFile(const char *file_name, CacheManager & manager) } if (fp == NULL) - fatalf("Unable to open configuration file: %s: %s", - file_name, xstrerror()); + fatalf("Unable to open configuration file: %s: %s", file_name, xstrerror()); #ifdef _SQUID_WIN32_ @@ -270,13 +310,6 @@ parseConfigFile(const char *file_name, CacheManager & manager) *token = '\0'; cfg_filename = new_file_name; - -#if PROBABLY_NOT_WANTED_HERE - - SetConfigFilename(cfg_filename, false); - -#endif - } config_lineno = new_lineno; @@ -306,11 +339,13 @@ parseConfigFile(const char *file_name, CacheManager & manager) debugs(3, 5, "Processing: '" << tmp_line << "'"); - if (!parse_line(tmp_line)) { - debugs(3, 0, "parseConfigFile: '" << cfg_filename << "' line " << - config_lineno << " unrecognized: '" << config_input_line << "'"); - err_count++; - } + /* Handle includes here */ + if (tmp_line_len >= 9 && strncmp(tmp_line, "include", 7) == 0 && xisspace(tmp_line[7])) { + err_count += parseManyConfigFiles(tmp_line + 8, depth + 1); + } else if (!parse_line(tmp_line)) { + debugs(3, 0, HERE << cfg_filename << ":" << config_lineno << " unrecognized: '" << tmp_line << "'"); + err_count++; + } safe_free(tmp_line); tmp_line_len = 0; @@ -326,6 +361,23 @@ parseConfigFile(const char *file_name, CacheManager & manager) fclose(fp); } + cfg_filename = orig_cfg_filename; + config_lineno = orig_config_lineno; + + return err_count; +} + +int +parseConfigFile(const char *file_name, CacheManager & manager) +{ + int err_count = 0; + + configFreeMemory(); + + default_all(); + + err_count = parseOneConfigFile(file_name, 0); + defaults_if_none(); /* @@ -351,6 +403,7 @@ parseConfigFile(const char *file_name, CacheManager & manager) return err_count; } + static void configDoConfigure(void) { @@ -2364,18 +2417,6 @@ parse_eol(char *volatile *var) #define dump_eol dump_string #define free_eol free_string -void -parse_debug(char *volatile *var) -{ - parse_eol(var); - safe_free(debug_options) - debug_options = xstrdup(Config.debugOptions); - Debug::parseOptions(Config.debugOptions); -} - -#define dump_debug dump_string -#define free_debug free_string - static void dump_time_t(StoreEntry * entry, const char *name, time_t var) { @@ -2769,6 +2810,7 @@ parse_http_port_specification(http_port_list * s, char *token) char *t; s->disable_pmtu_discovery = DISABLE_PMTU_OFF; + s->name = strdup(token); if ((t = strchr(token, ':'))) { /* host:port */ diff --git a/src/carp.cc b/src/carp.cc index 56e95e1b08..85e8257d0e 100644 --- a/src/carp.cc +++ b/src/carp.cc @@ -1,6 +1,6 @@ /* - * $Id: carp.cc,v 1.26 2007/04/28 22:26:37 hno Exp $ + * $Id: carp.cc,v 1.26.6.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 39 Cache Array Routing Protocol * AUTHOR: Henrik Nordstrom @@ -104,7 +104,7 @@ carpInit(void) /* calculate this peers hash */ p->carp.hash = 0; - for (t = p->host; *t != 0; t++) + for (t = p->name; *t != 0; t++) p->carp.hash += ROTATE_LEFT(p->carp.hash, 19) + (unsigned int) *t; p->carp.hash += p->carp.hash * 0x62531965; @@ -189,7 +189,7 @@ carpSelectParent(HttpRequest * request) combined_hash += combined_hash * 0x62531965; combined_hash = ROTATE_LEFT(combined_hash, 21); score = combined_hash * tp->carp.load_multiplier; - debugs(39, 3, "carpSelectParent: " << tp->host << " combined_hash " << combined_hash << + debugs(39, 3, "carpSelectParent: " << tp->name << " combined_hash " << combined_hash << " score " << std::setprecision(0) << score); if ((score > high_score) && peerHTTPOkay(tp, request)) { @@ -199,7 +199,7 @@ carpSelectParent(HttpRequest * request) } if (p) - debugs(39, 2, "carpSelectParent: selected " << p->host); + debugs(39, 2, "carpSelectParent: selected " << p->name); return p; } @@ -221,7 +221,7 @@ carpCachemgr(StoreEntry * sentry) for (p = Config.peers; p; p = p->next) { storeAppendPrintf(sentry, "%24s %10x %10f %10f %10f\n", - p->host, p->carp.hash, + p->name, p->carp.hash, p->carp.load_multiplier, p->carp.load_factor, sumfetches ? (double) p->stats.fetches / sumfetches : -1.0); diff --git a/src/cf.data.pre b/src/cf.data.pre index 165c2dd439..8f450e1cc8 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -1,6 +1,6 @@ # -# $Id: cf.data.pre,v 1.488.4.2 2008/02/10 10:07:53 serassio Exp $ +# $Id: cf.data.pre,v 1.488.4.3 2008/02/29 18:30:03 serassio Exp $ # # SQUID Web Proxy Cache http://www.squid-cache.org/ # ---------------------------------------------------------- @@ -47,6 +47,21 @@ COMMENT_START COMMENT_END +COMMENT_START + Configuration options can be included using the "include" directive. + Include takes a list of files to include. Quoting and wildcards is + supported. + + For example, + + include /path/to/included/file/squid.acl.config + + Includes can be nested up to a hard-coded depth of 16 levels. + This arbitrary restriction is to prevent recursive include references + from causing Squid entering an infinite loop whilst trying to load + configuration files. +COMMENT_END + COMMENT_START OPTIONS FOR AUTHENTICATION ----------------------------------------------------------------------------- @@ -488,6 +503,7 @@ DOC_START acl aclname port 80 70 21 ... acl aclname port 0-1024 ... # ranges allowed acl aclname myport 3128 ... # (local socket TCP port) + acl aclname myportname 3128 ... # http(s)_port name acl aclname proto HTTP FTP ... acl aclname method GET POST ... acl aclname browser [-i] regexp ... @@ -920,6 +936,9 @@ DOC_START sporadically hang or never complete requests set disable-pmtu-discovery option to 'transparent'. + name= Specifies a internal name for the port. Defaults to + the port specification (port or addr:port) + If you run Squid on a dual-homed machine with an internal and an external interface we recommend you to specify the internal address:port in http_port. This way Squid will only be @@ -1032,6 +1051,9 @@ DOC_START vport=NN As above, but uses specified port number rather than the https_port number. Implies accel. + name= Specifies a internal name for the port. Defaults to + the port specification (port or addr:port) + DOC_END NAME: tcp_outgoing_tos tcp_outgoing_ds tcp_outgoing_dscp @@ -2178,7 +2200,7 @@ DOC_START DOC_END NAME: debug_options -TYPE: debug +TYPE: eol DEFAULT: ALL,1 LOC: Config.debugOptions DOC_START diff --git a/src/client_side.h b/src/client_side.h index 5f40f37e1e..88eff35528 100644 --- a/src/client_side.h +++ b/src/client_side.h @@ -1,5 +1,5 @@ /* - * $Id: client_side.h,v 1.26 2007/10/31 04:52:16 amosjeffries Exp $ + * $Id: client_side.h,v 1.26.4.1 2008/02/29 18:30:03 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -95,7 +95,7 @@ unsigned parsed_ok: 1; /* Was this parsed correctly? */ }; DeferredParams deferredparams; - off_t writtenToSocket; + int64_t writtenToSocket; void pullData(); int64_t getNextRangeOffset() const; bool canPackMoreRanges() const; diff --git a/src/client_side_reply.cc b/src/client_side_reply.cc index 9d238973e7..58306df552 100644 --- a/src/client_side_reply.cc +++ b/src/client_side_reply.cc @@ -1,6 +1,6 @@ /* - * $Id: client_side_reply.cc,v 1.144.4.1 2008/02/24 12:41:29 serassio Exp $ + * $Id: client_side_reply.cc,v 1.144.4.2 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 88 Client-side Reply Routines * AUTHOR: Robert Collins (Originally Duane Wessels in client_side.c) @@ -1214,10 +1214,7 @@ clientReplyContext::buildReplyHeader() if (is_hit) hdr->delById(HDR_SET_COOKIE); - /* - * Be sure to obey the Connection header - */ - reply->header.removeConnectionHeaderEntries(); + reply->header.removeHopByHopEntries(); // if (request->range) // clientBuildRangeHeader(http, reply); @@ -1314,6 +1311,9 @@ clientReplyContext::buildReplyHeader() #endif + /* Check whether we should send keep-alive */ + // TODO: disable proxy_keepalive only once + if (reply->bodySize(request->method) < 0) { debugs(88, 3, "clientBuildReplyHeader: can't keep-alive, unknown body size" ); request->flags.proxy_keepalive = 0; @@ -1332,6 +1332,11 @@ clientReplyContext::buildReplyHeader() if (!Config.onoff.client_pconns && !request->flags.must_keepalive) request->flags.proxy_keepalive = 0; + if (request->flags.proxy_keepalive && shutting_down) { + debugs(88, 3, "clientBuildReplyHeader: Shutting down, don't keep-alive."); + request->flags.proxy_keepalive = 0; + } + /* Append VIA */ if (Config.onoff.via) { LOCAL_ARRAY(char, bbuf, MAX_URL + 32); diff --git a/src/client_side_reply.h b/src/client_side_reply.h index de223bbc30..c34cf802e2 100644 --- a/src/client_side_reply.h +++ b/src/client_side_reply.h @@ -1,6 +1,6 @@ /* - * $Id: client_side_reply.h,v 1.17 2007/05/09 07:36:24 wessels Exp $ + * $Id: client_side_reply.h,v 1.17.6.1 2008/02/29 18:30:03 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -98,7 +98,7 @@ public: StoreIOBuffer tempBuffer; /* For use in validating requests via IMS */ int old_reqsize; /* ... again, for the buffer */ size_t reqsize; - off_t reqofs; + size_t reqofs; char tempbuf[HTTP_REQBUF_SZ]; /* a temporary buffer if we need working storage */ #if USE_CACHE_DIGESTS diff --git a/src/client_side_request.h b/src/client_side_request.h index 92e1b7848d..34d4d2f2ea 100644 --- a/src/client_side_request.h +++ b/src/client_side_request.h @@ -1,6 +1,6 @@ /* - * $Id: client_side_request.h,v 1.32 2007/08/13 17:20:51 hno Exp $ + * $Id: client_side_request.h,v 1.32.4.1 2008/02/29 18:30:03 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -183,7 +183,7 @@ private: BodyPipe::Pointer icapBodySource; bool request_satisfaction_mode; - off_t request_satisfaction_offset; + int64_t request_satisfaction_offset; #endif }; diff --git a/src/comm.cc b/src/comm.cc index 02157c5389..5d396b9270 100644 --- a/src/comm.cc +++ b/src/comm.cc @@ -1,5 +1,5 @@ /* - * $Id: comm.cc,v 1.438 2007/10/31 04:52:16 amosjeffries Exp $ + * $Id: comm.cc,v 1.438.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 5 Socket Functions * AUTHOR: Harvest Derived @@ -1103,6 +1103,7 @@ ConnectStateData::commResetFD() return 0; } + commResetSelect(fd); close(fd2); fde *F = &fd_table[fd]; @@ -1252,6 +1253,13 @@ comm_connect_addr(int sock, const struct sockaddr_in *address) x = connect(sock, (struct sockaddr *) address, sizeof(*address)); + // XXX: ICAP code refuses callbacks during a pending comm_ call + // Async calls development will fix this. + if (x == 0) { + x = -1; + errno = EINPROGRESS; + } + if (x < 0) debugs(5, 9, "connect FD " << sock << ": " << xstrerror()); } else @@ -1897,7 +1905,7 @@ commHandleWrite(int fd, void *data) { /* A successful write, continue */ state->offset += len; - if (state->offset < (off_t)state->size) { + if (state->offset < state->size) { /* Not done, reinstall the write handler and write some more */ commSetSelect(fd, COMM_SELECT_WRITE, diff --git a/src/comm.h b/src/comm.h index db8b62a9bb..ceaab1ec76 100644 --- a/src/comm.h +++ b/src/comm.h @@ -57,6 +57,7 @@ SQUIDCEXTERN u_short comm_local_port(int fd); SQUIDCEXTERN int comm_set_tos(int fd, int tos); SQUIDCEXTERN void commSetSelect(int, unsigned int, PF *, void *, time_t); +SQUIDCEXTERN void commResetSelect(int); SQUIDCEXTERN int comm_udp_sendto(int, const struct sockaddr_in *, int, const void *, int); extern void comm_write(int fd, const char *buf, int len, IOCB *callback, void *callback_data, FREE *func); diff --git a/src/comm_epoll.cc b/src/comm_epoll.cc index 51ac3be614..546f833d93 100644 --- a/src/comm_epoll.cc +++ b/src/comm_epoll.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_epoll.cc,v 1.17 2007/07/19 13:33:18 hno Exp $ + * $Id: comm_epoll.cc,v 1.17.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 5 Socket Functions * @@ -203,6 +203,14 @@ commSetSelect(int fd, unsigned int type, PF * handler, F->timeout = squid_curtime + timeout; } +void +commResetSelect(int fd) +{ + fde *F = &fd_table[fd]; + F->epoll_state = 0; + commSetSelect(fd, 0, NULL, NULL, 0); +} + static void commIncomingStats(StoreEntry * sentry); diff --git a/src/comm_kqueue.cc b/src/comm_kqueue.cc index d759e28fb5..8396595cd9 100644 --- a/src/comm_kqueue.cc +++ b/src/comm_kqueue.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_kqueue.cc,v 1.17 2007/07/19 13:33:18 hno Exp $ + * $Id: comm_kqueue.cc,v 1.17.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 5 Socket Functions * @@ -210,6 +210,18 @@ commSetSelect(int fd, unsigned int type, PF * handler, } +void +commResetSelect(int fd) +{ + fde *F = &fd_table[fd]; + if (F->read_handler) { + kq_update_events(fd, EVFILT_READ, (PF *)1); + } + if (F->write_handler) { + kq_update_events(fd, EVFILT_WRITE, (PF *)1); + } +} + /* * Check all connections for new connections and input data that is to be * processed. Also check for connections with data queued and whether we can diff --git a/src/comm_poll.cc b/src/comm_poll.cc index b6d9354027..d35a8d7f68 100644 --- a/src/comm_poll.cc +++ b/src/comm_poll.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_poll.cc,v 1.24 2007/09/01 13:09:59 hno Exp $ + * $Id: comm_poll.cc,v 1.24.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 5 Socket Functions * @@ -145,6 +145,11 @@ commSetSelect(int fd, unsigned int type, PF * handler, void *client_data, F->timeout = squid_curtime + timeout; } +void +commResetSelect(int fd) +{ +} + static int fdIsIcp(int fd) { diff --git a/src/comm_select.cc b/src/comm_select.cc index 64d90092e1..aa2255190e 100644 --- a/src/comm_select.cc +++ b/src/comm_select.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_select.cc,v 1.81 2007/06/10 12:13:31 hno Exp $ + * $Id: comm_select.cc,v 1.81.6.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 5 Socket Functions * @@ -156,6 +156,10 @@ commSetSelect(int fd, unsigned int type, PF * handler, void *client_data, F->timeout = squid_curtime + timeout; } +void +commResetSelect(int fd) +{ +} static int fdIsIcp(int fd) diff --git a/src/comm_select_win32.cc b/src/comm_select_win32.cc index 8daf6cb1d8..cc0b8b6c5a 100644 --- a/src/comm_select_win32.cc +++ b/src/comm_select_win32.cc @@ -1,6 +1,6 @@ /* - * $Id: comm_select_win32.cc,v 1.4.6.2 2008/02/24 13:01:55 serassio Exp $ + * $Id: comm_select_win32.cc,v 1.4.6.3 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 5 Socket Functions * @@ -156,6 +156,11 @@ commSetSelect(int fd, unsigned int type, PF * handler, void *client_data, F->timeout = squid_curtime + timeout; } +void +commResetSelect(int fd) +{ +} + static int fdIsIcp(int fd) diff --git a/src/debug.cc b/src/debug.cc index c707ce80bb..4ab6c781cc 100644 --- a/src/debug.cc +++ b/src/debug.cc @@ -1,5 +1,5 @@ /* - * $Id: debug.cc,v 1.106 2007/12/04 15:20:22 rousskov Exp $ + * $Id: debug.cc,v 1.106.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 0 Debug Routines * AUTHOR: Harvest Derived @@ -445,7 +445,7 @@ Debug::parseOptions(char const *options) { } for (i = 0; i < MAX_DEBUG_SECTIONS; i++) - Debug::Levels[i] = -1; + Debug::Levels[i] = 0; if (options) { p = xstrdup(options); diff --git a/src/forward.cc b/src/forward.cc index 69a2bf2765..01df25e937 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -1,6 +1,6 @@ /* - * $Id: forward.cc,v 1.168 2007/07/21 16:32:03 hno Exp $ + * $Id: forward.cc,v 1.168.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 17 Request Forwarding * AUTHOR: Duane Wessels @@ -442,6 +442,9 @@ FwdState::checkRetry() if (flags.dont_retry) return false; + if (!checkRetriable()) + return false; + if (request->bodyNibbled()) return false; @@ -812,8 +815,12 @@ FwdState::connectStart() server_fd = fd; n_tries++; - if (!fs->_peer) + if (!fs->_peer) { origin_tries++; + hierarchyNote(&request->hier, fs->code, request->host); + } else { + hierarchyNote(&request->hier, fs->code, fs->_peer->host); + } comm_add_close_handler(fd, fwdServerClosedWrapper, this); diff --git a/src/helper.h b/src/helper.h index 67992019d0..4cc6b51288 100644 --- a/src/helper.h +++ b/src/helper.h @@ -1,6 +1,6 @@ /* - * $Id: helper.h,v 1.9 2007/05/07 18:38:40 wessels Exp $ + * $Id: helper.h,v 1.9.6.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 84 Helper process maintenance * AUTHOR: Harvest Derived? @@ -117,7 +117,7 @@ struct _helper_server MemBuf *writebuf; char *rbuf; size_t rbuf_sz; - off_t roffset; + size_t roffset; struct timeval dispatch_time; @@ -164,7 +164,7 @@ struct _helper_stateful_server /* MemBuf writebuf; */ char *rbuf; size_t rbuf_sz; - off_t roffset; + size_t roffset; struct timeval dispatch_time; diff --git a/src/main.cc b/src/main.cc index 413d2041ea..d6215bb35f 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,6 +1,6 @@ /* - * $Id: main.cc,v 1.451.4.2 2008/02/17 19:44:01 serassio Exp $ + * $Id: main.cc,v 1.451.4.3 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 1 Startup and Main Loop * AUTHOR: Harvest Derived @@ -632,6 +632,7 @@ mainReconfigure(void) errorClean(); enter_suid(); /* root to read config file */ parseConfigFile(ConfigFile, manager); + Mem::Report(); setEffectiveUser(); _db_init(Config.Log.log, Config.debugOptions); ipcache_restart(); /* clear stuck entries */ @@ -1078,7 +1079,7 @@ main(int argc, char **argv) sbrk_start = sbrk(0); #endif - Debug::parseOptions("ALL,1"); + Debug::parseOptions(NULL); debug_log = stderr; #if defined(SQUID_MAXFD_LIMIT) @@ -1153,6 +1154,10 @@ main(int argc, char **argv) mainParseOptions(argc, argv); + if (opt_parse_cfg_only) { + Debug::parseOptions("ALL,1"); + } + #if USE_WIN32_SERVICE if (opt_install_service) @@ -1200,6 +1205,8 @@ main(int argc, char **argv) parse_err = parseConfigFile(ConfigFile, manager); + Mem::Report(); + if (opt_parse_cfg_only) return parse_err; diff --git a/src/mem.cc b/src/mem.cc index 8e253ec7da..73536d57b3 100644 --- a/src/mem.cc +++ b/src/mem.cc @@ -1,6 +1,6 @@ /* - * $Id: mem.cc,v 1.106 2007/11/15 16:47:35 wessels Exp $ + * $Id: mem.cc,v 1.106.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 13 High Level Memory Pool Management * AUTHOR: Harvest Derived @@ -382,8 +382,6 @@ Mem::Init(void) * debug messages here at level 0 or 1 will always be printed * on stderr. */ - debugs(13, 3, "Memory pools are '" << ((Config.onoff.mem_pools ? "on" : "off")) << "'; limit: "<< - std::setprecision(3) << toMB(MemPools::GetInstance().idleLimit()) << " MB"); /* set all pointers to null */ memset(MemPools, '\0', sizeof(MemPools)); @@ -430,6 +428,15 @@ Mem::Init(void) } } +void +Mem::Report() +{ + debugs(13, 3, "Memory pools are '" << + (Config.onoff.mem_pools ? "on" : "off") << "'; limit: " << + std::setprecision(3) << toMB(MemPools::GetInstance().idleLimit()) << + " MB"); +} + void Mem::RegisterWithCacheManager(CacheManager & manager) { diff --git a/src/mem_node.cc b/src/mem_node.cc index dc44b48978..c60448294a 100644 --- a/src/mem_node.cc +++ b/src/mem_node.cc @@ -1,6 +1,6 @@ /* - * $Id: mem_node.cc,v 1.10 2007/08/13 17:20:51 hno Exp $ + * $Id: mem_node.cc,v 1.10.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 19 Store Memory Primitives * AUTHOR: Robert Collins @@ -38,7 +38,6 @@ static int makeMemNodeDataOffset(); -unsigned long mem_node::store_mem_size; static int _mem_node_data_offset = makeMemNodeDataOffset(); /* @@ -70,9 +69,7 @@ mem_node::mem_node(int64_t offset):nodeBuffer(0,offset,data) {} mem_node::~mem_node() -{ - store_mem_size -= nodeBuffer.length; -} +{} size_t mem_node::InUseCount() @@ -80,6 +77,12 @@ mem_node::InUseCount() return Pool().inUseCount(); } +size_t +mem_node::StoreMemSize() +{ + return InUseCount() * SM_PAGE_SIZE; +} + int64_t mem_node::start() const { diff --git a/src/mem_node.h b/src/mem_node.h index 15a20c98e9..75765994c7 100644 --- a/src/mem_node.h +++ b/src/mem_node.h @@ -1,6 +1,6 @@ /* - * $Id: mem_node.h,v 1.10 2007/08/13 17:20:51 hno Exp $ + * $Id: mem_node.h,v 1.10.4.1 2008/02/29 18:30:03 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -42,7 +42,7 @@ class mem_node public: static size_t InUseCount(); - static unsigned long store_mem_size; /* 0 */ + static size_t StoreMemSize(); MEMPROXY_CLASS(mem_node); mem_node(int64_t); diff --git a/src/neighbors.cc b/src/neighbors.cc index b4e919eef8..9c083d5a93 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1,6 +1,6 @@ /* - * $Id: neighbors.cc,v 1.350 2007/11/13 23:25:34 rousskov Exp $ + * $Id: neighbors.cc,v 1.350.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -239,9 +239,8 @@ peerWouldBePinged(const peer * p, HttpRequest * request) if (squid_curtime - p->stats.last_query > Config.Timeout.deadPeer) return 1; - if (p->icp.port == echo_port) - if (!neighborUp(p)) - return 0; + if (!neighborUp(p)) + return 0; return 1; } diff --git a/src/net_db.cc b/src/net_db.cc index 96ceead08a..de0d9f7ab7 100644 --- a/src/net_db.cc +++ b/src/net_db.cc @@ -1,6 +1,6 @@ /* - * $Id: net_db.cc,v 1.198 2007/11/27 07:48:40 amosjeffries Exp $ + * $Id: net_db.cc,v 1.198.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 38 Network Measurement Database * AUTHOR: Duane Wessels @@ -72,7 +72,7 @@ typedef struct StoreEntry *e; store_client *sc; HttpRequest *r; - off_t used; + int64_t used; size_t buf_sz; char buf[NETDB_REQBUF_SZ]; int buf_ofs; @@ -678,7 +678,7 @@ netdbExchangeHandleReply(void *data, StoreIOBuffer receivedData) { netdbExchangeState *ex = (netdbExchangeState *)data; int rec_sz = 0; - off_t o; + int o; struct IN_ADDR addr; double rtt; diff --git a/src/peer_digest.cc b/src/peer_digest.cc index 602a0162f1..4be4631f01 100644 --- a/src/peer_digest.cc +++ b/src/peer_digest.cc @@ -1,6 +1,6 @@ /* - * $Id: peer_digest.cc,v 1.127 2007/08/27 12:50:43 hno Exp $ + * $Id: peer_digest.cc,v 1.127.4.1 2008/02/29 18:30:03 serassio Exp $ * * DEBUG: section 72 Peer Digest Routines * AUTHOR: Alex Rousskov @@ -724,10 +724,10 @@ peerDigestSwapInMask(void *data, char *buf, ssize_t size) fetch->mask_offset += size; - if (fetch->mask_offset >= (off_t)pd->cd->mask_size) { + if (fetch->mask_offset >= pd->cd->mask_size) { debugs(72, 2, "peerDigestSwapInMask: Done! Got " << fetch->mask_offset << ", expected " << pd->cd->mask_size); - assert(fetch->mask_offset == (off_t)pd->cd->mask_size); + assert(fetch->mask_offset == pd->cd->mask_size); assert(peerDigestFetchedEnough(fetch, NULL, 0, "peerDigestSwapInMask")); return -1; /* XXX! */ } else { diff --git a/src/snmp_agent.cc b/src/snmp_agent.cc index d57bc55e81..762392fb47 100644 --- a/src/snmp_agent.cc +++ b/src/snmp_agent.cc @@ -1,6 +1,6 @@ /* - * $Id: snmp_agent.cc,v 1.96 2007/04/28 22:26:37 hno Exp $ + * $Id: snmp_agent.cc,v 1.96.6.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 49 SNMP Interface * AUTHOR: Kostas Anagnostakis @@ -57,7 +57,7 @@ snmp_sysFn(variable_list * Var, snint * ErrP) case SYSVMSIZ: Answer = snmp_var_new_integer(Var->name, Var->name_length, - mem_node::store_mem_size >> 10, + mem_node::StoreMemSize() >> 10, ASN_INTEGER); break; diff --git a/src/snmp_core.cc b/src/snmp_core.cc index 2e006cacca..9485adf13e 100644 --- a/src/snmp_core.cc +++ b/src/snmp_core.cc @@ -1,6 +1,6 @@ /* - * $Id: snmp_core.cc,v 1.79 2007/07/06 11:30:45 amosjeffries Exp $ + * $Id: snmp_core.cc,v 1.79.6.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 49 SNMP support * AUTHOR: Glenn Chisholm @@ -1106,7 +1106,7 @@ snmpDebugOid(int lvl, oid * Name, snint Len) for (x = 0; x < Len; x++) { snprintf(mbuf, sizeof(mbuf), ".%u", (unsigned int) Name[x]); - strncat(objid, mbuf, sizeof(objid)); + strncat(objid, mbuf, sizeof(objid) - strlen(objid) - 1); } debugs(49, lvl, " oid = " << objid); diff --git a/src/stat.cc b/src/stat.cc index e8f928f7e4..b63a557ce8 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,5 +1,5 @@ /* - * $Id: stat.cc,v 1.410 2007/09/20 20:22:20 hno Exp $ + * $Id: stat.cc,v 1.410.4.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -541,16 +541,16 @@ info_get(StoreEntry * sentry) store_swap_size); storeAppendPrintf(sentry, "\tStorage Swap capacity:\t%4.1f%% used, %4.1f%% free\n", - dpercent((int) store_swap_size, (int) Store::Root().maxSize()), - dpercent((int) (Store::Root().maxSize() - store_swap_size), (int) Store::Root().maxSize())); + dpercent(store_swap_size, Store::Root().maxSize()), + dpercent((Store::Root().maxSize() - store_swap_size), Store::Root().maxSize())); storeAppendPrintf(sentry, "\tStorage Mem size:\t%d KB\n", - (int) (mem_node::store_mem_size >> 10)); + mem_node::StoreMemSize() >> 10); storeAppendPrintf(sentry, "\tStorage Mem capacity:\t%4.1f%% used, %4.1f%% free\n", dpercent(mem_node::InUseCount(), store_pages_max), - dpercent(((double)store_pages_max - mem_node::InUseCount()), store_pages_max)); + dpercent((store_pages_max - mem_node::InUseCount()), store_pages_max)); storeAppendPrintf(sentry, "\tMean Object Size:\t%0.2f KB\n", n_disk_objects ? (double) store_swap_size / n_disk_objects : 0.0); diff --git a/src/stmem.cc b/src/stmem.cc index e1837d97e1..8b001ee2fd 100644 --- a/src/stmem.cc +++ b/src/stmem.cc @@ -1,6 +1,6 @@ /* - * $Id: stmem.cc,v 1.92 2007/08/13 18:25:14 hno Exp $ + * $Id: stmem.cc,v 1.92.4.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 19 Store Memory Primitives * AUTHOR: Harvest Derived @@ -150,8 +150,6 @@ mem_hdr::writeAvailable(mem_node *aNode, int64_t location, size_t amount, char c /* Adjust the ptr and len according to what was deposited in the page */ aNode->nodeBuffer.length += copyLen; - mem_node::store_mem_size += copyLen; - return copyLen; } diff --git a/src/store_client.cc b/src/store_client.cc index 3ba1c2c011..e62d772038 100644 --- a/src/store_client.cc +++ b/src/store_client.cc @@ -1,6 +1,6 @@ /* - * $Id: store_client.cc,v 1.159 2007/08/27 12:50:43 hno Exp $ + * $Id: store_client.cc,v 1.159.4.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 90 Storage Manager Client-Side Interface * AUTHOR: Duane Wessels @@ -698,14 +698,6 @@ storeUnregister(store_client * sc, StoreEntry * e, void *data) return 1; } -#if UNUSED_CODE_20070420 -off_t -storeLowestMemReaderOffset(const StoreEntry * entry) -{ - return entry->mem_obj->lowestMemReaderOffset(); -} -#endif - /* Call handlers waiting for data to be appended to E. */ void StoreEntry::invokeHandlers() diff --git a/src/store_digest.cc b/src/store_digest.cc index 21dba733b5..e201718959 100644 --- a/src/store_digest.cc +++ b/src/store_digest.cc @@ -1,6 +1,6 @@ /* - * $Id: store_digest.cc,v 1.76 2007/08/13 17:20:51 hno Exp $ + * $Id: store_digest.cc,v 1.76.4.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 71 Store Digest Manager * AUTHOR: Alex Rousskov @@ -466,7 +466,7 @@ storeDigestSwapOutStep(void *data) assert(e); /* _add_ check that nothing bad happened while we were waiting @?@ @?@ */ - if ((size_t)(sd_state.rewrite_offset + chunk_size) > store_digest->mask_size) + if (sd_state.rewrite_offset + chunk_size > store_digest->mask_size) chunk_size = store_digest->mask_size - sd_state.rewrite_offset; e->append(store_digest->mask + sd_state.rewrite_offset, chunk_size); @@ -478,7 +478,7 @@ storeDigestSwapOutStep(void *data) sd_state.rewrite_offset += chunk_size; /* are we done ? */ - if ((size_t)sd_state.rewrite_offset >= store_digest->mask_size) + if (sd_state.rewrite_offset >= store_digest->mask_size) storeDigestRewriteFinish(e); else eventAdd("storeDigestSwapOutStep", storeDigestSwapOutStep, data, 0.0, 1, false); diff --git a/src/store_swapmeta.cc b/src/store_swapmeta.cc index 5f8cca2532..3a4a98683e 100644 --- a/src/store_swapmeta.cc +++ b/src/store_swapmeta.cc @@ -1,6 +1,6 @@ /* - * $Id: store_swapmeta.cc,v 1.27 2007/11/15 16:47:35 wessels Exp $ + * $Id: store_swapmeta.cc,v 1.27.4.1 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 20 Storage Manager Swapfile Metadata * AUTHOR: Kostas Anagnostakis @@ -110,7 +110,7 @@ storeSwapMetaPack(tlv * tlv_list, int *length) { int buflen = 0; tlv *t; - off_t j = 0; + int j = 0; char *buf; assert(length != NULL); buflen++; /* STORE_META_OK */ diff --git a/src/structs.h b/src/structs.h index ce2a077bf3..fc7d3f24a6 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.568 2007/12/02 08:23:56 amosjeffries Exp $ + * $Id: structs.h,v 1.568.4.1 2008/02/29 18:30:04 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -774,26 +774,12 @@ struct _dread_ctrl void *client_data; }; -struct _dnsserver_t -{ - int id; - int inpipe; - int outpipe; - time_t answer; - off_t offset; - size_t size; - char ip_inbuf[DNS_INBUF_SZ]; - - struct timeval dispatch_time; - void *data; -}; - struct _dwrite_q { off_t file_offset; char *buf; - int len; - off_t buf_offset; + size_t len; + size_t buf_offset; dwrite_q *next; FREE *free_func; }; @@ -1637,7 +1623,7 @@ struct _CacheDigest { /* public, read-only */ char *mask; /* bit mask */ - size_t mask_size; /* mask size in bytes */ + int mask_size; /* mask size in bytes */ int capacity; /* expected maximum for .count, not a hard limit */ int bits_per_entry; /* number of bits allocated for each entry from capacity */ int count; /* number of digested entries */ @@ -1665,7 +1651,7 @@ struct _Logfile char path[MAXPATHLEN]; char *buf; size_t bufsz; - off_t offset; + size_t offset; struct { diff --git a/src/tests/testUfs.cc b/src/tests/testUfs.cc index cd8a98c7f0..4d9dd0f951 100644 --- a/src/tests/testUfs.cc +++ b/src/tests/testUfs.cc @@ -225,6 +225,11 @@ testUfs::testUfsDefaultEngine() if (0 > system ("rm -rf " TESTDIR)) throw std::runtime_error("Failed to clean test work directory"); + // This assertion may fail if previous test cases fail. + // Apparently, CPPUNIT_ASSERT* failure may prevent destructors of local + // objects such as "StorePointer aRoot" from being called. + CPPUNIT_ASSERT(!store_table); // or StoreHashIndex ctor will abort below + StorePointer aRoot (new StoreController); Store::Root(aRoot); SwapDirPointer aStore (new UFSSwapDir("ufs", "Blocking")); diff --git a/src/typedefs.h b/src/typedefs.h index 2246ba0ba6..c6e9fea0a9 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -1,6 +1,6 @@ /* - * $Id: typedefs.h,v 1.190 2007/05/09 07:45:58 wessels Exp $ + * $Id: typedefs.h,v 1.190.6.1 2008/02/29 18:30:04 serassio Exp $ * * * SQUID Web Proxy Cache http://www.squid-cache.org/ @@ -98,8 +98,6 @@ typedef struct _close_handler close_handler; typedef struct _dread_ctrl dread_ctrl; -typedef struct _dnsserver_t dnsserver_t; - typedef struct _dwrite_q dwrite_q; typedef struct _ETag ETag; diff --git a/src/wccp2.cc b/src/wccp2.cc index 82033fbae2..cf41d11699 100644 --- a/src/wccp2.cc +++ b/src/wccp2.cc @@ -1,6 +1,6 @@ /* - * $Id: wccp2.cc,v 1.19.4.1 2008/02/24 12:41:29 serassio Exp $ + * $Id: wccp2.cc,v 1.19.4.2 2008/02/29 18:30:04 serassio Exp $ * * DEBUG: section 80 WCCP Support * AUTHOR: Steven Wilton @@ -443,6 +443,7 @@ int empty_portlist[WCCP2_NUMPORTS] = /* END WCCP V2 */ void wccp2_add_service_list(int service, int service_id, int service_priority, int service_proto, int service_flags, int ports[], int security_type, char *password); +static void wccp2SortCacheList(struct wccp2_cache_list_t *head); /* * The functions used during startup: @@ -1476,6 +1477,8 @@ wccp2HandleUdp(int sock, void *not_used) num_caches = 1; } + wccp2SortCacheList(&router_list_ptr->cache_list_head); + router_list_ptr->num_caches = htonl(num_caches); if ((found == 1) && (service_list_ptr->lowest_ip == 1)) { @@ -2375,6 +2378,41 @@ dump_wccp2_service_info(StoreEntry * e, const char *label, void *v) } } +/* Sort the cache list by doing a "selection sort" by IP address */ +static void +wccp2SortCacheList(struct wccp2_cache_list_t *head) +{ + struct wccp2_cache_list_t tmp; + struct wccp2_cache_list_t *this_item; + struct wccp2_cache_list_t *find_item; + struct wccp2_cache_list_t *next_lowest; + + /* Go through each position in the list one at a time */ + for (this_item = head; this_item->next; this_item = this_item->next) { + /* Find the item with the lowest IP */ + next_lowest = this_item; + + for (find_item = this_item; find_item->next; find_item = find_item->next) { + if (find_item->cache_ip.s_addr < next_lowest->cache_ip.s_addr) { + next_lowest = find_item; + } + } + /* Swap if we need to */ + if (next_lowest != this_item) { + /* First make a copy of the current item */ + memcpy(&tmp, this_item, sizeof(struct wccp2_cache_list_t)); + + /* Next update the pointers to maintain the linked list */ + tmp.next = next_lowest->next; + next_lowest->next = this_item->next; + + /* Finally copy the updated items to their correct location */ + memcpy(this_item, next_lowest, sizeof(struct wccp2_cache_list_t)); + memcpy(next_lowest, &tmp, sizeof(struct wccp2_cache_list_t)); + } + } +} + void free_wccp2_service_info(void *v) {}