]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Merged from trunk.
authorAlex Rousskov <rousskov@measurement-factory.com>
Sat, 27 Sep 2008 18:33:49 +0000 (12:33 -0600)
committerAlex Rousskov <rousskov@measurement-factory.com>
Sat, 27 Sep 2008 18:33:49 +0000 (12:33 -0600)
787 files changed:
CREDITS
ChangeLog
QUICKSTART
acinclude.m4
configure.in
doc/Makefile.am
doc/release-notes/release-3.0.html
doc/release-notes/release-3.0.sgml
doc/release-notes/release-3.1.html
doc/release-notes/release-3.1.sgml
doc/rfc/rfc3226.txt [changed mode: 0644->0755]
doc/rfc/rfc3513.txt [changed mode: 0644->0755]
doc/rfc/rfc3596.txt [changed mode: 0644->0755]
errors/Catalan/ERR_ACCESS_DENIED [deleted file]
errors/Catalan/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Catalan/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Catalan/ERR_CANNOT_FORWARD [deleted file]
errors/Catalan/ERR_CONNECT_FAIL [deleted file]
errors/Catalan/ERR_DNS_FAIL [deleted file]
errors/Catalan/ERR_ESI [deleted file]
errors/Catalan/ERR_FORWARDING_DENIED [deleted file]
errors/Catalan/ERR_FTP_DISABLED [deleted file]
errors/Catalan/ERR_FTP_FAILURE [deleted file]
errors/Catalan/ERR_FTP_FORBIDDEN [deleted file]
errors/Catalan/ERR_FTP_NOT_FOUND [deleted file]
errors/Catalan/ERR_FTP_PUT_CREATED [deleted file]
errors/Catalan/ERR_FTP_PUT_ERROR [deleted file]
errors/Catalan/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Catalan/ERR_FTP_UNAVAILABLE [deleted file]
errors/Catalan/ERR_ICAP_FAILURE [deleted file]
errors/Catalan/ERR_INVALID_REQ [deleted file]
errors/Catalan/ERR_INVALID_RESP [deleted file]
errors/Catalan/ERR_INVALID_URL [deleted file]
errors/Catalan/ERR_LIFETIME_EXP [deleted file]
errors/Catalan/ERR_NO_RELAY [deleted file]
errors/Catalan/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Catalan/ERR_READ_ERROR [deleted file]
errors/Catalan/ERR_READ_TIMEOUT [deleted file]
errors/Catalan/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Catalan/ERR_SHUTTING_DOWN [deleted file]
errors/Catalan/ERR_SOCKET_FAILURE [deleted file]
errors/Catalan/ERR_TOO_BIG [deleted file]
errors/Catalan/ERR_UNSUP_REQ [deleted file]
errors/Catalan/ERR_URN_RESOLVE [deleted file]
errors/Catalan/ERR_WRITE_ERROR [deleted file]
errors/Catalan/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Catalan/README [deleted file]
errors/Catalan/generic [deleted file]
errors/Danish/ERR_ACCESS_DENIED [deleted file]
errors/Danish/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Danish/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Danish/ERR_CANNOT_FORWARD [deleted file]
errors/Danish/ERR_CONNECT_FAIL [deleted file]
errors/Danish/ERR_DNS_FAIL [deleted file]
errors/Danish/ERR_ESI [deleted file]
errors/Danish/ERR_FORWARDING_DENIED [deleted file]
errors/Danish/ERR_FTP_DISABLED [deleted file]
errors/Danish/ERR_FTP_FAILURE [deleted file]
errors/Danish/ERR_FTP_FORBIDDEN [deleted file]
errors/Danish/ERR_FTP_NOT_FOUND [deleted file]
errors/Danish/ERR_FTP_PUT_CREATED [deleted file]
errors/Danish/ERR_FTP_PUT_ERROR [deleted file]
errors/Danish/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Danish/ERR_FTP_UNAVAILABLE [deleted file]
errors/Danish/ERR_ICAP_FAILURE [deleted file]
errors/Danish/ERR_INVALID_REQ [deleted file]
errors/Danish/ERR_INVALID_RESP [deleted file]
errors/Danish/ERR_INVALID_URL [deleted file]
errors/Danish/ERR_LIFETIME_EXP [deleted file]
errors/Danish/ERR_NO_RELAY [deleted file]
errors/Danish/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Danish/ERR_READ_ERROR [deleted file]
errors/Danish/ERR_READ_TIMEOUT [deleted file]
errors/Danish/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Danish/ERR_SHUTTING_DOWN [deleted file]
errors/Danish/ERR_SOCKET_FAILURE [deleted file]
errors/Danish/ERR_TOO_BIG [deleted file]
errors/Danish/ERR_UNSUP_REQ [deleted file]
errors/Danish/ERR_URN_RESOLVE [deleted file]
errors/Danish/ERR_WRITE_ERROR [deleted file]
errors/Danish/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Danish/README [deleted file]
errors/Danish/generic [deleted file]
errors/Dutch/ERR_ACCESS_DENIED [deleted file]
errors/Dutch/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Dutch/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Dutch/ERR_CANNOT_FORWARD [deleted file]
errors/Dutch/ERR_CONNECT_FAIL [deleted file]
errors/Dutch/ERR_DNS_FAIL [deleted file]
errors/Dutch/ERR_ESI [deleted file]
errors/Dutch/ERR_FORWARDING_DENIED [deleted file]
errors/Dutch/ERR_FTP_DISABLED [deleted file]
errors/Dutch/ERR_FTP_FAILURE [deleted file]
errors/Dutch/ERR_FTP_FORBIDDEN [deleted file]
errors/Dutch/ERR_FTP_NOT_FOUND [deleted file]
errors/Dutch/ERR_FTP_PUT_CREATED [deleted file]
errors/Dutch/ERR_FTP_PUT_ERROR [deleted file]
errors/Dutch/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Dutch/ERR_FTP_UNAVAILABLE [deleted file]
errors/Dutch/ERR_ICAP_FAILURE [deleted file]
errors/Dutch/ERR_INVALID_REQ [deleted file]
errors/Dutch/ERR_INVALID_RESP [deleted file]
errors/Dutch/ERR_INVALID_URL [deleted file]
errors/Dutch/ERR_LIFETIME_EXP [deleted file]
errors/Dutch/ERR_NO_RELAY [deleted file]
errors/Dutch/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Dutch/ERR_READ_ERROR [deleted file]
errors/Dutch/ERR_READ_TIMEOUT [deleted file]
errors/Dutch/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Dutch/ERR_SHUTTING_DOWN [deleted file]
errors/Dutch/ERR_SOCKET_FAILURE [deleted file]
errors/Dutch/ERR_TOO_BIG [deleted file]
errors/Dutch/ERR_UNSUP_REQ [deleted file]
errors/Dutch/ERR_URN_RESOLVE [deleted file]
errors/Dutch/ERR_WRITE_ERROR [deleted file]
errors/Dutch/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Dutch/README [deleted file]
errors/Dutch/generic [deleted file]
errors/English/ERR_ACCESS_DENIED [deleted file]
errors/English/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/English/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/English/ERR_CANNOT_FORWARD [deleted file]
errors/English/ERR_CONNECT_FAIL [deleted file]
errors/English/ERR_DNS_FAIL [deleted file]
errors/English/ERR_ESI [deleted file]
errors/English/ERR_FORWARDING_DENIED [deleted file]
errors/English/ERR_FTP_DISABLED [deleted file]
errors/English/ERR_FTP_FAILURE [deleted file]
errors/English/ERR_FTP_FORBIDDEN [deleted file]
errors/English/ERR_FTP_NOT_FOUND [deleted file]
errors/English/ERR_FTP_PUT_CREATED [deleted file]
errors/English/ERR_FTP_PUT_ERROR [deleted file]
errors/English/ERR_FTP_PUT_MODIFIED [deleted file]
errors/English/ERR_FTP_UNAVAILABLE [deleted file]
errors/English/ERR_ICAP_FAILURE [deleted file]
errors/English/ERR_INVALID_REQ [deleted file]
errors/English/ERR_INVALID_RESP [deleted file]
errors/English/ERR_INVALID_URL [deleted file]
errors/English/ERR_LIFETIME_EXP [deleted file]
errors/English/ERR_NO_RELAY [deleted file]
errors/English/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/English/ERR_READ_ERROR [deleted file]
errors/English/ERR_READ_TIMEOUT [deleted file]
errors/English/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/English/ERR_SHUTTING_DOWN [deleted file]
errors/English/ERR_SOCKET_FAILURE [deleted file]
errors/English/ERR_TOO_BIG [deleted file]
errors/English/ERR_UNSUP_REQ [deleted file]
errors/English/ERR_URN_RESOLVE [deleted file]
errors/English/ERR_WRITE_ERROR [deleted file]
errors/English/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/English/generic [deleted file]
errors/French/ERR_ACCESS_DENIED [deleted file]
errors/French/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/French/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/French/ERR_CANNOT_FORWARD [deleted file]
errors/French/ERR_CONNECT_FAIL [deleted file]
errors/French/ERR_DNS_FAIL [deleted file]
errors/French/ERR_ESI [deleted file]
errors/French/ERR_FORWARDING_DENIED [deleted file]
errors/French/ERR_FTP_DISABLED [deleted file]
errors/French/ERR_FTP_FAILURE [deleted file]
errors/French/ERR_FTP_FORBIDDEN [deleted file]
errors/French/ERR_FTP_NOT_FOUND [deleted file]
errors/French/ERR_FTP_PUT_CREATED [deleted file]
errors/French/ERR_FTP_PUT_ERROR [deleted file]
errors/French/ERR_FTP_PUT_MODIFIED [deleted file]
errors/French/ERR_FTP_UNAVAILABLE [deleted file]
errors/French/ERR_ICAP_FAILURE [deleted file]
errors/French/ERR_INVALID_REQ [deleted file]
errors/French/ERR_INVALID_RESP [deleted file]
errors/French/ERR_INVALID_URL [deleted file]
errors/French/ERR_LIFETIME_EXP [deleted file]
errors/French/ERR_NO_RELAY [deleted file]
errors/French/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/French/ERR_READ_ERROR [deleted file]
errors/French/ERR_READ_TIMEOUT [deleted file]
errors/French/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/French/ERR_SHUTTING_DOWN [deleted file]
errors/French/ERR_SOCKET_FAILURE [deleted file]
errors/French/ERR_TOO_BIG [deleted file]
errors/French/ERR_UNSUP_REQ [deleted file]
errors/French/ERR_URN_RESOLVE [deleted file]
errors/French/ERR_WRITE_ERROR [deleted file]
errors/French/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/French/README [deleted file]
errors/French/generic [deleted file]
errors/German/ERR_ACCESS_DENIED [deleted file]
errors/German/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/German/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/German/ERR_CANNOT_FORWARD [deleted file]
errors/German/ERR_CONNECT_FAIL [deleted file]
errors/German/ERR_DNS_FAIL [deleted file]
errors/German/ERR_ESI [deleted file]
errors/German/ERR_FORWARDING_DENIED [deleted file]
errors/German/ERR_FTP_DISABLED [deleted file]
errors/German/ERR_FTP_FAILURE [deleted file]
errors/German/ERR_FTP_FORBIDDEN [deleted file]
errors/German/ERR_FTP_NOT_FOUND [deleted file]
errors/German/ERR_FTP_PUT_CREATED [deleted file]
errors/German/ERR_FTP_PUT_ERROR [deleted file]
errors/German/ERR_FTP_PUT_MODIFIED [deleted file]
errors/German/ERR_FTP_UNAVAILABLE [deleted file]
errors/German/ERR_ICAP_FAILURE [deleted file]
errors/German/ERR_INVALID_REQ [deleted file]
errors/German/ERR_INVALID_RESP [deleted file]
errors/German/ERR_INVALID_URL [deleted file]
errors/German/ERR_LIFETIME_EXP [deleted file]
errors/German/ERR_NO_RELAY [deleted file]
errors/German/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/German/ERR_READ_ERROR [deleted file]
errors/German/ERR_READ_TIMEOUT [deleted file]
errors/German/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/German/ERR_SHUTTING_DOWN [deleted file]
errors/German/ERR_SOCKET_FAILURE [deleted file]
errors/German/ERR_TOO_BIG [deleted file]
errors/German/ERR_UNSUP_REQ [deleted file]
errors/German/ERR_URN_RESOLVE [deleted file]
errors/German/ERR_WRITE_ERROR [deleted file]
errors/German/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/German/README [deleted file]
errors/German/generic [deleted file]
errors/Italian/ERR_ACCESS_DENIED [deleted file]
errors/Italian/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Italian/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Italian/ERR_CANNOT_FORWARD [deleted file]
errors/Italian/ERR_CONNECT_FAIL [deleted file]
errors/Italian/ERR_DNS_FAIL [deleted file]
errors/Italian/ERR_ESI [deleted file]
errors/Italian/ERR_FORWARDING_DENIED [deleted file]
errors/Italian/ERR_FTP_DISABLED [deleted file]
errors/Italian/ERR_FTP_FAILURE [deleted file]
errors/Italian/ERR_FTP_FORBIDDEN [deleted file]
errors/Italian/ERR_FTP_NOT_FOUND [deleted file]
errors/Italian/ERR_FTP_PUT_CREATED [deleted file]
errors/Italian/ERR_FTP_PUT_ERROR [deleted file]
errors/Italian/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Italian/ERR_FTP_UNAVAILABLE [deleted file]
errors/Italian/ERR_ICAP_FAILURE [deleted file]
errors/Italian/ERR_INVALID_REQ [deleted file]
errors/Italian/ERR_INVALID_RESP [deleted file]
errors/Italian/ERR_INVALID_URL [deleted file]
errors/Italian/ERR_LIFETIME_EXP [deleted file]
errors/Italian/ERR_NO_RELAY [deleted file]
errors/Italian/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Italian/ERR_READ_ERROR [deleted file]
errors/Italian/ERR_READ_TIMEOUT [deleted file]
errors/Italian/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Italian/ERR_SHUTTING_DOWN [deleted file]
errors/Italian/ERR_SOCKET_FAILURE [deleted file]
errors/Italian/ERR_TOO_BIG [deleted file]
errors/Italian/ERR_UNSUP_REQ [deleted file]
errors/Italian/ERR_URN_RESOLVE [deleted file]
errors/Italian/ERR_WRITE_ERROR [deleted file]
errors/Italian/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Italian/README [deleted file]
errors/Italian/generic [deleted file]
errors/Makefile.am
errors/Serbian/ERR_ACCESS_DENIED
errors/Serbian/ERR_CACHE_ACCESS_DENIED
errors/Serbian/ERR_CACHE_MGR_ACCESS_DENIED
errors/Serbian/ERR_CANNOT_FORWARD
errors/Serbian/ERR_CONNECT_FAIL
errors/Serbian/ERR_DNS_FAIL
errors/Serbian/ERR_ESI
errors/Serbian/ERR_FORWARDING_DENIED
errors/Serbian/ERR_FTP_DISABLED
errors/Serbian/ERR_FTP_FAILURE
errors/Serbian/ERR_FTP_FORBIDDEN
errors/Serbian/ERR_FTP_NOT_FOUND
errors/Serbian/ERR_FTP_PUT_CREATED
errors/Serbian/ERR_FTP_PUT_ERROR
errors/Serbian/ERR_FTP_PUT_MODIFIED
errors/Serbian/ERR_FTP_UNAVAILABLE
errors/Serbian/ERR_ICAP_FAILURE
errors/Serbian/ERR_INVALID_REQ
errors/Serbian/ERR_INVALID_RESP
errors/Serbian/ERR_INVALID_URL
errors/Serbian/ERR_LIFETIME_EXP
errors/Serbian/ERR_NO_RELAY
errors/Serbian/ERR_ONLY_IF_CACHED_MISS
errors/Serbian/ERR_READ_ERROR
errors/Serbian/ERR_READ_TIMEOUT
errors/Serbian/ERR_SECURE_CONNECT_FAIL
errors/Serbian/ERR_SHUTTING_DOWN
errors/Serbian/ERR_SOCKET_FAILURE
errors/Serbian/ERR_TOO_BIG
errors/Serbian/ERR_UNSUP_REQ
errors/Serbian/ERR_URN_RESOLVE
errors/Serbian/ERR_WRITE_ERROR
errors/Serbian/ERR_ZERO_SIZE_OBJECT
errors/Serbian/README
errors/Serbian/generic
errors/Spanish/ERR_ACCESS_DENIED [deleted file]
errors/Spanish/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Spanish/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Spanish/ERR_CANNOT_FORWARD [deleted file]
errors/Spanish/ERR_CONNECT_FAIL [deleted file]
errors/Spanish/ERR_DNS_FAIL [deleted file]
errors/Spanish/ERR_ESI [deleted file]
errors/Spanish/ERR_FORWARDING_DENIED [deleted file]
errors/Spanish/ERR_FTP_DISABLED [deleted file]
errors/Spanish/ERR_FTP_FAILURE [deleted file]
errors/Spanish/ERR_FTP_FORBIDDEN [deleted file]
errors/Spanish/ERR_FTP_NOT_FOUND [deleted file]
errors/Spanish/ERR_FTP_PUT_CREATED [deleted file]
errors/Spanish/ERR_FTP_PUT_ERROR [deleted file]
errors/Spanish/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Spanish/ERR_FTP_UNAVAILABLE [deleted file]
errors/Spanish/ERR_ICAP_FAILURE [deleted file]
errors/Spanish/ERR_INVALID_REQ [deleted file]
errors/Spanish/ERR_INVALID_RESP [deleted file]
errors/Spanish/ERR_INVALID_URL [deleted file]
errors/Spanish/ERR_LIFETIME_EXP [deleted file]
errors/Spanish/ERR_NO_RELAY [deleted file]
errors/Spanish/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Spanish/ERR_READ_ERROR [deleted file]
errors/Spanish/ERR_READ_TIMEOUT [deleted file]
errors/Spanish/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Spanish/ERR_SHUTTING_DOWN [deleted file]
errors/Spanish/ERR_SOCKET_FAILURE [deleted file]
errors/Spanish/ERR_TOO_BIG [deleted file]
errors/Spanish/ERR_UNSUP_REQ [deleted file]
errors/Spanish/ERR_URN_RESOLVE [deleted file]
errors/Spanish/ERR_WRITE_ERROR [deleted file]
errors/Spanish/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Spanish/README [deleted file]
errors/Spanish/generic [deleted file]
errors/Swedish/ERR_ACCESS_DENIED [deleted file]
errors/Swedish/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Swedish/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Swedish/ERR_CANNOT_FORWARD [deleted file]
errors/Swedish/ERR_CONNECT_FAIL [deleted file]
errors/Swedish/ERR_DNS_FAIL [deleted file]
errors/Swedish/ERR_ESI [deleted file]
errors/Swedish/ERR_FORWARDING_DENIED [deleted file]
errors/Swedish/ERR_FTP_DISABLED [deleted file]
errors/Swedish/ERR_FTP_FAILURE [deleted file]
errors/Swedish/ERR_FTP_FORBIDDEN [deleted file]
errors/Swedish/ERR_FTP_NOT_FOUND [deleted file]
errors/Swedish/ERR_FTP_PUT_CREATED [deleted file]
errors/Swedish/ERR_FTP_PUT_ERROR [deleted file]
errors/Swedish/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Swedish/ERR_FTP_UNAVAILABLE [deleted file]
errors/Swedish/ERR_ICAP_FAILURE [deleted file]
errors/Swedish/ERR_INVALID_REQ [deleted file]
errors/Swedish/ERR_INVALID_RESP [deleted file]
errors/Swedish/ERR_INVALID_URL [deleted file]
errors/Swedish/ERR_LIFETIME_EXP [deleted file]
errors/Swedish/ERR_NO_RELAY [deleted file]
errors/Swedish/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Swedish/ERR_READ_ERROR [deleted file]
errors/Swedish/ERR_READ_TIMEOUT [deleted file]
errors/Swedish/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Swedish/ERR_SHUTTING_DOWN [deleted file]
errors/Swedish/ERR_SOCKET_FAILURE [deleted file]
errors/Swedish/ERR_TOO_BIG [deleted file]
errors/Swedish/ERR_UNSUP_REQ [deleted file]
errors/Swedish/ERR_URN_RESOLVE [deleted file]
errors/Swedish/ERR_WRITE_ERROR [deleted file]
errors/Swedish/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Swedish/README [deleted file]
errors/Swedish/generic [deleted file]
errors/TRANSLATORS [new file with mode: 0644]
errors/Ukrainian-1251/ERR_ACCESS_DENIED [deleted file]
errors/Ukrainian-1251/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Ukrainian-1251/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Ukrainian-1251/ERR_CANNOT_FORWARD [deleted file]
errors/Ukrainian-1251/ERR_CONNECT_FAIL [deleted file]
errors/Ukrainian-1251/ERR_DNS_FAIL [deleted file]
errors/Ukrainian-1251/ERR_ESI [deleted file]
errors/Ukrainian-1251/ERR_FORWARDING_DENIED [deleted file]
errors/Ukrainian-1251/ERR_FTP_DISABLED [deleted file]
errors/Ukrainian-1251/ERR_FTP_FAILURE [deleted file]
errors/Ukrainian-1251/ERR_FTP_FORBIDDEN [deleted file]
errors/Ukrainian-1251/ERR_FTP_NOT_FOUND [deleted file]
errors/Ukrainian-1251/ERR_FTP_PUT_CREATED [deleted file]
errors/Ukrainian-1251/ERR_FTP_PUT_ERROR [deleted file]
errors/Ukrainian-1251/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Ukrainian-1251/ERR_FTP_UNAVAILABLE [deleted file]
errors/Ukrainian-1251/ERR_ICAP_FAILURE [deleted file]
errors/Ukrainian-1251/ERR_INVALID_REQ [deleted file]
errors/Ukrainian-1251/ERR_INVALID_RESP [deleted file]
errors/Ukrainian-1251/ERR_INVALID_URL [deleted file]
errors/Ukrainian-1251/ERR_LIFETIME_EXP [deleted file]
errors/Ukrainian-1251/ERR_NO_RELAY [deleted file]
errors/Ukrainian-1251/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Ukrainian-1251/ERR_READ_ERROR [deleted file]
errors/Ukrainian-1251/ERR_READ_TIMEOUT [deleted file]
errors/Ukrainian-1251/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Ukrainian-1251/ERR_SHUTTING_DOWN [deleted file]
errors/Ukrainian-1251/ERR_SOCKET_FAILURE [deleted file]
errors/Ukrainian-1251/ERR_TOO_BIG [deleted file]
errors/Ukrainian-1251/ERR_UNSUP_REQ [deleted file]
errors/Ukrainian-1251/ERR_URN_RESOLVE [deleted file]
errors/Ukrainian-1251/ERR_WRITE_ERROR [deleted file]
errors/Ukrainian-1251/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Ukrainian-1251/README [deleted file]
errors/Ukrainian-koi8-u/ERR_ACCESS_DENIED [deleted file]
errors/Ukrainian-koi8-u/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Ukrainian-koi8-u/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Ukrainian-koi8-u/ERR_CANNOT_FORWARD [deleted file]
errors/Ukrainian-koi8-u/ERR_CONNECT_FAIL [deleted file]
errors/Ukrainian-koi8-u/ERR_DNS_FAIL [deleted file]
errors/Ukrainian-koi8-u/ERR_ESI [deleted file]
errors/Ukrainian-koi8-u/ERR_FORWARDING_DENIED [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_DISABLED [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_FAILURE [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_FORBIDDEN [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_NOT_FOUND [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_PUT_CREATED [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_PUT_ERROR [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Ukrainian-koi8-u/ERR_FTP_UNAVAILABLE [deleted file]
errors/Ukrainian-koi8-u/ERR_ICAP_FAILURE [deleted file]
errors/Ukrainian-koi8-u/ERR_INVALID_REQ [deleted file]
errors/Ukrainian-koi8-u/ERR_INVALID_RESP [deleted file]
errors/Ukrainian-koi8-u/ERR_INVALID_URL [deleted file]
errors/Ukrainian-koi8-u/ERR_LIFETIME_EXP [deleted file]
errors/Ukrainian-koi8-u/ERR_NO_RELAY [deleted file]
errors/Ukrainian-koi8-u/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Ukrainian-koi8-u/ERR_READ_ERROR [deleted file]
errors/Ukrainian-koi8-u/ERR_READ_TIMEOUT [deleted file]
errors/Ukrainian-koi8-u/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Ukrainian-koi8-u/ERR_SHUTTING_DOWN [deleted file]
errors/Ukrainian-koi8-u/ERR_SOCKET_FAILURE [deleted file]
errors/Ukrainian-koi8-u/ERR_TOO_BIG [deleted file]
errors/Ukrainian-koi8-u/ERR_UNSUP_REQ [deleted file]
errors/Ukrainian-koi8-u/ERR_URN_RESOLVE [deleted file]
errors/Ukrainian-koi8-u/ERR_WRITE_ERROR [deleted file]
errors/Ukrainian-koi8-u/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Ukrainian-koi8-u/README [deleted file]
errors/Ukrainian-utf8/ERR_ACCESS_DENIED [deleted file]
errors/Ukrainian-utf8/ERR_CACHE_ACCESS_DENIED [deleted file]
errors/Ukrainian-utf8/ERR_CACHE_MGR_ACCESS_DENIED [deleted file]
errors/Ukrainian-utf8/ERR_CANNOT_FORWARD [deleted file]
errors/Ukrainian-utf8/ERR_CONNECT_FAIL [deleted file]
errors/Ukrainian-utf8/ERR_DNS_FAIL [deleted file]
errors/Ukrainian-utf8/ERR_ESI [deleted file]
errors/Ukrainian-utf8/ERR_FORWARDING_DENIED [deleted file]
errors/Ukrainian-utf8/ERR_FTP_DISABLED [deleted file]
errors/Ukrainian-utf8/ERR_FTP_FAILURE [deleted file]
errors/Ukrainian-utf8/ERR_FTP_FORBIDDEN [deleted file]
errors/Ukrainian-utf8/ERR_FTP_NOT_FOUND [deleted file]
errors/Ukrainian-utf8/ERR_FTP_PUT_CREATED [deleted file]
errors/Ukrainian-utf8/ERR_FTP_PUT_ERROR [deleted file]
errors/Ukrainian-utf8/ERR_FTP_PUT_MODIFIED [deleted file]
errors/Ukrainian-utf8/ERR_FTP_UNAVAILABLE [deleted file]
errors/Ukrainian-utf8/ERR_ICAP_FAILURE [deleted file]
errors/Ukrainian-utf8/ERR_INVALID_REQ [deleted file]
errors/Ukrainian-utf8/ERR_INVALID_RESP [deleted file]
errors/Ukrainian-utf8/ERR_INVALID_URL [deleted file]
errors/Ukrainian-utf8/ERR_LIFETIME_EXP [deleted file]
errors/Ukrainian-utf8/ERR_NO_RELAY [deleted file]
errors/Ukrainian-utf8/ERR_ONLY_IF_CACHED_MISS [deleted file]
errors/Ukrainian-utf8/ERR_READ_ERROR [deleted file]
errors/Ukrainian-utf8/ERR_READ_TIMEOUT [deleted file]
errors/Ukrainian-utf8/ERR_SECURE_CONNECT_FAIL [deleted file]
errors/Ukrainian-utf8/ERR_SHUTTING_DOWN [deleted file]
errors/Ukrainian-utf8/ERR_SOCKET_FAILURE [deleted file]
errors/Ukrainian-utf8/ERR_TOO_BIG [deleted file]
errors/Ukrainian-utf8/ERR_UNSUP_REQ [deleted file]
errors/Ukrainian-utf8/ERR_URN_RESOLVE [deleted file]
errors/Ukrainian-utf8/ERR_WRITE_ERROR [deleted file]
errors/Ukrainian-utf8/ERR_ZERO_SIZE_OBJECT [deleted file]
errors/Ukrainian-utf8/README [deleted file]
errors/ca.po [new file with mode: 0644]
errors/da.po [new file with mode: 0644]
errors/de.po [new file with mode: 0644]
errors/dictionary.pot [new file with mode: 0644]
errors/en-au.po [new file with mode: 0644]
errors/en-gb.po [new file with mode: 0644]
errors/en.po [new file with mode: 0644]
errors/es.po [new file with mode: 0644]
errors/fr.po [new file with mode: 0644]
errors/id.po [new file with mode: 0644]
errors/it.po [new file with mode: 0644]
errors/nl.po [new file with mode: 0644]
errors/pt-br.po [new file with mode: 0644]
errors/sv.po [new file with mode: 0644]
errors/templates/ERR_ACCESS_DENIED [new file with mode: 0644]
errors/templates/ERR_CACHE_ACCESS_DENIED [new file with mode: 0644]
errors/templates/ERR_CACHE_MGR_ACCESS_DENIED [new file with mode: 0644]
errors/templates/ERR_CANNOT_FORWARD [new file with mode: 0644]
errors/templates/ERR_CONNECT_FAIL [new file with mode: 0644]
errors/templates/ERR_DNS_FAIL [new file with mode: 0644]
errors/templates/ERR_ESI [new file with mode: 0644]
errors/templates/ERR_FORWARDING_DENIED [new file with mode: 0644]
errors/templates/ERR_FTP_DISABLED [new file with mode: 0644]
errors/templates/ERR_FTP_FAILURE [new file with mode: 0644]
errors/templates/ERR_FTP_FORBIDDEN [new file with mode: 0644]
errors/templates/ERR_FTP_NOT_FOUND [new file with mode: 0644]
errors/templates/ERR_FTP_PUT_CREATED [new file with mode: 0644]
errors/templates/ERR_FTP_PUT_ERROR [new file with mode: 0644]
errors/templates/ERR_FTP_PUT_MODIFIED [new file with mode: 0644]
errors/templates/ERR_FTP_UNAVAILABLE [new file with mode: 0644]
errors/templates/ERR_ICAP_FAILURE [new file with mode: 0644]
errors/templates/ERR_INVALID_REQ [new file with mode: 0644]
errors/templates/ERR_INVALID_RESP [new file with mode: 0644]
errors/templates/ERR_INVALID_URL [new file with mode: 0644]
errors/templates/ERR_LIFETIME_EXP [new file with mode: 0644]
errors/templates/ERR_NO_RELAY [new file with mode: 0644]
errors/templates/ERR_ONLY_IF_CACHED_MISS [new file with mode: 0644]
errors/templates/ERR_READ_ERROR [new file with mode: 0644]
errors/templates/ERR_READ_TIMEOUT [new file with mode: 0644]
errors/templates/ERR_SECURE_CONNECT_FAIL [new file with mode: 0644]
errors/templates/ERR_SHUTTING_DOWN [new file with mode: 0644]
errors/templates/ERR_SOCKET_FAILURE [new file with mode: 0644]
errors/templates/ERR_TOO_BIG [new file with mode: 0644]
errors/templates/ERR_UNSUP_REQ [new file with mode: 0644]
errors/templates/ERR_URN_RESOLVE [new file with mode: 0644]
errors/templates/ERR_WRITE_ERROR [new file with mode: 0644]
errors/templates/ERR_ZERO_SIZE_OBJECT [new file with mode: 0644]
errors/templates/generic [new file with mode: 0644]
errors/uk.po [new file with mode: 0644]
errors/update-pot.sh [new file with mode: 0755]
helpers/basic_auth/MSNT/confload.c
helpers/basic_auth/MSNT/session.c
helpers/basic_auth/squid_radius_auth/radius-util.h [changed mode: 0755->0644]
helpers/basic_auth/squid_radius_auth/squid_rad_auth.c [changed mode: 0755->0644]
helpers/external_acl/ldap_group/squid_ldap_group.c
helpers/external_acl/mswin_ad_group/config.test
helpers/external_acl/session/squid_session.c [changed mode: 0755->0644]
helpers/negotiate_auth/squid_kerb_auth/spnegohelp/spnegohelp.c
helpers/negotiate_auth/squid_kerb_auth/spnegohelp/spnegohelp.h
helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c
helpers/ntlm_auth/fakeauth/fakeauth_auth.c
helpers/ntlm_auth/no_check/no_check.pl
icons/Makefile.am
icons/anthony-binhex.gif [new file with mode: 0644]
icons/anthony-bomb.gif [new file with mode: 0644]
icons/anthony-box.gif [new file with mode: 0644]
icons/anthony-box2.gif [new file with mode: 0644]
icons/anthony-c.gif [new file with mode: 0644]
icons/anthony-compressed.gif [new file with mode: 0644]
icons/anthony-dir.gif [new file with mode: 0644]
icons/anthony-dirup.gif [new file with mode: 0644]
icons/anthony-dvi.gif [new file with mode: 0644]
icons/anthony-f.gif [new file with mode: 0644]
icons/anthony-image.gif [new file with mode: 0644]
icons/anthony-image2.gif [new file with mode: 0644]
icons/anthony-layout.gif [new file with mode: 0644]
icons/anthony-link.gif [new file with mode: 0644]
icons/anthony-movie.gif [new file with mode: 0644]
icons/anthony-pdf.gif [new file with mode: 0644]
icons/anthony-portal.gif [new file with mode: 0644]
icons/anthony-ps.gif [new file with mode: 0644]
icons/anthony-quill.gif [new file with mode: 0644]
icons/anthony-script.gif [new file with mode: 0644]
icons/anthony-sound.gif [new file with mode: 0644]
icons/anthony-tar.gif [new file with mode: 0644]
icons/anthony-tex.gif [new file with mode: 0644]
icons/anthony-text.gif [new file with mode: 0644]
icons/anthony-unknown.gif [new file with mode: 0644]
icons/anthony-xbm.gif [new file with mode: 0644]
icons/anthony-xpm.gif [new file with mode: 0644]
icons/icons.shar [deleted file]
include/CbDataList.h [moved from include/List.h with 72% similarity]
include/IPAddress.h
include/config.h
include/profiling.h
include/squid_mswin.h
include/util.h
include/version.h
lib/IPAddress.cc
lib/Makefile.am [changed mode: 0644->0755]
lib/charset.c [new file with mode: 0644]
lib/dirent.c [new file with mode: 0644]
lib/encrypt.c [new file with mode: 0644]
lib/getaddrinfo.c
lib/getopt.c [new file with mode: 0644]
lib/inet_ntoa.c [changed mode: 0755->0644]
lib/radix.c [changed mode: 0755->0644]
lib/sspwin32.c
lib/strnstr.cc [changed mode: 0755->0644]
lib/tests/testIPAddress.cc
lib/util.c
lib/win32lib.c [changed mode: 0755->0644]
mksnapshot-cron.sh
mksnapshot.sh
scripts/formater.pl [new file with mode: 0755]
scripts/md5checker.sh [new file with mode: 0755]
snmplib/asn1.c
squid3.dox
src/ACLARP.cc
src/ACLASN.h
src/ACLChecklist.cc
src/ACLIP.cc
src/ACLIdent.cc
src/ACLIntRange.cc
src/ACLIntRange.h
src/ACLMaxUserIP.cc
src/ACLMethodData.cc
src/ACLMethodData.h
src/ACLProtocolData.cc
src/ACLProtocolData.h
src/ACLProxyAuth.cc
src/ACLSslErrorData.cc
src/ACLSslErrorData.h
src/AccessLogEntry.h
src/AsyncCalls.dox [new file with mode: 0644]
src/AuthConfig.cc
src/AuthConfig.h
src/AuthUser.cc
src/CacheManager.h
src/Comm.dox [new file with mode: 0644]
src/CommCalls.cc
src/CommCalls.h
src/CommRead.h
src/ConfigParser.cc
src/ConfigParser.h
src/DelayId.cc
src/DelayPools.h
src/DescriptorSet.cc [new file with mode: 0644]
src/DescriptorSet.h [new file with mode: 0644]
src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.cc
src/DiskIO/DiskDaemon/DiskDaemonDiskIOModule.h
src/DiskIO/DiskIOModule.cc
src/DiskIO/DiskIOModule.h
src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.cc
src/DiskIO/DiskThreads/DiskThreadsDiskIOModule.h
src/DiskIO/DiskThreads/DiskThreadsIOStrategy.cc
src/DiskIO/DiskThreads/DiskThreadsIOStrategy.h
src/ESI.cc
src/ESIElement.h
src/ESIInclude.cc
src/ExternalACL.h
src/HttpHeader.cc
src/HttpHeader.h
src/HttpReply.cc
src/HttpRequest.cc
src/HttpRequest.h
src/HttpRequestMethod.cc
src/HttpRequestMethod.h
src/HttpStatusLine.cc
src/ICAP/ICAPModXact.cc
src/ICAP/Makefile.am
src/ICMPPinger.cc
src/ICMPSquid.cc
src/ICMPv4.h
src/IPInterception.cc
src/IPInterception.h
src/Makefile.am [changed mode: 0755->0644]
src/Mem.h
src/MemBuf.cc
src/ProfStats.cc
src/Server.cc
src/Server.h
src/SquidString.h
src/Store.h
src/StoreFileSystem.cc
src/StoreFileSystem.h
src/StoreIOBuffer.h
src/StoreSearch.h
src/String.cc
src/String.cci
src/WinSvc.cc [changed mode: 0755->0644]
src/access_log.cc
src/adaptation/AccessCheck.cc
src/adaptation/Makefile.am
src/asn.cc
src/auth/Makefile.am
src/auth/basic/auth_basic.cc
src/auth/basic/auth_basic.h
src/auth/digest/auth_digest.cc
src/auth/digest/auth_digest.h
src/auth/negotiate/auth_negotiate.cc
src/auth/negotiate/auth_negotiate.h
src/auth/ntlm/auth_ntlm.cc
src/auth/ntlm/auth_ntlm.h
src/authenticate.cc
src/authenticate.h
src/cache_cf.cc
src/cache_manager.cc
src/carp.cc
src/cbdata.cc
src/cbdata.h
src/cf.data.depend
src/cf.data.pre
src/cf_gen.cc
src/client_db.cc
src/client_side.cc
src/client_side.h
src/client_side_reply.cc
src/client_side_request.cc
src/client_side_request.h
src/comm.cc
src/comm.h
src/comm_epoll.cc
src/comm_epoll.h
src/comm_kqueue.cc
src/comm_kqueue.h
src/comm_poll.cc
src/comm_poll.h
src/comm_select.cc
src/comm_select.h
src/comm_select_win32.cc
src/debug.cc [changed mode: 0755->0644]
src/defines.h
src/delay_pools.cc
src/disk.cc
src/dns.cc
src/dns_internal.cc [changed mode: 0755->0644]
src/dnsserver.cc
src/enums.h
src/errorpage.cc
src/errorpage.h
src/event.cc
src/event.h
src/external_acl.cc
src/fd.cc
src/fde.h
src/forward.cc
src/forward.h
src/fqdncache.cc
src/fs/Makefile.am
src/fs/coss/StoreFScoss.cc
src/fs/coss/StoreFScoss.h
src/ftp.cc
src/globals.h
src/htcp.cc
src/htcp.h
src/http.cc
src/http.h
src/icp_v2.cc
src/ident.cc
src/ident.h [new file with mode: 0644]
src/ipcache.cc
src/main.cc
src/mem.cc
src/neighbors.cc
src/net_db.cc
src/pconn.cc
src/pconn.h
src/peer_select.cc
src/peer_sourcehash.cc [new file with mode: 0644]
src/peer_userhash.cc [new file with mode: 0644]
src/pinger.cc
src/protos.h
src/redirect.cc
src/refresh.cc
src/repl/Makefile.am
src/send-announce.cc
src/snmp_agent.cc
src/squid.h
src/stat.cc
src/store.cc
src/store_digest.cc
src/store_log.cc
src/structs.h
src/tests/stub_cache_manager.cc [new file with mode: 0644]
src/tests/testACLMaxUserIP.cc
src/tests/testAuth.cc
src/tests/testBoilerplate.cc
src/tests/testCacheManager.cc
src/tests/testCoss.cc
src/tests/testDiskIO.cc
src/tests/testHttpRequestMethod.cc
src/tests/testICMP.cc
src/tests/testNull.cc
src/tests/testStore.cc
src/tests/testStoreController.cc
src/tests/testStoreEntryStream.cc
src/tests/testStoreHashIndex.cc
src/tests/testURLScheme.cc
src/tools.cc
src/tunnel.cc
src/url.cc
src/urn.cc
src/wccp2.cc
src/win32.cc
test-builds.sh [new file with mode: 0755]
test-suite/MemPoolTest.cc
test-suite/StackTest.cc
test-suite/VirtualDeleteOperator.cc
test-suite/buildtest.sh [new file with mode: 0755]
test-suite/buildtests/layer-00-default.opts [new file with mode: 0644]
test-suite/buildtests/layer-01-minimal.opts [new file with mode: 0644]
test-suite/buildtests/os-debian.opts [new file with mode: 0644]
test-suite/buildtests/os-ubuntu.opts [new file with mode: 0644]
test-suite/debug.cc
test-suite/mem_hdr_test.cc
test-suite/mem_node_test.cc
test-suite/syntheticoperators.cc
tools/Makefile.am
tools/cachemgr.cc
tools/squidclient.cc

diff --git a/CREDITS b/CREDITS
index 22712c7f74b0b0c377d5f3ad47f7d681e8743c4b..89affeba6c882a8fc061d0ac6561fc9b96fc6ee3 100755 (executable)
--- a/CREDITS
+++ b/CREDITS
@@ -318,6 +318,41 @@ lib/strnstr.cc:
 
 ==============================================================================
 
+lib/getopt.c:
+
+/*
+ * Copyright (c) 1987, 1993, 1994
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+static char sccsid[] = "@(#)getopt.c   8.3 (Berkeley) 4/27/95";
+
+==============================================================================
+
 src/external_acl.c
 
 Copyright (C) 2002 MARA Systems AB, Sweden <info@marasystems.com>
index 5d95ead0ca88acf1d7a83f4e1b922f340938aa84..8327869d87a1eccf3deb3dfd77681110e34b53fa 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,7 +2,7 @@ Changes to squid-3.HEAD (current):
 
        - IPv6 (Internet Protocol version 6) support
        - ICMPv6 (Internet Control Message Protocol version 6) support
-       - FTP agent now supports EPRT command
+       - FTP agent now supports EPSV/EPRT commands
        - DNS internal resolver now supports AAAA and CNAME records
        - SNMP peer and client tables now support IPv6
        - SNMP peer table supports named peers with multiple entries per IP
@@ -12,6 +12,64 @@ Changes to squid-3.HEAD (current):
          can be expected using ICAP.
        - TPROXY version 4 support now included.
        - IPFW and Netfilter interception methods may now both be built in one binary.
+       - ZPH Quality of Service patch now integrated
+       - Null store now fully obsoleted and removed
+       - Unknown request methods all supported
+       - Follow_x_forwarder_for ported from 2.6
+       - Follow XFF extensions added
+
+Changes to squid-3.0.STABLE6 (20 May 2008):
+       - Bug 2254: umask Feature from 2.6 added
+       - cachemgr.cgi default config file added
+       - Several authentication bug fixes
+       - Improved Windows Support
+       - better DNS lookup methods for unqualified hostames
+       - better support for 64-bit environments
+       - Bug 2332: Crash when tunnelling
+       - Removed the advertisement clause from BSD licenses
+         according to the GPLv2+ changes in BSD
+       - ... and other bugs and minor cleanups
+
+Changes to squid-3.0.STABLE5 (28 Apr 2008):
+
+       - Support for resolv.conf 'domain' option
+       - Improved URI support, including
+               longer URI up to 8192 bytes accepted
+               better handling of intercepted URI
+               better port for non-FQDN URI lookups
+       - Improved logging, including
+               Bug 3210 fixed: incorrect timestamp format in earlier 3.0 releases.
+               Fixed 'log_ip_on_direct' option behaviour
+       - Support for profiling on x86 64-bit systems
+       - .. and other bugs and minor code cleanups.
+
+Changes to squid-3.0.STABLE4 (2 Apr 2008):
+
+       - Bug 2288: compile error slipped into STABLE3.
+
+Changes to squid-3.0.STABLE3 (31 Mar 2008):
+
+       - Improved HTTP 1.1 support.
+       - Improved MacOSX (Leopard) support
+       - Bug 2206: Proxy-Authentication regression in STABLE2.
+       - Strip Domain from NTLM usernames for use in class 4 Delay Pools
+       - ... and other bugs and minor code cleanup
+
+Changes to squid-3.0.STABLE2 (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):
 
@@ -26,7 +84,7 @@ Changes to squid-3.0.STABLE1 (13 Dec 2007):
 
 Older ChangeLog follows. The sections relating to Squid-2.6 is not entirely
 authorative for this release and mirrored here for reference only.
-       
+
        - CARP now plays well with the other peering algorithms,
          and support for CARP peerings is compiled by default. Can be
          disabled by --disable-carp
index d274f6b51f1f91c4de145b1e295c767cf02b9e9b..bcac5ab6817c3eb467859a1d9ee8f882fd61e7da 100644 (file)
@@ -19,57 +19,74 @@ Uncomment and edit the following lines in /usr/local/squid/etc/squid.conf:
 
 ==============================================================================
 
-cache_peer, never_direct/always_direct
-
-    If you have a parent cache, put it here.  The administrators of the
-    parent cache typically provided you with instructions.  You should
-    always ask permission before adding a parent cache. See also the
-    never_direct/always_direct directives.
-
-cache_dir ufs /usr/local/squid/var/cache 100 16 256
-
-    Add here (first number, here 100) the amount of hard disk space 
-    (in megabytes) to devote to caching.
-
-acl, http_access, icp_access
+acl, http_access
 
     Access control lists.  This is important because it prevents people
     from stealing your network resources.  To fill in the
-    "allowed_hosts" ACL, use your network address (for instance
-    192.168.10.0 and your network mask (for instance 255.255.255.0):
+    "localnet" ACL, use your network address (for instance 192.168.10.0
+    your CIDR network mask (for instance 255.255.255.0 or /24):
 
         acl manager proto cache_object
-        acl localhost src 127.0.0.1/255.255.255.255
-        acl all src 0.0.0.0/0.0.0.0
-        acl allowed_hosts src 192.168.10.0/255.255.255.0
+        acl localhost src 127.0.0.1
+        acl localnet src 192.168.10.0/24
 
         http_access deny manager all
-        http_access allow allowed_hosts
+        http_access allow localnet
         http_access deny all
 
-        icp_access  allow  allowed_hosts
-        icp_access deny all
-
 cache_mgr
 
     Put here the e-mail address of the manager:
 
+visible_hostname
+
+    The host name you advertise for the cache.
+
 cache_effective_user
 
+    If building your own squid; use ./configure --with-default-user=X
+
     If you must start Squid as root, find a safe user and group to run
     as after startup (typically "nobody" and "nogroup").  Do not use
     "root", for security reasons.
 
-visible_hostname
 
-    The host name you advertise for the cache.
+==============================================================================
+
+Some configuration lines which are optional but may be needed.
+
+
+cache_dir ufs /usr/local/squid/var/cache 100 16 256
+
+    Add here (first number, here 100) the amount of hard disk space 
+    (in megabytes) to devote to caching.
+    The default is to store files in 256 MB of memory instead of disk
+
+    Linux :  use aufs instead of ufs
+    BSD   :  use diskd instead of ufs
+
+cache_mem 256 MB
+
+    How much memory to allocate for cached files in-memory.
+    The default is shown.
+
+cache_peer, never_direct/always_direct
+
+    If you have a parent cache, put it here.  The administrators of the
+    parent cache typically provided you with instructions.  You should
+    always ask permission before adding a parent cache. See also the
+    never_direct/always_direct directives.
+
 
 ==============================================================================
 
 After editing squid.conf to your liking, run Squid from the command
 line TWICE:
 
+To create any disk cache_dir configured:
     % /usr/local/squid/sbin/squid -z
+
+To start squid:
     % /usr/local/squid/sbin/squid 
 
 Check in the cache.log (/usr/local/squid/var/logs/cache.log) that
index ec8cc4bd150501a118dda9963bf6be6ee1fdf9f0..3fa8a95a6f7a84964e6f5796fd4ffe03e5034c3b 100644 (file)
@@ -93,3 +93,76 @@ exit $res`
     HUGE_OBJECT_FLAG=""
   fi
 ]) # end of AC_DEFUN of AC_TEST_CHECKFORHUGEOBJECTS
+
+
+dnl ===========================================================================
+dnl              http://autoconf-archive.cryp.to/ax_with_prog.html
+dnl ===========================================================================
+dnl
+dnl SYNOPSIS
+dnl
+dnl   AX_WITH_PROG([VARIABLE],[program],[VALUE-IF-NOT-FOUND],[PATH])
+dnl
+dnl DESCRIPTION
+dnl
+dnl   Locates an installed program binary, placing the result in the precious
+dnl   variable VARIABLE. Accepts a present VARIABLE, then --with-program, and
+dnl   failing that searches for program in the given path (which defaults to
+dnl   the system path). If program is found, VARIABLE is set to the full path
+dnl   of the binary; if it is not found VARIABLE is set to VALUE-IF-NOT-FOUND
+dnl   if provided, unchanged otherwise.
+dnl
+dnl   A typical example could be the following one:
+dnl
+dnl         AX_WITH_PROG(PERL,perl)
+dnl
+dnl   NOTE: This macro is based upon the original AX_WITH_PYTHON macro from
+dnl   Dustin J. Mitchell <dustin@cs.uchicago.edu>.
+dnl
+dnl LAST MODIFICATION
+dnl
+dnl   2008-05-05
+dnl
+dnl COPYLEFT
+dnl
+dnl   Copyright (c) 2008 Francesco Salvestrini <salvestrini@users.sourceforge.net>
+dnl   Copyright (c) 2008 Dustin J. Mitchell <dustin@cs.uchicago.edu>
+dnl
+dnl   Copying and distribution of this file, with or without modification, are
+dnl   permitted in any medium without royalty provided the copyright notice
+dnl   and this notice are preserved.
+dnl
+AC_DEFUN([AX_WITH_PROG],[
+    AC_PREREQ([2.61])
+
+    pushdef([VARIABLE],$1)
+    pushdef([EXECUTABLE],$2)
+    pushdef([VALUE_IF_NOT_FOUND],$3)
+    pushdef([PATH_PROG],$4)
+
+    AC_ARG_VAR(VARIABLE,Absolute path to EXECUTABLE executable)
+
+    AS_IF(test -z "$VARIABLE",[
+       AC_MSG_CHECKING(whether EXECUTABLE executable path has been provided)
+        AC_ARG_WITH(EXECUTABLE,AS_HELP_STRING([--with-EXECUTABLE=[[[[PATH]]]]],absolute path to EXECUTABLE executable), [
+           AS_IF([test "$withval" != "yes"],[
+               VARIABLE="$withval"
+               AC_MSG_RESULT($VARIABLE)
+           ],[
+               VARIABLE=""
+               AC_MSG_RESULT([no])
+           ])
+       ],[
+           AC_MSG_RESULT([no])
+       ])
+
+        AS_IF(test -z "$VARIABLE",[
+           AC_PATH_PROG([]VARIABLE[],[]EXECUTABLE[],[]VALUE_IF_NOT_FOUND[],[]PATH_PROG[])
+        ])
+    ])
+
+    popdef([PATH_PROG])
+    popdef([VALUE_IF_NOT_FOUND])
+    popdef([EXECUTABLE])
+    popdef([VARIABLE])
+])
index ac34b2d268399bb8e66c22a887f2c1b5b3ee5acb..3e8e08315a8760bf53eb4b9e989afad92db143a3 100755 (executable)
@@ -30,6 +30,13 @@ AC_LANG_C
 AC_PROG_CXX
 AC_CANONICAL_HOST
 
+dnl Make location configure settings available to the code
+dnl Pass squid data directory (icons, errors etc)  base location to code files as a compiler define
+CFLAGS="-DDEFAULT_SQUID_DATA_DIR=\\\"$datadir\\\" $CFLAGS"
+CXXFLAGS="-DDEFAULT_SQUID_DATA_DIR=\\\"$datadir\\\" $CXXFLAGS"
+dnl Pass squid.conf directory base location to code files as a compiler define
+CFLAGS="-DDEFAULT_SQUID_CONFIG_DIR=\\\"$sysconfdir\\\" $CFLAGS"
+CXXFLAGS="-DDEFAULT_SQUID_CONFIG_DIR=\\\"$sysconfdir\\\" $CXXFLAGS"
 
 use_loadable_modules=1
 AC_MSG_CHECKING(whether to use loadable modules)
@@ -51,7 +58,7 @@ AC_ARG_ENABLE(loadable-modules,
         use_loadable_modules=yes;
         AC_MSG_RESULT([$use_loadable_modules, implicitly])
     ]
-)        
+)
 
 AM_CONDITIONAL(USE_LOADABLE_MODULES, test $use_loadable_modules = yes)
 
@@ -356,18 +363,6 @@ AC_ARG_ENABLE(xmalloc-statistics,
   fi
 ])
 
-use_carp=1
-AC_ARG_ENABLE(carp,
-[  --disable-carp          Disable CARP support],
-[ if test "$enableval" = "no" ; then
-    echo "CARP disabled"
-    use_carp=0
-  fi
-])      
-if test $use_carp = 1; then
-    AC_DEFINE(USE_CARP, 1, [Cache Array Routing Protocol])
-fi
-
 AC_ARG_ENABLE(async-io,
 [  --enable-async-io[=N_THREADS]
                           Shorthand for
@@ -398,8 +393,7 @@ AC_ARG_WITH(aufs-threads,
     aufs_io_threads=$withval
     ;;
   *)
-    echo "ERROR: Invalid --with-aufs-threads argument"
-    exit 1
+    AC_MSG_ERROR(--with-aufs-threads expects a numeric argument)
     ;;
   esac
 ])
@@ -459,8 +453,7 @@ if test -n "$STORE_MODULES"; then
        if test -d $srcdir/src/fs/$module; then
            :
        else
-           echo "ERROR: storeio $module does not exists"
-           exit 1
+           AC_MSG_ERROR(storeio $module does not exist)
        fi
     done
     echo "Store modules built: $STORE_MODULES"
@@ -567,8 +560,7 @@ if test -n "$DISK_MODULES"; then
        if test -d $srcdir/src/DiskIO/$module; then
            :
        else
-           echo "ERROR: disk-io $module does not exists"
-           exit 1
+           AC_MSG_ERROR(disk-io $module does not exist)
        fi
     done
     DISK_LIBS="lib`echo $DISK_MODULES|sed -e 's% %.a lib%g'`.a"
@@ -697,8 +689,7 @@ if test -n "$REPL_POLICIES"; then
        if test -d $srcdir/src/repl/$module; then
            :
        else
-           echo "ERROR: Removal policy $module does not exists"
-           exit 1
+           AC_MSG_ERROR(Removal policy $module does not exist)
        fi
     done
     echo "Removal policies built: $REPL_POLICIES"
@@ -1048,55 +1039,17 @@ AC_ARG_ENABLE(forw-via-db,
 
 AC_ARG_ENABLE(cache-digests,
 [  --enable-cache-digests  Use Cache Digests
-                          see http://www.squid-cache.org/FAQ/FAQ-16.html],
+                          see http://wiki.squid-cache.org/SquidFaq/CacheDigests],
 [ if test "$enableval" = "yes" ; then
     echo "USE_CACHE_DIGESTS enabled"
     AC_DEFINE(USE_CACHE_DIGESTS,1,[Use Cache Digests for locating objects in neighbor caches.  This code is still semi-experimental.])
   fi
 ])
 
-dnl Select Default Error language
-AC_ARG_ENABLE(default-err-language,
-[  --enable-default-err-language=lang
-                          Select default language for Error pages (see
-                          errors directory) ],
-[
-    if test -d $srcdir/errors/$enableval; then
-       ERR_DEFAULT_LANGUAGE=$enableval
-    else
-       echo "ERROR! Unknown language $enableval, see errors/ directory"
-       exit 1
-    fi
-],[ERR_DEFAULT_LANGUAGE="English"])
-AC_SUBST(ERR_DEFAULT_LANGUAGE)
-
-dnl Select languages to be installed
-AC_ARG_ENABLE(err-languages,
-[  --enable-err-languages=\"lang1 lang2..\"
-                          Select languages to be installed. (All will be
-                          installed by default) ],
-[
-    for l in $enableval; do
-        if test -d $srcdir/errors/$l; then :; else
-           echo "ERROR! Unknown language $$l, see errors/"
-           exit 1
-       fi
-    done
-    ERR_LANGUAGES=$enableval
-],[
-    ERR_LANGUAGES=
-    for l in $srcdir/errors/*; do
-        if test -f $l/ERR_ACCESS_DENIED; then
-            ERR_LANGUAGES="$ERR_LANGUAGES `basename $l`"
-       fi
-    done
-])
-AC_SUBST(ERR_LANGUAGES)
-
 dnl Size of COSS memory buffer
 AC_ARG_WITH(coss-membuf-size,
 [  --with-coss-membuf-size COSS membuf size (default 1048576 bytes) ],
-[  if test "$with_coss_membuf_size"; then
+[  if test -n "$withval" -a "x$withval" != "xno" ; then
       echo "Setting COSS membuf size to $with_coss_membuf_size bytes"
       AC_DEFINE_UNQUOTED(COSS_MEMBUF_SZ, $with_coss_membuf_size,[Define if you want to set the COSS membuf size])
    fi
@@ -1204,6 +1157,8 @@ AC_ARG_ENABLE(ipfw-transparent,
        echo "IPFW Transparent Proxy enabled"
        AC_DEFINE(IPFW_TRANSPARENT,1,[Enable support for Transparent Proxy on systems using FreeBSD IPFW address redirection.])
        IPFW_TRANSPARENT="yes"
+  else
+       AC_DEFINE(IPFW_TRANSPARENT,0,[Enable support for Transparent Proxy on systems using FreeBSD IPFW address redirection.])
   fi
 ])
 
@@ -1216,6 +1171,8 @@ AC_ARG_ENABLE(ipf-transparent,
        echo "IP-Filter Transparent Proxy enabled"
        AC_DEFINE(IPF_TRANSPARENT,1,[Enable support for Transparent Proxy on systems using IP-Filter address redirection. This provides "masquerading" support for non Linux system.])
        IPF_TRANSPARENT="yes"
+  else
+       AC_DEFINE(IPF_TRANSPARENT,0,[Enable support for Transparent Proxy on systems using IP-Filter address redirection. This provides "masquerading" support for non Linux system.])
   fi
 ])
 
@@ -1228,6 +1185,8 @@ AC_ARG_ENABLE(pf-transparent,
        echo "PF Transparent Proxy enabled"
        AC_DEFINE(PF_TRANSPARENT,1,[Enable support for Transparent Proxy on systems using PF address redirection. This provides "masquerading" support for OpenBSD.])
        PF_TRANSPARENT="yes"
+  else
+       AC_DEFINE(PF_TRANSPARENT,0,[Enable support for Transparent Proxy on systems using PF address redirection. This provides "masquerading" support for OpenBSD.])
   fi
 ])
 
@@ -1239,6 +1198,8 @@ AC_ARG_ENABLE(linux-netfilter,
        echo "Linux (Netfilter) Transparent Proxy enabled"
        AC_DEFINE(LINUX_NETFILTER,1,[Enable support for Transparent Proxy on Linux (Netfilter) systems])
        LINUX_NETFILTER="yes"
+  else
+       AC_DEFINE(LINUX_NETFILTER,0,[Enable support for Transparent Proxy on Linux (Netfilter) systems])
   fi
 ])
 
@@ -1248,7 +1209,7 @@ needlargefiles=
 
 AC_ARG_WITH(large-files,
 [  --with-large-files      Enable support for large files (logs etc).],
-[ if test "$withval" = yes; then
+[ if test "x$withval" = "xyes"; then
        needlargefiles=1
   fi
 ])
@@ -1287,17 +1248,22 @@ if test $needlargefiles && test -z "$buildmodel"; then
        if test -z "$buildmodel"; then
                echo "WARNING: No suitable build environment found for large files. Trying to use _FILE_OFFSET_BITS=64"
                sleep 1
+       fi
+fi
+case "$buildmodel" in
+default|"")
+       if test "$needlargefiles"; then
+               echo "Enabling -D_FILE_OFFSET_BITS=64"
                CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
                CXXFLAGS="-D_FILE_OFFSET_BITS=64 $CXXFLAGS"
        fi
-fi
-if test -n "$buildmodel" && test "$buildmodel" != "default"; then
+       ;;
+*)
        echo "Using $buildmodel build environment"
        if test "`getconf _$buildmodel 2>/dev/null || true`" = 1 || test "`getconf $buildmodel 2>/dev/null || true`" ; then
            : # All fine
        else
-           echo "ERROR: Build environment $buildmodel not known to getconf."
-           exit 1
+           AC_MSG_ERROR(Build environment $buildmodel not known to getconf.)
        fi
        CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
        CXXFLAGS="`getconf ${buildmodel}_CFLAGS` $CXXFLAGS"
@@ -1305,14 +1271,19 @@ if test -n "$buildmodel" && test "$buildmodel" != "default"; then
        LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
        case "$host" in
 dnl
-dnl On Solaris getconf returns for CFLAGS -Xa and -Usun options, but:
-dnl   -Xa is supported only by Sun cc, so we need to remove it when using gcc
-dnl   The 'sun' define is needed by ipfilter includes, so we must remove -Usun
+dnl On Solaris getconf returns for CFLAGS -xarch=generic64, -Xa and -Usun options, and
+dnl for LDFLAGS -xarch=generic64, but:
+dnl   "-Xa" is supported only by Sun cc, so we need to remove it when using gcc
+dnl   For gcc "-xarch=generic64" must be replaced with "-m64"
+dnl   The 'sun' define is needed by ipfilter includes, so we must remove "-Usun"
            *-solaris*)
                if test "$GCC" = "yes"; then
                    echo "Removing -Xa for gcc on $host"
                    CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
                    CXXFLAGS="`echo $CXXFLAGS | sed -e 's/-Xa//'`"
+                   echo "Replacing -xarch=generic64 with -m64 for gcc on $host"
+                   CFLAGS="`echo $CFLAGS | sed -e 's/-xarch=generic64/-m64/'`"
+                   LDFLAGS="`echo $LDFLAGS | sed -e 's/-xarch=generic64//'`"
                fi
                echo "Removing -Usun on $host"
                CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
@@ -1338,7 +1309,8 @@ dnl "-64" from LDFLAGS
            *)
                ;;
        esac
-fi
+       ;;
+esac
 
 dnl Enable Linux transparent proxy support for obsolete TPROXY
 AC_ARG_ENABLE(linux-tproxy,
@@ -1352,6 +1324,8 @@ AC_ARG_ENABLE(linux-tproxy,
            echo "Linux-Netfilter Transparent Proxy automatically enabled"
            LINUX_NETFILTER="yes"
        fi
+  else
+       AC_DEFINE(LINUX_TPROXY2, 0, [Enable real Transparent Proxy support for Netfilter TPROXY v2.])
   fi
 ])
 
@@ -1371,6 +1345,24 @@ AC_ARG_ENABLE(leakfinder,
   fi
 ])
 
+follow_xff=1
+AC_ARG_ENABLE(follow-x-forwarded-for,
+[  --enable-follow-x-forwarded-for
+                          Enable support for following the X-Forwarded-For
+                          HTTP header to try to find the IP address of the
+                          original or indirect client when a request has
+                          been forwarded through other proxies.],
+[ if test "$enableval" = "yes" ; then
+    echo "follow X-Forwarded-For enabled"
+    follow_xff=1
+  fi
+])
+if test $follow_xff = 1; then
+    AC_DEFINE(FOLLOW_X_FORWARDED_FOR, 1, [Enable following X-Forwarded-For headers])
+else
+    AC_DEFINE(FOLLOW_X_FORWARDED_FOR, 0)
+fi
+
 use_ident=1
 AC_ARG_ENABLE(ident-lookups,
 [  --disable-ident-lookups
@@ -1459,8 +1451,7 @@ if test -n "$AUTH_MODULES"; then
        if test -d $srcdir/src/auth/$module; then
            :
        else
-           echo "ERROR: Auth scheme $module does not exists"
-           exit 1
+           AC_MSG_ERROR(Auth scheme $module does not exist)
        fi
        eval AUTH_MODULE_${module}=yes
     done
@@ -1523,8 +1514,7 @@ if test -n "$BASIC_AUTH_HELPERS"; then
                    ;;
            esac
        else
-           echo "ERROR: Basic auth helper $helper does not exists"
-           exit 1
+           AC_MSG_ERROR(Basic auth helper $helper does not exist)
        fi
     done
     echo "Basic auth helpers built: $BASIC_AUTH_HELPERS"
@@ -1567,8 +1557,7 @@ if test -n "$NTLM_AUTH_HELPERS"; then
        if test -d $srcdir/helpers/ntlm_auth/$helper; then
            :
        else
-           echo "ERROR: NTLM Auth helper $helper does not exists"
-           exit 1
+           AC_MSG_ERROR(NTLM Auth helper $helper does not exist)
        fi
     done
     echo "NTLM auth helpers built: $NTLM_AUTH_HELPERS"
@@ -1611,8 +1600,7 @@ if test -n "$NEGOTIATE_AUTH_HELPERS"; then
        if test -d $srcdir/helpers/negotiate_auth/$helper; then
            :
        else
-           echo "ERROR: Negotiate Auth helper $helper does not exists"
-           exit 1
+           AC_MSG_ERROR(Negotiate Auth helper $helper does not exist)
        fi
     done
     echo "Negotiate auth helpers built: $NEGOTIATE_AUTH_HELPERS"
@@ -1655,8 +1643,7 @@ if test -n "$DIGEST_AUTH_HELPERS"; then
        if test -f $srcdir/helpers/digest_auth/$helper/Makefile.in; then
                :
        else
-               echo "ERROR: digest auth helper $helper does not exists"
-               exit 1
+               AC_MSG_ERROR(digest auth helper $helper does not exist)
        fi
     done
     echo "Digest auth helpers built: $DIGEST_AUTH_HELPERS"
@@ -1707,8 +1694,7 @@ if test -n "$EXTERNAL_ACL_HELPERS"; then
        if test -f $srcdir/helpers/external_acl/$helper/Makefile.in; then
                :
        else
-               echo "ERROR: external acl helper $helper does not exists"
-               exit 1
+               AC_MSG_ERROR(external acl helper $helper does not exist)
        fi
     done
     echo "External acl helpers built: $EXTERNAL_ACL_HELPERS"
@@ -1773,8 +1759,7 @@ if test "$require_sasl" = "yes"; then
                        echo "using SASL"
                        LIBSASL="-lsasl"
                else
-                       echo "ERROR: Neither SASL nor SASL2 found"
-                       exit 1
+                       AC_MSG_ERROR(Neither SASL nor SASL2 found)
                fi
        fi
        AC_SUBST(LIBSASL)
@@ -1848,6 +1833,7 @@ AC_ARG_ENABLE(x_accelerator_vary,
 
 dnl Enable IPv6 support
 AC_MSG_CHECKING([whether to enable IPv6])
+use_ipng=no
 AC_ARG_ENABLE(ipv6,
 [  --enable-ipv6           Enable ipv6 support],
 [ AC_MSG_RESULT(yes)
@@ -1865,50 +1851,55 @@ AC_ARG_ENABLE(ipv6,
       ],
       [ AC_DEFINE(USE_IPV6,1,[Enable support for IPv6 ])
         AC_MSG_RESULT(yes)
+        use_ipng=yes
       ],
       [ AC_DEFINE(USE_IPV6,0,[0 == Disable support for IPv6])
-        AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[0 == Disable support for Split-Stack IPv6 Implementations])
-        AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[0 == Keep IPv4 and IPv6 Localhosts seperate.])
-        AC_DEFINE(IPV6_SPECIAL_V4MAPPING,0,[0 == Leave all v4-mapping to OS Implementation])
+        AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[Enable support for IPv6 on split-stack implementations])
+        AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[Convert IPv4-localhost requests to IPv6. Default: Keep seperate.])
+        AC_DEFINE(IPV6_SPECIAL_V4MAPPED,0,[Enable v4-mapping through v6 sockets])
         AC_MSG_RESULT(no)
       ])
    )
 ],
 [ AC_DEFINE(USE_IPV6,0,[Disable support for IPv6])
-  AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[ 0 == Disable support for Split-Stack IPv6 Implementations])
-  AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[ 0 == Keep IPv4 and IPv6 Localhosts seperate.])
-  AC_DEFINE(IPV6_SPECIAL_V4MAPPING,0,[ 0 == Leave v4-mapping to OS Implementation])
+  AC_DEFINE(IPV6_SPECIAL_SPLITSTACK,0,[Enable support for IPv6 on split-stack implementations])
+  AC_DEFINE(IPV6_SPECIAL_LOCALHOST,0,[Convert IPv4-localhost requests to IPv6. Default: Keep seperate.])
+  AC_DEFINE(IPV6_SPECIAL_V4MAPPED,0,[Enable v4-mapping through v6 sockets])
   AC_MSG_RESULT(no)
 ])
-if test $ac_cv_enable_ipv6 ; then
+
+if test "$use_ipng" = "yes"; then
+
 dnl Check for Windows XP option
 AC_MSG_CHECKING([for IPv6 split-stack requirement])
 AC_ARG_WITH(ipv6-split-stack,
-  [  --with-ipv6-split-stack  Require IPv6 split-stack support (Requires IPv6 Support)],
-  [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 1, [ 1 == Enable support for IPv6 on split-stack implementations]) AC_MSG_RESULT(yes)],
-  [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 0, [ 0 == Disable support for split-stack IPv6 implementations]) AC_MSG_RESULT(no)]
+  [  --with-ipv6-split-stack  Require IPv6 split-stack support. Requires IPv6 Support.],
+  [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 1, [Enable support for IPv6 on split-stack implementations]) AC_MSG_RESULT(yes)],
+  [AC_DEFINE(IPV6_SPECIAL_SPLITSTACK, 0, [Enable support for IPv6 on split-stack implementations]) AC_MSG_RESULT(no)]
 )
 
 dnl Check for IPv6 Windows Vista option
+dnl Also useful for other OS
 AC_MSG_CHECKING([for IPv6 v4-mapping requirement])
 AC_ARG_WITH(ipv4-mapped,
-  [  --with-ipv4-mapped  Hybrid-Stack OS require Squid to do any v4-mapping (Requires IPv6 Support)],
-  [AC_DEFINE(IPV6_SPECIAL_V4MAPPING, 1, [ 1 == Perform v4-mapping internally]) AC_MSG_RESULT(yes)],
-  [AC_DEFINE(IPV6_SPECIAL_V4MAPPING, 0, [ 0 == Leave all v4-mapping to the OS]) AC_MSG_RESULT(no)]
+  [  --with-ipv4-mapped  Hybrid-Stack OS require Squid to do any v4-mapping. Requires IPv6 Support.],
+  [AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 1, [Enable v4-mapping through v6 sockets]) AC_MSG_RESULT(yes)],
+  [AC_DEFINE(IPV6_SPECIAL_V4MAPPED, 0, [Enable v4-mapping through v6 sockets]) AC_MSG_RESULT(no)]
 )
 
 dnl Check for IPv6-pure option
 AC_MSG_CHECKING([for IPv6-Localhost requirement])
 AC_ARG_WITH(localhost-ipv6,
-  [  --with-localhost-ipv6    Prefer IPv6 localhost address over IPv4 (Requires IPv6 Support).
+  [  --with-localhost-ipv6    Prefer IPv6 localhost address over IPv4. Requires IPv6 Support.
                            Treats 127.0.0.1 and ::1 as identical and converts all inputs of to ::1
                            This depends on Dual-Stack support in the OS and all applications
                            squid contacts via localhost being IPv6 enabled.
                            Default: OFF. Treats these two IP as different, squid.conf must
                            define both 127.0.0.1 and ::1 for the localhost ACL, etc. ],
-  [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 1, [ 1 == Convert IPv4-localhost requests to IPv6.]) AC_MSG_RESULT(yes)],
-  [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 0, [ 0 == Keep IPv4 and IPv6 Localhosts seperate.]) AC_MSG_RESULT(no)]
+  [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 1, [Convert IPv4-localhost requests to IPv6. Default: keep seperate.]) AC_MSG_RESULT(yes)],
+  [AC_DEFINE(IPV6_SPECIAL_LOCALHOST, 0, [Convert IPv4-localhost requests to IPv6. Default: Keep seperate.]) AC_MSG_RESULT(no)]
 )
+
 # end IPv6-only options
 fi
 
@@ -1989,7 +1980,16 @@ fi
 AC_ARG_WITH(filedescriptors,
 [  --with-filedescriptors=NUMBER
                           Force squid to support NUMBER filedescriptors],
-[ squid_filedescriptors_num=$withval ])
+[ 
+  case ${withval} in
+    [[0-9]]*)
+      squid_filedescriptors_num=$withval
+      ;;
+    *)
+      AC_MSG_ERROR(--with-filedescriptors expects a numeric argument)
+      ;;
+    esac
+])
 
 AC_PATH_PROG(CPPUNITCONFIG, cppunit-config, false)
 if $CPPUNITCONFIG --help >/dev/null; then
@@ -2013,15 +2013,14 @@ AC_ARG_WITH(cppunit-basedir,
        echo "Using cppunit includes from $withval"
        SQUID_CPPUNIT_INC="-I${withval}/include"
     else
-       echo "ERROR: Cannot find cppunit at $withval"
-       exit 1
+       AC_MSG_ERROR(Cannot find cppunit at $withval)
     fi
   if test -f $withval/lib/libcppunit.la; then
        echo "Using cppunit lib from $withval"
        SQUID_CPPUNIT_LA="${withval}/lib/libcppunit.la"
        SQUID_CPPUNIT_LIBS='$(SQUID_CPPUNIT_LA)'
     else
-       echo "ERROR: Cannot find cppunit at $withval"
+       AC_MSG_ERROR(Cannot find cppunit at $withval)
        exit 1
     fi
 ])
@@ -2183,6 +2182,10 @@ SQUID_DEFAULT_INCLUDES
 #if HAVE_LIMITS_H
 #include <limits.h>
 #endif
+/* Netfilter ip(6)tables v1.4.0 has broken headers */
+#if HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
 )
 
 dnl *BSD dont include the depenencies for all their net/ and netinet/ files
@@ -2439,6 +2442,7 @@ AC_CHECK_TYPE(mtyp_t,AC_DEFINE(HAVE_MTYP_T,1,[mtyp_t is defined by the system he
 dnl Check for needed libraries
 AC_CHECK_LIB(nsl, main)
 AC_CHECK_LIB(socket, main)
+dnl Check for Winsock only on MinGW, on Cygwin we must use emulated BSD socket API
 case "$host_os" in
   mingw|mingw32)
     AC_MSG_CHECKING(for winsock)
@@ -2469,6 +2473,11 @@ case "$host_os" in
        LIBS="$save_LIBS"
     done
     AC_MSG_RESULT($have_winsock)
+    if test $have_winsock = winsock2; then
+       AC_CHECK_HEADERS(winsock2.h)
+    else
+       AC_CHECK_HEADERS(winsock.h)
+    fi
     ;;
 esac
 
@@ -3171,6 +3180,12 @@ AC_TRY_RUN([
 #if HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 main() {
        FILE *fp = fopen("conftestval", "w");
        fprintf (fp, "%d\n", FD_SETSIZE);
@@ -3275,7 +3290,7 @@ AC_DEFINE_UNQUOTED(SQUID_MAXFD, $SQUID_MAXFD,[Maximum number of open filedescrip
 if test "$SQUID_MAXFD" -lt 512 ; then
     echo "WARNING: $SQUID_MAXFD may not be enough filedescriptors if your"
     echo "         cache will be very busy.  Please see the FAQ page"
-    echo "         http://www.squid-cache.org/FAQ/FAQ-11.html#filedescriptors"
+    echo "         http://wiki.squid-cache.org/SquidFaq/TroubleShooting"
     echo "         on how to increase your filedescriptor limit"
     sleep 10
 fi
@@ -3293,14 +3308,31 @@ AC_TRY_RUN([
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 main ()
 {
        FILE *fp;
         int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSADATA wsaData;
+       WSAStartup(2, &wsaData);
+#endif
        if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) exit(1);
         if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSACleanup();
+#endif
        if (val<=0) exit(1);
         fp = fopen("conftestval", "w");
         fprintf (fp, "%d\n", val);
@@ -3319,14 +3351,31 @@ AC_TRY_RUN([
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 main ()
 {
        FILE *fp;
         int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSADATA wsaData;
+       WSAStartup(2, &wsaData);
+#endif
        if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) exit(1);
         if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSACleanup();
+#endif
        if (val <= 0) exit(1);
        fp = fopen("conftestval", "w"); 
        fprintf (fp, "%d\n", val);
@@ -3345,14 +3394,31 @@ AC_TRY_RUN([
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 main ()
 {
        FILE *fp;
         int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSADATA wsaData;
+       WSAStartup(2, &wsaData);
+#endif
        if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1);
         if (getsockopt(fd, SOL_SOCKET, SO_SNDBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSACleanup();
+#endif
        if (val <= 0) exit(1);
        fp = fopen("conftestval", "w"); 
        fprintf (fp, "%d\n", val);
@@ -3375,14 +3441,31 @@ AC_TRY_RUN([
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/types.h>
+#if HAVE_SYS_SOCKET_H
 #include <sys/socket.h>
+#endif
+#if HAVE_NETINET_IN_H
 #include <netinet/in.h>
+#endif
+#if HAVE_WINSOCK_H
+#include <winsock.h>
+#endif
+#if HAVE_WINSOCK2_H
+#include <winsock2.h>
+#endif
 main ()
 {
        FILE *fp;
         int fd,val=0,len=sizeof(int);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSADATA wsaData;
+       WSAStartup(2, &wsaData);
+#endif
        if ((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) exit(1);
         if (getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) < 0) exit(1);
+#if (defined(WIN32) || defined(__WIN32__) || defined(__WIN32)) && !(defined(__CYGWIN32__) || defined(__CYGWIN__))
+       WSACleanup();
+#endif
        if (val <= 0) exit(1);
        fp = fopen("conftestval", "w"); 
        fprintf (fp, "%d\n", val);
@@ -3584,6 +3667,26 @@ if test $ac_cv_have_res_ns_list = "yes" ; then
 fi
 fi
 
+dnl Squid now has .po translation capability, given the right toolkit
+AX_WITH_PROG([PO2HTML],[po2html])
+AC_SUBST(PO2HTML)
+
+dnl Squid now has limited locale handling ...
+dnl on error pages
+AC_ARG_ENABLE(auto-locale,
+[  --enable-auto-locale  This enables squid to lookup translated error pages
+                          based on the clients request headers. Without it squid
+                          is limited to a single language set in squid.conf],
+[ if test "$enableval" = "yes" ; then
+    echo "Enabling Multi-Language Support"
+    AC_DEFINE(USE_ERR_LOCALES,1,[Use multi-language support on error pages])
+ else
+    echo "Disabling Multi-Language Support"
+    AC_DEFINE(USE_ERR_LOCALES,0,[Use multi-language support on error pages])
+  fi
+])
+
+
 dnl Need the debugging version of malloc if available
 XTRA_OBJS=''
 if test "$ac_cv_lib_malloc_main" = "yes" ; then
index b20f8657a8bf67e459aa3cc06eb616894ab83791..54d7a053366e23a92c3cc72843900ab4bce77b91 100644 (file)
@@ -9,7 +9,7 @@
 DEFAULT_CONFIG_FILE = $(sysconfdir)/squid.conf
 DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
 DEFAULT_MIME_TABLE      = $(sysconfdir)/mime.conf
-DEFAULT_ERROR_DIR       = $(datadir)/errors/@ERR_DEFAULT_LANGUAGE@
+DEFAULT_ERROR_DIR       = $(datadir)/errors
 
 SUBSTITUTE=sed "\
        s%@DEFAULT_CONFIG_FILE@%$(DEFAULT_CONFIG_FILE)%g;\
index ede7490d4833305864fa0532a7abd3e1d4f82df5..5afbb0483a29c00d1897471612c76fd672daa454 100644 (file)
@@ -1,13 +1,13 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <HTML>
 <HEAD>
- <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.50">
  <TITLE>Squid 3.0.RC1 release notes</TITLE>
 </HEAD>
 <BODY>
 <H1>Squid 3.0.RC1 release notes</H1>
 
-<H2>Squid Developers</H2>$Id: release-3.0.html,v 1.13 2007/12/14 05:34:41 amosjeffries Exp $
+<H2>Squid Developers</H2>$Id: release-3.0.sgml,v 1.31 2007/12/14 05:34:16 amosjeffries Exp $
 <HR>
 <EM>This document contains the release notes for version 3.0 of Squid.
 Squid is a WWW Cache application developed by the National Laboratory
@@ -29,7 +29,7 @@ While this release is not deemed ready for production use, we believe it is read
 <P>Although this release is deemed good enough for testing in many setups, please note the existence of 
 <A HREF="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;target_milestone=3.0&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=bugs.bug_severity&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=">open bugs against Squid-3.0</A>.</P>
 
-<H2><A NAME="s3">3. Changes since earlier PRE releases of Squid-3.0</A></H2>
+<H2><A NAME="s3">3. Changes since earlier releases of Squid-3.0</A></H2>
 
 <P>The 3.0 change history can be 
 <A HREF="http://www.squid-cache.org/Versions/v3/3.0/changesets/">viewed here</A>.</P>
@@ -125,11 +125,229 @@ Some has been dropped as they are not needed. Some has not yet been forward-port
 </P>
 <P>See 
 <A HREF="http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7">http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7</A> for a definition of all log types.</P>
+<H2><A NAME="s5">5. Windows support</A></H2>
 
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment, 
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<BR>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<DL>
+
+<DT><B>Usage</B><DD>
+<P>Some new command line options were added for the Windows service support:<BR></P>
+<P>The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.</P>
+<P>A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<EM>"Squid"</EM> is the default when the switch is not used.</P>
+<P>So, to install the service, the syntax is: </P>
+<P>
+<PRE>
+squid -i [-f file] [-n name]
+</PRE>
+</P>
+<P>Service uninstallation is made with -r command line switch with the appropriate -n switch.</P>
+<P>The -k switch family must be used with the appropriate -f and -n switches, so the syntax is: </P>
+<P>
+<PRE>
+squid -k command [-f file] -n service-name
+</PRE>
+
+where <EM>service-name</EM> is the name specified with -n options at service install time.</P>
+<P>To use the Squid original command line, the new -O switch must be used ONCE, the syntax is: </P>
+<P>
+<PRE>
+squid -O cmdline [-n service-name]
+</PRE>
+
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.</P>
+<P>Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.</P>
+<P>In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130": </P>
+<P>
+<PRE>
+squid -O "-D -u 3130" -n squidsvc
+</PRE>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>PSAPI.DLL (Process Status Helper) Considerations</B><DD>
+<P>The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.</P>
+<P>PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.</P>
+<P>On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<A HREF="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE</A></P>
+<P>On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Registry DNS lookup</B><DD>
+<P>On Windows platforms, if no value is specified in the <EM>dns_nameservers</EM> option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Compatibility Notes</B><DD>
+<P>
+<UL>
+<LI>It's recommended to use '/' char in Squid paths instead of '\'</LI>
+<LI>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid</LI>
+<LI>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<PRE>
+acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"
+</PRE>
+
+</LI>
+<LI>The Windows equivalent of '/dev/null' is 'NUL'</LI>
+<LI>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<PRE>
+redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd
+</PRE>
+</LI>
+<LI>When Squid runs in command line mode, the launching user account must have administrative privilege on the system</LI>
+<LI>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used</LI>
+<LI>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Known Limitations</B><DD>
+<P>
+<UL>
+<LI>Squid features not operational:<BR>
+<UL>
+<LI>DISKD: still needs to be ported<BR></LI>
+<LI>WCCP: cannot work because user space GRE support on Windows is missing<BR></LI>
+<LI>Transparent Proxy: missing Windows non commercial interception driver<BR></LI>
+</UL>
+</LI>
+<LI>Some code sections can make blocking calls.</LI>
+<LI>Some external helpers may not work.</LI>
+<LI>File Descriptors number hard-limited to 2048 when building with MinGW.</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Building Squid on Windows</B><DD>
+<P>A reasonably recent release of 
+<A HREF="http://www.cygwin.com/">Cygwin</A> or 
+<A HREF="http://www.mingw.org/">MinGW</A> is needed.<BR>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<BR>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<BR><BR>
+OpenSSL: 
+<A HREF="http://www.slproweb.com/products/Win32OpenSSL.html">Shining Light Productions Win32 OpenSSL</A><BR>
+libcrypt: 
+<A HREF="http://sourceforge.net/projects/mingwrep/">MinGW packages repository</A><BR>
+db-1.85: 
+<A HREF="http://tinycobol.org/download.html">TinyCOBOL download area</A><BR>
+uudecode: 
+<A HREF="http://unxutils.sourceforge.net/">Native Win32 ports of some GNU utilities</A><BR><BR>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<BR>
+<UL>
+<LI>New configure options:<BR>
+<UL>
+<LI>--enable-win32-service<BR></LI>
+</UL>
+</LI>
+<LI>Updated configure options:<BR>
+<UL>
+<LI>--enable-arp-acl<BR></LI>
+<LI>--enable-default-hostsfile<BR></LI>
+</UL>
+</LI>
+<LI>Unsupported configure options:<BR>
+<UL>
+<LI>--enable-coss-aio-ops: On Windows Posix AIO is not available<BR></LI>
+<LI>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<BR></LI>
+</UL>
+</LI>
+<LI>Recommended configure minimal options for Windows:<BR>
+<UL>
+<LI>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none</LI>
+</UL>
+</LI>
+</UL>
+<BR>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<UL>
+<LI>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<BR></LI>
+<LI>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<BR></LI>
+<LI>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<BR></LI>
+</UL>
+</P>
+
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Using cache manager on Windows:</B><DD>
+<P>On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<BR>
+Some specific configuration could be needed:<BR>
+<UL>
+<LI>IIS 6 (Windows 2003):<BR>
+<UL>
+<LI>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<BR>
+<UL>
+<LI>Create a cgi-bin Directory</LI>
+<LI>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application </LI>
+<LI>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file</LI>
+<LI>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <EM>"Squid Cachemgr"</EM>, add the cachemgr.cgi file and set the
+extension status to <EM>Allowed</EM></LI>
+</UL>
+</LI>
+</UL>
+</LI>
+<LI>Apache:<BR>
+<UL>
+<LI>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+to pass the TMP and TEMP Windows environment variables to CGI applications:<BR>
+<PRE>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+&lt;Location /squid/cgi-bin/cachemgr.cgi&gt;
+    PassEnv TMP TEMP
+    Order allow,deny
+    Allow from workstation.example.com
+&lt;/Location&gt;
+</PRE>
+</LI>
+</UL>
+</LI>
+</UL>
+</P>
+</DL>
+</P>
 
 
 
-<H2><A NAME="ss4.4">4.4 Changes to squid.conf</A>
+<H2><A NAME="ss5.1">5.1 Changes to squid.conf</A>
 </H2>
 
 <P>There have been many changes to Squid's configuration file since Squid-2.6.</P>
@@ -704,7 +922,7 @@ See the accf_http(9) man page.
 </P>
 
 
-<H2><A NAME="ss4.5">4.5 Changes to ./configure Options</A>
+<H2><A NAME="ss5.2">5.2 Changes to ./configure Options</A>
 </H2>
 
 <P>There have been some changes to Squid's build configuration since Squid-2.6.</P>
index afbdc3a7c7ddb431aa9b28abda1d8d90a9dc8941..de07cf484de3b47e5f260c5ef06c3d2dc1a6135a 100644 (file)
-<!doctype linuxdoc system>\r
-<article>\r
-<title>Squid 3.0.RC1 release notes</title>\r
-<author>Squid Developers</author>\r
-<date>$Id: release-3.0.sgml,v 1.31 2007/12/14 05:34:16 amosjeffries Exp $</date>\r
-\r
-<abstract>\r
-This document contains the release notes for version 3.0 of Squid.\r
-Squid is a WWW Cache application developed by the National Laboratory\r
-for Applied Network Research and members of the Web Caching community.\r
-</abstract>\r
-\r
-<toc>\r
-\r
-<sect>Notice\r
-<p>\r
-The Squid Team are pleased to announce the release of Squid-3.0.RC1 for pre-release testing.\r
-\r
-This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.0/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.\r
-\r
-A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support.\r
-While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.\r
-\r
-We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.\r
-\r
-<sect>Known issues\r
-<p>\r
-Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;target_milestone=3.0&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=bugs.bug_severity&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" name="open bugs against Squid-3.0">.\r
-\r
-<sect>Changes since earlier releases of Squid-3.0\r
-<p>\r
-The 3.0 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.0/changesets/" name="viewed here">.\r
-\r
-<sect>Changes since Squid-2.6\r
-\r
-<sect1>Major new features\r
-<p>\r
-Squid 3.0 represents a major rewrite of Squid and has a number of new features.\r
-\r
-The most important of these are:\r
-\r
-<itemize>\r
-       <item>Code converted to C++, with significant internal restructuring and rewrites.\r
-       <item>ICAP implementation (RFC 3507 and www.icap-forum.org)\r
-       <item>Edge Side Includes (ESI) implementation (www.esi.org)\r
-</itemize>\r
-\r
-Most user-facing changes are reflected in squid.conf (see below).\r
-\r
-<sect2>Internet Content Adaptation Protocol (ICAP)\r
-\r
-<p>Squid 3.0 supports ICAP/1.0. To enable ICAP support, use the --enable-icap-client ./configure option and icap_enable squid.conf option. You will also need to configure ICAP services in your squid.conf using icap_service, icap_class, and icap_access options. The following example instructs Squid to talk to two ICAP services, one for request and one for response adaptation:\r
-\r
-<verb>\r
-icap_enable on\r
-icap_service service_req reqmod_precache 1 icap://127.0.0.1:1344/request\r
-icap_service service_resp respmod_precache 0 icap://127.0.0.1:1344/response\r
-icap_class class_req service_req\r
-icap_class class_resp service_resp\r
-icap_access class_req allow all\r
-icap_access class_resp allow all\r
-</verb>\r
-\r
-<p>Please see squid.conf.default for more details about these and many other icap_* options.\r
-\r
-<p>Squid supports pre-cache request and pre-cache response vectoring points. The following ICAP features are supported: message preview, 204 responses outside of preview, request satisfaction, X-Transfer-* negotiation, persistent ICAP connections, client IP/credentials sharing, and optional bypass of certain service failures.\r
-\r
-<p>No more than one ICAP service can be applied to an HTTP message. In other words, chaining or load balancing multiple services is not yet supported.\r
-\r
-<p>Proxy-directed data trickling and patience pages are not supported yet.\r
-\r
-<p>Following ICAP requirements, Squid never performs HTTP message adaptation without a successful and fresh ICAP OPTIONS response on file. A REQMOD or RESPMOD request will not be sent to a configured ICAP service until Squid receives a valid OPTIONS response from that service. If a service malfunctions or goes down, Squid may stop talking to the service for a while. Several squid.conf options can be used to tune the failure bypass algorithm (e.g., icap_service_failure_limit and icap_service_revival_delay). \r
-\r
-<p>The bypass parameter of the icap_service squid.conf option determines whether Squid will try to bypass service failures. Most connectivity and preview-stage failures can be bypassed.\r
-\r
-<p>More information about ICAP can be found from the ICAP-forum website <url url="http://www.icap-forum.org">\r
-\r
-<sect2>Edge Side Includes (ESI)\r
-\r
-<p>ESI is an open specification of an markup language enabling reverse proxies\r
-to perform some simple XML based processing, offloading the final page assembly from the webserver and similar tasks.\r
-\r
-<p>More information about ESI can be found from the ESI website <url url="http://www.esi.org">\r
-\r
-<sect1>2.6 features not found in Squid-3.0\r
-<p>\r
-Some of the features found in Squid-2.6 is not available in Squid-3.\r
-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.\r
-\r
-<itemize>\r
-       <item>refresh_stale_hit option. Not yet ported.\r
-       <item>ability to follow X-Forwarded-For. Not yet ported.\r
-       <item>Full caching of Vary/ETag using If-None-Match. Only basic Vary cache supported. Not yet ported.\r
-       <item>Mapping of server error messages. Not yet ported.\r
-       <item>http_access2 access directive. Not yet ported.\r
-       <item>Location header rewrites. Not yet ported.\r
-       <item>umask directive. Not yet ported.\r
-       <item>wais_relay. Feature dropped as it's equivalent to cache_peer + cache_peer_access.\r
-       <item>urlgroup. Not yet ported.\r
-       <item>collapsed forwarding. Not yet ported.\r
-       <item>stable Windows support. Irregularly maintained.\r
-</itemize>\r
-\r
-<sect1>Logging changes\r
-<sect2>access.log\r
-<p>The TCP_REFRESH_HIT and TCP_REFRESH_MISS log types have been replaced because they were misleading (all refreshes need to query the origin server, so they could never be hits). The following log types have been introduced to replace them:\r
-\r
-<descrip>\r
-       <tag>TCP_REFRESH_UNMODIFIED</tag>\r
-       <p>The requested object was cached but STALE. The IMS query for the object resulted in "304 not modified".\r
-       <tag>TCP_REFRESH_MODIFIED</tag>\r
-       <p>The requested object was cached but STALE. The IMS query returned the new content.\r
-</descrip>\r
-<p>See <url url="http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7"> for a definition of all log types.\r
-\r
-\r
-\r
-\r
-<sect1>Changes to squid.conf\r
-<p>\r
-There have been many changes to Squid's configuration file since Squid-2.6.\r
-\r
-This section gives a thorough account of those changes in three categories:\r
-\r
-<itemize>\r
-       <item><ref id="newtags" name="New tags">\r
-       <item><ref id="modifiedtags" name="Changes to existing tags">\r
-       <item><ref id="removedtags" name="Removed tags">\r
-</itemize>\r
-\r
-<p>\r
-\r
-\r
-\r
-<sect2>New tags<label id="newtags">\r
-\r
-<p>\r
-<descrip>\r
-       <tag>minimum_icp_query_timeout (msec)</tag>\r
-       <verb>\r
-Default: 5\r
-\r
-Normally the ICP query timeout is determined dynamically.  But\r
-sometimes it can lead to very small timeouts, even lower than\r
-the normal latency variance on your link due to traffic.\r
-Use this option to put an lower limit on the dynamic timeout\r
-value.  Do NOT use this option to always use a fixed (instead\r
-of a dynamic) timeout value. To set a fixed timeout see the\r
-'icp_query_timeout' directive.\r
-       </verb>\r
-       <tag>background_ping_rate</tag>\r
-       <verb>\r
-Default: 10 seconds\r
-\r
-Controls how often the ICP pings are sent to siblings that\r
-have background-ping set.\r
-       </verb>\r
-\r
-       <tag>httpd_accel_surrogate_id</tag>\r
-       <verb>\r
-Default: unset\r
-\r
-Surrogates (http://www.esi.org/architecture_spec_1.0.html)\r
-need an identification token to allow control targeting. Because\r
-a farm of surrogates may all perform the same tasks, they may share\r
-an identification token.\r
-       </verb>\r
-\r
-       <tag>http_accel_surrogate_remote on|off</tag>\r
-       <verb>\r
-Default: off\r
-\r
-Remote surrogates (such as those in a CDN) honour Surrogate-Control: no-store-remote.\r
-Set this to on to have squid behave as a remote surrogate.\r
-       </verb>\r
-\r
-       <tag>esi_parser libxml2|expat|custom</tag>\r
-       <verb>\r
-Default: custom\r
-\r
-ESI markup is not strictly XML compatible. The custom ESI parser\r
-will give higher performance, but cannot handle non ASCII character\r
-encodings.\r
-       </verb>\r
-\r
-       <tag>email_err_data on|off</tag>\r
-       <verb>\r
-Default: on\r
-\r
-If enabled, information about the occurred error will be\r
-included in the mailto links of the ERR pages (if %W is set)\r
-so that the email body contains the data.\r
-Syntax is &lt;A HREF="mailto:%w%W"&gt;%w&lt;/A&gt;\r
-       </verb>\r
-\r
-       <tag>refresh_all_ims on|off</tag>\r
-       <verb>\r
-Default: off\r
-\r
-When you enable this option, squid will always check\r
-the origin server for an update when a client sends an\r
-If-Modified-Since request.  Many browsers use IMS\r
-requests when the user requests a reload, and this\r
-ensures those clients receive the latest version.\r
-\r
-By default (off), squid may return a Not Modified response\r
-based on the age of the cached version.\r
-       </verb>\r
-       <tag>request_header_access</tag>\r
-       <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to requests only.\r
-       <tag>reply_header_access</tag>\r
-       <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to replies only.\r
-\r
-       <tag>icap_enable on|off</tag>\r
-       <verb>\r
-Default: off\r
-\r
-If you want to enable the ICAP module support, set this to on.\r
-       </verb>\r
-       <tag>icap_preview_enable on|off</tag>\r
-       <verb>\r
-Default: off\r
-\r
-Set this to 'on' if you want to enable the ICAP preview\r
-feature in Squid.\r
-       </verb>\r
-       <tag>icap_preview_size</tag>\r
-       <verb>\r
-Default: -1\r
-\r
-The default size of preview data to be sent to the ICAP server.\r
--1 means no preview. This value might be overwritten on a per server\r
-basis by OPTIONS requests.\r
-       </verb>\r
-       <tag>icap_default_options_ttl (seconds)</tag>\r
-       <verb>\r
-Default: 60\r
-\r
-The default TTL value for ICAP OPTIONS responses that don't have\r
-an Options-TTL header.\r
-       </verb>\r
-       <tag>icap_persistent_connections on|off</tag>\r
-       <verb>\r
-Default: on\r
-\r
-Whether or not Squid should use persistent connections to\r
-an ICAP server.\r
-       </verb>\r
-       <tag>icap_send_client_ip on|off</tag>\r
-       <verb>\r
-Default: off\r
-\r
-This adds the header "X-Client-IP" to ICAP requests.\r
-       </verb>\r
-       <tag>icap_send_client_username on|off</tag>\r
-       <verb>\r
-Default: off\r
-\r
-This adds the header "X-Client-Username" to ICAP requests\r
-if proxy access is authentified.\r
-       </verb>\r
-       <tag>icap_service</tag>\r
-       <verb>\r
-Default: none\r
-\r
-Defines a single ICAP service\r
-\r
-icap_service servicename vectoring_point bypass service_url\r
-\r
-vectoring_point = reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache\r
-This specifies at which point of request processing the ICAP\r
-service should be plugged in.\r
-bypass = 1|0\r
-If set to 1 and the ICAP server cannot be reached, the request will go\r
-through without being processed by an ICAP server\r
-service_url = icap://servername:port/service\r
-\r
-Note: reqmod_precache and respmod_postcache is not yet implemented\r
-\r
-Example:\r
-icap_service service_1 reqmod_precache 0 icap://icap1.mydomain.net:1344/reqmod\r
-icap_service service_2 respmod_precache 0 icap://icap2.mydomain.net:1344/respmod\r
-       </verb>\r
-       <tag>icap_class</tag>\r
-       <verb>\r
-Default: none\r
-\r
-Defines an ICAP service chain. If there are multiple services per\r
-vectoring point, they are processed in the specified order.\r
-\r
-icap_class classname servicename...\r
-\r
-Example:\r
-icap_class class_1 service_1 service_2\r
-icap class class_2 service_1 service_3\r
-       </verb>\r
-       <tag>icap_access</tag>\r
-       <verb>\r
-Default: none\r
-\r
-Redirects a request through an ICAP service class, depending\r
-on given acls\r
-\r
-icap_access classname allow|deny [!]aclname...\r
-\r
-The icap_access statements are processed in the order they appear in\r
-this configuration file. If an access list matches, the processing stops.\r
-For an "allow" rule, the specified class is used for the request. A "deny"\r
-rule simply stops processing without using the class. You can also use the\r
-special classname "None".\r
-\r
-For backward compatibility, it is also possible to use services\r
-directly here.\r
-\r
-Example:\r
-icap_access class_1 allow all\r
-       </verb>\r
-\r
-       <tag>accept_filter</tag>\r
-       <verb>\r
-The name of an accept(2) filter to install on Squid's\r
-listen socket(s).  This feature is perhaps specific to\r
-FreeBSD and requires support in the kernel.\r
-\r
-The 'httpready' filter delays delivering new connections\r
-to Squid until a full HTTP request has been received.\r
-See the accf_http(9) man page.\r
-       </verb>\r
-</descrip>\r
-\r
-\r
-<sect2>Changes to existing tags<label id="modifiedtags">\r
-<p>\r
-<descrip>\r
-       <tag>http_port</tag>\r
-       <p>New options:\r
-       <verb>\r
-    disable-pmtu-discovery=\r
-      Control Path-MTU discovery usage:\r
-        off          lets OS decide on what to do (default).\r
-        transparent  disable PMTU discovery when transparent support is enabled.\r
-        always       disable always PMTU discovery.\r
-\r
-    In many setups of transparently intercepting proxies Path-MTU\r
-    discovery can not work on traffic towards the clients. This is\r
-    the case when the intercepting device does not fully track\r
-    connections and fails to forward ICMP must fragment messages\r
-    to the cache server. If you have such setup and experience that\r
-    certain clients sporadically hang or never complete requests set\r
-    disable-pmtu-discovery option to 'transparent'.\r
-       </verb>\r
-       <p>Removed options:\r
-       <verb>\r
-    urlgroup=, not yet ported to Squid-3.\r
-    \r
-    no-connection-auth, not yet ported to Squid-3.\r
-        </verb>        \r
-       <tag> https_port</tag>\r
-       <p>Removed options:\r
-       <verb>\r
-    urlgroup=, not yet ported to Squid-3.\r
-       </verb>\r
-       <tag>cache_peer</tag>\r
-       <p>New options:\r
-       <verb>\r
-     basetime=n\r
-\r
-     background-ping\r
-\r
-     weighted-round-robin\r
-\r
-     use 'basetime=n' to specify a base amount to\r
-     be subtracted from round trip times of parents.\r
-     It is subtracted before division by weight in calculating\r
-     which parent to fectch from. If the rtt is less than the\r
-     base time the rtt is set to a minimal value.\r
-\r
-     use 'background-ping' to only send ICP queries to this\r
-     neighbor infrequently. This is used to keep the neighbor\r
-     round trip time updated and is usually used in\r
-     conjunction with weighted-round-robin.\r
-\r
-     use 'weighted-round-robin' to define a set of parents\r
-     which should be used in a round-robin fashion with the\r
-     frequency of each parent being based on the round trip\r
-     time. Closer parents are used more often.\r
-     Usually used for background-ping parents.\r
-\r
-       </verb>\r
-       <p>Removed options:\r
-       <verb>\r
-    userhash, not yet ported to Squid-3\r
-\r
-    sourcehash, not yet ported to Squid-2\r
-\r
-    monitorurl, monitorsize etc, not yet ported to Squid-3\r
-\r
-    connection-auth=, not yet ported to Squid-3\r
-       </verb>\r
-       <tag>cache_dir</tag>\r
-       <p>Common options\r
-       <verb>\r
-    no-store, replaces the older read-only option\r
-\r
-    min-size, not yet portedto Squid-3\r
-       </verb>\r
-       <p>COSS file system:\r
-       <verb>\r
-    The coss file store is experimental, and still lacks much\r
-    of the functionality found in 2.6.\r
-\r
-    overwrite-percent=n, not yet ported to Squid-3.\r
-\r
-    max-stripe-waste=n, not yet ported to Squid-3.\r
-\r
-    membufs=n, not yet ported to Squid-3.\r
-\r
-    maxfullbufs=n, not yet ported to Squid-3.\r
-       </verb>\r
-       <tag>auth_param</tag>\r
-       <p>Removed Basic auth option\r
-       <verb>\r
-    blankpasswor, not yet ported to squid-3.\r
-    auth_param basic concurrency 0\r
-       </verb>\r
-       <p>Removed digest options:\r
-       <verb>\r
-    concurrency, not yet ported to Squid-3.\r
-       </verb>\r
-\r
-       <tag>external_acl_type</tag>\r
-       <p>New format specifications:\r
-       <verb>\r
-    %URI          Requested URI\r
-\r
-    %PATH         Requested URL path\r
-       </verb>\r
-       <P>Removed format specifications:\r
-       <verb>\r
-    %ACL, not yet ported to Squid-3\r
-\r
-    %DATA, not yet ported to Squid-3\r
-       </verb>\r
-       <p>New result keywords:\r
-       <verb>\r
-     tag=  Apply a tag to a request (for both ERR and OK results)\r
-           Only sets a tag, does not alter existing tags.\r
-       </verb>\r
-\r
-       <tag>refresh_pattern</tag>\r
-       <p>New options:\r
-       <verb>\r
-    ignore-no-store\r
-    refresh-ims\r
-\r
-    ignore-no-store ignores any ``Cache-control: no-store''\r
-    headers received from a server. Doing this VIOLATES\r
-    the HTTP standard. Enabling this feature could make you\r
-    liable for problems which it causes.\r
-\r
-    refresh-ims causes squid to contact the origin server\r
-    when a client issues an If-Modified-Since request. This\r
-    ensures that the client will receive an updated version\r
-    if one is available.\r
-       </verb>\r
-       <tag>acl</tag>\r
-       <p>New types:\r
-       <verb>\r
-    acl aclname http_status 200 301 500- 400-403 ...     # status code in reply\r
-\r
-       </verb>\r
-       <p>Removed types:\r
-       <verb>\r
-    acl aclname urllogin [-i] [^a-zA-Z0-9] ...      # regex matching on URL login field\r
-\r
-    acl urlgroup group1 ...\r
-       # match against the urlgroup as indicated by redirectors\r
-\r
-       </verb>\r
-       <tag>short_icon_urls</tag>\r
-       <p>New default:\r
-       <verb>\r
-    Default: on\r
-    (Old default: off)\r
-       </verb>\r
-       <tag>delay_class</tag>\r
-       <p>New delay classes:\r
-       <verb>\r
-    class 4 Everything in a class 3 delay pool, with an\r
-    additional limit on a per user basis. This\r
-    only takes effect if the username is established\r
-    in advance - by forcing authentication in your\r
-    http_access rules.\r
-\r
-    class 5 Requests are grouped according their tag (see\r
-    external_acl's tag= reply).\r
-       </verb>\r
-\r
-       <tag>htcp_port</tag>\r
-       <p>New default to require the feature to be enabled in squid.conf:\r
-       <verb>\r
-    Default: 0 (disabled)\r
-    (Old default: 4827)\r
-       </verb>\r
-\r
-       <tag>icp_port</tag>\r
-       <p>New default to require the feature to be enabled in squid.conf:\r
-       <verb>\r
-    Default: 0 (disabled)\r
-    (Old default: 3130)\r
-       </verb>\r
-\r
-       <tag>snmp_port</tag>\r
-       <p>New default to require the feature to be enabled in squid.conf:\r
-       <verb>\r
-    Default: 0 (disabled)\r
-    (Old default: 3401)\r
-       </verb>\r
-\r
-       <tag>logformat</tag>\r
-       <p>New format tags:\r
-       <verb>\r
-    rp      Request URL-Path excluding hostname\r
-\r
-    et      Tag returned by external acl\r
-\r
-    &lt;sH     Reply high offset sent\r
-\r
-    &lt;sS     Upstream object size\r
-       </verb>\r
-\r
-       <p>Removed format tags:\r
-       <verb>\r
-    &gt;st     Request size including HTTP headers, not yet ported to Squid-3.\r
-\r
-    st      Request+Reply size including HTTP headers, not yet ported to Squid-3.\r
-       </verb>\r
-\r
-       <tag>reply_body_max_size</tag>\r
-       <p>Syntax changed:\r
-       <verb>\r
-    reply_body_max_size size [acl acl...]\r
-       </verb>\r
-       <p>allow/deny no longer used.\r
-\r
-       <tag>url_rewrite_program</tag>\r
-       <p>No urlgroup support in either requests or responese\r
-</descrip>\r
-\r
-\r
-\r
-\r
-<sect2>Removed tags<label id="removedtags">\r
-<p>\r
-<descrip>\r
-       <tag>broken_vary_encoding</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>cache_vary</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>collapsed_forwarding</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>follow_x_forwarded_for</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>*_uses_indirect_client</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>error_map</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>header_access</tag>\r
-       <p>This has been replaced by request_header_access and reply_header_access\r
-       <tag>http_access2</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>httpd_accel_no_pmtu_disc</tag>\r
-       <p>Replaced by disable-pmtu-discovery http_port option\r
-       <tag>location_rewrite_*</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>refresh_stale_hit</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>umask</tag>\r
-       <p>Not yet ported to Squid-3.\r
-       <tag>wais_relay_*</tag>\r
-       <p>equivalent to cache_peer + cache_peer_access.\r
-</descrip>\r
-\r
-\r
-<sect1>Changes to ./configure Options\r
-<p>\r
-There have been some changes to Squid's build configuration since Squid-2.6.\r
-\r
-This section gives an account of those changes in three categories:\r
-\r
-<itemize>\r
-       <item><ref id="newoptions" name="New options">\r
-       <item><ref id="modifiedoptions" name="Changes to existing options">\r
-       <item><ref id="notportedoptions" name="Not yet available options">\r
-       <item><ref id="removedoptions" name="Removed options">\r
-</itemize>\r
-<p>\r
-\r
-\r
-<sect2>New options<label id="newoptions">\r
-\r
-<p>\r
-<descrip>\r
-       <tag>--enable-shared[=PKGS]</tag>\r
-       <p>Build shared libraries. The default is to build without.</p>\r
-\r
-       <tag>--enable-static[=PKGS]</tag>\r
-       <p>Build static libraries. The default is on.</p>\r
-\r
-       <tag>--enable-fast-install[=PKGS]</tag>\r
-       <verb>Optimize for fast installation\r
-       default: yes</verb>\r
-\r
-       <tag>--disable-libtool-lock</tag>\r
-       <p>Avoid locking (might break parallel builds)</p>\r
-\r
-       <tag>--disable-optimizations</tag>\r
-       <p>Don't compile Squid with compiler optimizations enabled.\r
-       Optimization is good for production builds, but not\r
-       good for debugging. During development, use\r
-       --disable-optimizations to reduce compilation times\r
-       and allow easier debugging. This option implicitly\r
-       also enables --disable-inline</p>\r
-\r
-       <tag>--disable-inline</tag>\r
-       <p>Don't compile trivial methods as inline. Squid\r
-       is coded with much of the code able to be inlined.\r
-       Inlining is good for production builds, but not\r
-       good for development. During development, use\r
-       --disable-inline to reduce compilation times and\r
-       allow incremental builds to be quick. For\r
-       production builds, or load tests, use\r
-       --enable-inline to have squid make all trivial\r
-       methods inlinable by the compiler.</p>\r
-\r
-       <tag>--enable-debug-cbdata</tag>\r
-       <p>Provide some debug information in cbdata</p>\r
-\r
-       <tag>--enable-disk-io=\"list of modules\"</tag>\r
-       <p>Build support for the list of disk I/O modules.\r
-       The default is only to build the "Blocking" module.\r
-       See src/DiskIO for a list of available modules, or\r
-       Programmers Guide for details on how to build your\r
-       custom disk module.</p>\r
-\r
-       <tag>--enable-esi</tag>\r
-       <p>Enable ESI for accelerators. Requires libexpat.\r
-       Enabling ESI will cause squid to follow the Edge\r
-       Acceleration Specification (www.esi.org). This\r
-       causes squid to IGNORE client Cache-Control headers.</p>\r
-       <p><em>DO NOT</em> use this in a squid configured as a web\r
-       proxy, ONLY use it in a squid configured for\r
-       webserver acceleration.</p>\r
-\r
-       <tag>--enable-icap-client</tag>\r
-       <p>Enable the ICAP client.</p>\r
-\r
-       <tag>--disable-snmp</tag>\r
-       <p>Disable SNMP monitoring support which is now built by default.</p>\r
-\r
-       <tag>--disable-htcp</tag>\r
-       <p>Disable HTCP protocol support which is now built by default.</p>\r
-\r
-       <tag>--enable-kqueue</tag>\r
-       <p>Enable kqueue() support. Marked as experimental in 3.0.</p>\r
-\r
-       <tag>--enable-ipfw-transparent</tag>\r
-       <p>Enable Transparent Proxy support for systems\r
-       using FreeBSD IPFW style redirection.</p>\r
-\r
-       <tag>--disable-mempools</tag>\r
-       <p>Disable memPools. Note that this option now simply sets the\r
-       default behaviour. Specific classes can override this at runtime, and\r
-       only lib/MemPool.c needs to be altered to change the squid-wide\r
-       default for all classes.</p>\r
-\r
-       <tag>--enable-cpu-profiling</tag>\r
-       <p>This option allows you to see which internal functions\r
-       in Squid are consuming how much CPU. Compiles in probes\r
-       that measure time spent in probed functions. Needs\r
-       source modifications to add new probes. This is meant\r
-       for developers to assist in performance optimisations\r
-       of Squid internal functions.</p>\r
-       <p>If you are not developer and not interested in the stats\r
-       you shouldn't enable this, as overhead added, although\r
-       small, is still overhead. See lib/Profiler.c for more.</p>\r
-\r
-       <tag>--with-gnu-ld</tag>\r
-       <p>Assume the C compiler uses GNU ld. The default is to auto-detect.</p>\r
-\r
-       <tag>--with-pic</tag>\r
-       <p>Try to use only PIC/non-PIC objects. The default is to use both.</p>\r
-\r
-       <tag>--with-tags[=TAGS]</tag>\r
-       <p>Include additional configurations. The default is automatic.</p>\r
-\r
-       <tag>--with-default-user=USER</tag>\r
-       <p>Sets the default System User account for squid permissions.\r
-       The default is 'nobody' as in other releases of squid.</p>\r
-\r
-       <tag>--with-cppunit-basedir=[PATH]</tag>\r
-       <p>Path where the cppunit headers and libraries are found\r
-       for unit testing. The default is automatic detection.</p>\r
-       <p>NOTE: Since 3.0-PRE6 and 2.6STABLE14 squid no longer comes\r
-       bundled with CPPUnit. Compile-time validation will be disabled\r
-       if it is not installed on your system.</p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Changes to existing options<label id="modifiedoptions">\r
-\r
-<p>\r
-<descrip>\r
-       <tag>--enable-carp</tag>\r
-       <p>CARP support is now built by default.\r
-        --disable-carp can be used to build without it.</p>\r
-\r
-       <tag>--enable-htcp</tag>\r
-       <p>HTCP protocol support is now built by default.\r
-       Use --disable-htcp to build without it.</p>\r
-\r
-       <tag>--enable-snmp</tag>\r
-       <p>SNMP monitoring is now build by default.\r
-       Use --disable-snmp to build without it.</p>\r
-\r
-       <tag>--enable-heap-replacement</tag>\r
-       <p>Please use --enable-removal-policies directive instead.</p>\r
-\r
-       <tag>--with-maxfd=N</tag>\r
-       <p>Replaced by --with-filedescriptors=N</p>\r
-       <p>Override maximum number of filedescriptors. Useful\r
-       if you build as another user who is not privileged\r
-       to use the number of filedescriptors you want the\r
-       resulting binary to support</p>\r
-\r
-       <tag>--enable-select</tag>\r
-       <p>Deprecated.\r
-       Automatic checks will enable best I/O loop method available.</p>\r
-\r
-       <tag>--enable-epoll</tag>\r
-       <p>Deprecated.\r
-       Automatic checks will enable best I/O loop method available.</p>\r
-\r
-       <tag>--enable-poll</tag>\r
-       <p>Deprecated.\r
-       Automatic checks will enable best I/O loop method available.</p>\r
-\r
-       <tag>--enable-kqueue</tag>\r
-       <p>kqueue support is marked Experimental in Squid 3.0. Known to have some issues under load.</p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Not yet available options<label id="notportedoptions">\r
-\r
-<p>These configure options have not yet been ported to Squid-3. If you need something to do then\r
-porting one of these from Squid-2 to Squid-3 is most welcome.\r
-\r
-<descrip>\r
-       <tag>--enable-devpoll</tag>\r
-       <p>Support for Solaris /dev/poll</p>\r
-\r
-       <tag>--enable-select-simple</tag>\r
-       <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>\r
-\r
-       <tag>--enable-follow-x-forwarded-for</tag>\r
-       <p>Support following the X-Forwarded-For HTTP header for determining the\r
-       client IP address</p>\r
-</descrip>\r
-\r
-<sect2>Removed options<label id="removedoptions">\r
-\r
-<p>The following configure options have been removed.\r
-\r
-<descrip>\r
-       <tag>--enable-dlmalloc</tag>\r
-       <p>Most OS:es have good malloc implementations these days, and the version we used to ship with Squid was very very old..</p>\r
-       <tag>--enable-mempool-debug</tag>\r
-       <p>Debug option, not needed and therefore removed.</p>\r
-       <tag>--enable-forward-log</tag>\r
-       <p>Rarely used extra log file. Removed.</p>\r
-       <tag>--enable-multicast-miss</tag>\r
-       <p>Rarely used feature, and multicast ICP acheives almost the same result. Removed.</p>\r
-       <tag>--enable-coss-aio-ops</tag>\r
-       <p>Specific to the COSS implementation in Squid-2</p>\r
-       <tag>--enable-large-cache-files</tag>\r
-       <p>Now enabled by default. Configure option was redundant and therefore removed.\r
-       <tag>--enable-truncate</tag>\r
-       <p>Known to cause race conditions where cache objects may get corrupted, and this for at most a marginal performance improvement. Removed.</p>\r
-\r
-</descrip>\r
-\r
-</article>\r
+<!doctype linuxdoc system>
+<article>
+<title>Squid 3.0.RC1 release notes</title>
+<author>Squid Developers</author>
+<date>$Id: release-3.0.sgml,v 1.31 2007/12/14 05:34:16 amosjeffries Exp $</date>
+
+<abstract>
+This document contains the release notes for version 3.0 of Squid.
+Squid is a WWW Cache application developed by the National Laboratory
+for Applied Network Research and members of the Web Caching community.
+</abstract>
+
+<toc>
+
+<sect>Notice
+<p>
+The Squid Team are pleased to announce the release of Squid-3.0.RC1 for pre-release testing.
+
+This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.0/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="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.
+
+We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.
+
+<sect>Known issues
+<p>
+Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;target_milestone=3.0&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=bugs.bug_severity&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" name="open bugs against Squid-3.0">.
+
+<sect>Changes since earlier releases of Squid-3.0
+<p>
+The 3.0 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.0/changesets/" name="viewed here">.
+
+<sect>Changes since Squid-2.6
+
+<sect1>Major new features
+<p>
+Squid 3.0 represents a major rewrite of Squid and has a number of new features.
+
+The most important of these are:
+
+<itemize>
+       <item>Code converted to C++, with significant internal restructuring and rewrites.
+       <item>ICAP implementation (RFC 3507 and www.icap-forum.org)
+       <item>Edge Side Includes (ESI) implementation (www.esi.org)
+</itemize>
+
+Most user-facing changes are reflected in squid.conf (see below).
+
+<sect2>Internet Content Adaptation Protocol (ICAP)
+
+<p>Squid 3.0 supports ICAP/1.0. To enable ICAP support, use the --enable-icap-client ./configure option and icap_enable squid.conf option. You will also need to configure ICAP services in your squid.conf using icap_service, icap_class, and icap_access options. The following example instructs Squid to talk to two ICAP services, one for request and one for response adaptation:
+
+<verb>
+icap_enable on
+icap_service service_req reqmod_precache 1 icap://127.0.0.1:1344/request
+icap_service service_resp respmod_precache 0 icap://127.0.0.1:1344/response
+icap_class class_req service_req
+icap_class class_resp service_resp
+icap_access class_req allow all
+icap_access class_resp allow all
+</verb>
+
+<p>Please see squid.conf.default for more details about these and many other icap_* options.
+
+<p>Squid supports pre-cache request and pre-cache response vectoring points. The following ICAP features are supported: message preview, 204 responses outside of preview, request satisfaction, X-Transfer-* negotiation, persistent ICAP connections, client IP/credentials sharing, and optional bypass of certain service failures.
+
+<p>No more than one ICAP service can be applied to an HTTP message. In other words, chaining or load balancing multiple services is not yet supported.
+
+<p>Proxy-directed data trickling and patience pages are not supported yet.
+
+<p>Following ICAP requirements, Squid never performs HTTP message adaptation without a successful and fresh ICAP OPTIONS response on file. A REQMOD or RESPMOD request will not be sent to a configured ICAP service until Squid receives a valid OPTIONS response from that service. If a service malfunctions or goes down, Squid may stop talking to the service for a while. Several squid.conf options can be used to tune the failure bypass algorithm (e.g., icap_service_failure_limit and icap_service_revival_delay). 
+
+<p>The bypass parameter of the icap_service squid.conf option determines whether Squid will try to bypass service failures. Most connectivity and preview-stage failures can be bypassed.
+
+<p>More information about ICAP can be found from the ICAP-forum website <url url="http://www.icap-forum.org">
+
+<sect2>Edge Side Includes (ESI)
+
+<p>ESI is an open specification of an markup language enabling reverse proxies
+to perform some simple XML based processing, offloading the final page assembly from the webserver and similar tasks.
+
+<p>More information about ESI can be found from the ESI website <url url="http://www.esi.org">
+
+<sect1>2.6 features not found in Squid-3.0
+<p>
+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.
+
+<itemize>
+       <item>refresh_stale_hit option. Not yet ported.
+       <item>ability to follow X-Forwarded-For. Not yet ported.
+       <item>Full caching of Vary/ETag using If-None-Match. Only basic Vary cache supported. Not yet ported.
+       <item>Mapping of server error messages. Not yet ported.
+       <item>http_access2 access directive. Not yet ported.
+       <item>Location header rewrites. Not yet ported.
+       <item>umask directive. Not yet ported.
+       <item>wais_relay. Feature dropped as it's equivalent to cache_peer + cache_peer_access.
+       <item>urlgroup. Not yet ported.
+       <item>collapsed forwarding. Not yet ported.
+       <item>stable Windows support. Irregularly maintained.
+</itemize>
+
+<sect1>Logging changes
+<sect2>access.log
+<p>The TCP_REFRESH_HIT and TCP_REFRESH_MISS log types have been replaced because they were misleading (all refreshes need to query the origin server, so they could never be hits). The following log types have been introduced to replace them:
+
+<descrip>
+       <tag>TCP_REFRESH_UNMODIFIED</tag>
+       <p>The requested object was cached but STALE. The IMS query for the object resulted in "304 not modified".
+       <tag>TCP_REFRESH_MODIFIED</tag>
+       <p>The requested object was cached but STALE. The IMS query returned the new content.
+</descrip>
+<p>See <url url="http://www.squid-cache.org/Doc/FAQ/FAQ-6.html#ss6.7"> for a definition of all log types.
+<sect>Windows support
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment, 
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<newline>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<descrip>
+
+<tag>Usage</tag>
+
+Some new command line options were added for the Windows service support:<newline>
+
+The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.
+
+A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<em/"Squid"/ is the default when the switch is not used.
+
+So, to install the service, the syntax is: 
+
+<verb>squid -i [-f file] [-n name]</verb>
+
+Service uninstallation is made with -r command line switch with the appropriate -n switch.
+
+The -k switch family must be used with the appropriate -f and -n switches, so the syntax is: 
+
+<verb>squid -k command [-f file] -n service-name</verb>
+where <em/service-name/ is the name specified with -n options at service install time.
+
+To use the Squid original command line, the new -O switch must be used ONCE, the syntax is: 
+
+<verb>squid -O cmdline [-n service-name]</verb>
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.
+
+Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.
+
+In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130": 
+
+<verb>squid -O "-D -u 3130" -n squidsvc</verb>
+</descrip>
+
+<descrip>
+<tag>PSAPI.DLL (Process Status Helper) Considerations</tag>
+
+The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.
+
+PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.
+
+On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<url url="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE" name="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">
+
+On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.
+</descrip>
+
+<descrip>
+<tag>Registry DNS lookup</tag>
+On Windows platforms, if no value is specified in the <em/dns_nameservers/ option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.
+</descrip>
+
+<descrip>
+<tag>Compatibility Notes</tag>
+<itemize>
+<item>It's recommended to use '/' char in Squid paths instead of '\'
+<item>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid
+<item>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<verb>acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"</verb>
+
+<item>The Windows equivalent of '/dev/null' is 'NUL'
+<item>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<verb>redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd</verb>
+<item>When Squid runs in command line mode, the launching user account must have administrative privilege on the system
+<item>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used
+<item>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Known Limitations</tag>
+<itemize>
+<item>Squid features not operational:<newline>
+<itemize>
+<item>DISKD: still needs to be ported<newline>
+<item>WCCP: cannot work because user space GRE support on Windows is missing<newline>
+<item>Transparent Proxy: missing Windows non commercial interception driver<newline>
+</itemize>
+<item>Some code sections can make blocking calls.
+<item>Some external helpers may not work.
+<item>File Descriptors number hard-limited to 2048 when building with MinGW.
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Building Squid on Windows</tag>
+A reasonably recent release of <url url="http://www.cygwin.com/" name="Cygwin"> or <url url="http://www.mingw.org/" name="MinGW"> is needed.<newline>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<newline>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<newline><newline>
+OpenSSL: <url url="http://www.slproweb.com/products/Win32OpenSSL.html" name="Shining Light Productions Win32 OpenSSL"><newline>
+libcrypt: <url url="http://sourceforge.net/projects/mingwrep/" name="MinGW packages repository"><newline>
+db-1.85: <url url="http://tinycobol.org/download.html" name="TinyCOBOL download area"><newline>
+uudecode: <url url="http://unxutils.sourceforge.net/" name="Native Win32 ports of some GNU utilities"><newline><newline>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<newline>
+<itemize>
+<item>New configure options:<newline>
+<itemize>
+<item>--enable-win32-service<newline>
+</itemize>
+<item>Updated configure options:<newline>
+<itemize>
+<item>--enable-arp-acl<newline>
+<item>--enable-default-hostsfile<newline>
+</itemize>
+<item>Unsupported configure options:<newline>
+<itemize>
+<item>--enable-coss-aio-ops: On Windows Posix AIO is not available<newline>
+<item>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<newline>
+</itemize>
+<item>Recommended configure minimal options for Windows:<newline>
+<itemize>
+<item>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none
+</itemize>
+</itemize>
+<newline>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<itemize>
+<item>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<newline>
+<item>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<newline>
+<item>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<newline>
+</itemize>
+
+</descrip>
+
+<descrip>
+<tag>Using cache manager on Windows:</tag>
+On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<newline>
+Some specific configuration could be needed:<newline>
+<itemize>
+<item>IIS 6 (Windows 2003):<newline>
+<itemize>
+<item>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<newline>
+<itemize>
+<item>Create a cgi-bin Directory
+<item>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application 
+<item>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file
+<item>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <em/"Squid Cachemgr"/, add the cachemgr.cgi file and set the
+extension status to <em/Allowed/
+</itemize>
+</itemize>
+<item>Apache:<newline>
+<itemize>
+<item>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+ to pass the TMP and TEMP Windows environment variables to CGI applications:<newline>
+<verb>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+&lt;Location /squid/cgi-bin/cachemgr.cgi&gt;
+    PassEnv TMP TEMP
+    Order allow,deny
+    Allow from workstation.example.com
+&lt;/Location&gt;
+</verb>
+</itemize>
+</itemize>
+</descrip>
+
+
+
+<sect1>Changes to squid.conf
+<p>
+There have been many changes to Squid's configuration file since Squid-2.6.
+
+This section gives a thorough account of those changes in three categories:
+
+<itemize>
+       <item><ref id="newtags" name="New tags">
+       <item><ref id="modifiedtags" name="Changes to existing tags">
+       <item><ref id="removedtags" name="Removed tags">
+</itemize>
+
+<p>
+
+
+
+<sect2>New tags<label id="newtags">
+
+<p>
+<descrip>
+       <tag>minimum_icp_query_timeout (msec)</tag>
+       <verb>
+Default: 5
+
+Normally the ICP query timeout is determined dynamically.  But
+sometimes it can lead to very small timeouts, even lower than
+the normal latency variance on your link due to traffic.
+Use this option to put an lower limit on the dynamic timeout
+value.  Do NOT use this option to always use a fixed (instead
+of a dynamic) timeout value. To set a fixed timeout see the
+'icp_query_timeout' directive.
+       </verb>
+       <tag>background_ping_rate</tag>
+       <verb>
+Default: 10 seconds
+
+Controls how often the ICP pings are sent to siblings that
+have background-ping set.
+       </verb>
+
+       <tag>httpd_accel_surrogate_id</tag>
+       <verb>
+Default: unset
+
+Surrogates (http://www.esi.org/architecture_spec_1.0.html)
+need an identification token to allow control targeting. Because
+a farm of surrogates may all perform the same tasks, they may share
+an identification token.
+       </verb>
+
+       <tag>http_accel_surrogate_remote on|off</tag>
+       <verb>
+Default: off
+
+Remote surrogates (such as those in a CDN) honour Surrogate-Control: no-store-remote.
+Set this to on to have squid behave as a remote surrogate.
+       </verb>
+
+       <tag>esi_parser libxml2|expat|custom</tag>
+       <verb>
+Default: custom
+
+ESI markup is not strictly XML compatible. The custom ESI parser
+will give higher performance, but cannot handle non ASCII character
+encodings.
+       </verb>
+
+       <tag>email_err_data on|off</tag>
+       <verb>
+Default: on
+
+If enabled, information about the occurred error will be
+included in the mailto links of the ERR pages (if %W is set)
+so that the email body contains the data.
+Syntax is &lt;A HREF="mailto:%w%W"&gt;%w&lt;/A&gt;
+       </verb>
+
+       <tag>refresh_all_ims on|off</tag>
+       <verb>
+Default: off
+
+When you enable this option, squid will always check
+the origin server for an update when a client sends an
+If-Modified-Since request.  Many browsers use IMS
+requests when the user requests a reload, and this
+ensures those clients receive the latest version.
+
+By default (off), squid may return a Not Modified response
+based on the age of the cached version.
+       </verb>
+       <tag>request_header_access</tag>
+       <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to requests only.
+       <tag>reply_header_access</tag>
+       <p>Replaces the header_access directive of Squid-2.6 and earlier, but applies to replies only.
+
+       <tag>icap_enable on|off</tag>
+       <verb>
+Default: off
+
+If you want to enable the ICAP module support, set this to on.
+       </verb>
+       <tag>icap_preview_enable on|off</tag>
+       <verb>
+Default: off
+
+Set this to 'on' if you want to enable the ICAP preview
+feature in Squid.
+       </verb>
+       <tag>icap_preview_size</tag>
+       <verb>
+Default: -1
+
+The default size of preview data to be sent to the ICAP server.
+-1 means no preview. This value might be overwritten on a per server
+basis by OPTIONS requests.
+       </verb>
+       <tag>icap_default_options_ttl (seconds)</tag>
+       <verb>
+Default: 60
+
+The default TTL value for ICAP OPTIONS responses that don't have
+an Options-TTL header.
+       </verb>
+       <tag>icap_persistent_connections on|off</tag>
+       <verb>
+Default: on
+
+Whether or not Squid should use persistent connections to
+an ICAP server.
+       </verb>
+       <tag>icap_send_client_ip on|off</tag>
+       <verb>
+Default: off
+
+This adds the header "X-Client-IP" to ICAP requests.
+       </verb>
+       <tag>icap_send_client_username on|off</tag>
+       <verb>
+Default: off
+
+This adds the header "X-Client-Username" to ICAP requests
+if proxy access is authentified.
+       </verb>
+       <tag>icap_service</tag>
+       <verb>
+Default: none
+
+Defines a single ICAP service
+
+icap_service servicename vectoring_point bypass service_url
+
+vectoring_point = reqmod_precache|reqmod_postcache|respmod_precache|respmod_postcache
+This specifies at which point of request processing the ICAP
+service should be plugged in.
+bypass = 1|0
+If set to 1 and the ICAP server cannot be reached, the request will go
+through without being processed by an ICAP server
+service_url = icap://servername:port/service
+
+Note: reqmod_precache and respmod_postcache is not yet implemented
+
+Example:
+icap_service service_1 reqmod_precache 0 icap://icap1.mydomain.net:1344/reqmod
+icap_service service_2 respmod_precache 0 icap://icap2.mydomain.net:1344/respmod
+       </verb>
+       <tag>icap_class</tag>
+       <verb>
+Default: none
+
+Defines an ICAP service chain. If there are multiple services per
+vectoring point, they are processed in the specified order.
+
+icap_class classname servicename...
+
+Example:
+icap_class class_1 service_1 service_2
+icap class class_2 service_1 service_3
+       </verb>
+       <tag>icap_access</tag>
+       <verb>
+Default: none
+
+Redirects a request through an ICAP service class, depending
+on given acls
+
+icap_access classname allow|deny [!]aclname...
+
+The icap_access statements are processed in the order they appear in
+this configuration file. If an access list matches, the processing stops.
+For an "allow" rule, the specified class is used for the request. A "deny"
+rule simply stops processing without using the class. You can also use the
+special classname "None".
+
+For backward compatibility, it is also possible to use services
+directly here.
+
+Example:
+icap_access class_1 allow all
+       </verb>
+
+       <tag>accept_filter</tag>
+       <verb>
+The name of an accept(2) filter to install on Squid's
+listen socket(s).  This feature is perhaps specific to
+FreeBSD and requires support in the kernel.
+
+The 'httpready' filter delays delivering new connections
+to Squid until a full HTTP request has been received.
+See the accf_http(9) man page.
+       </verb>
+</descrip>
+
+
+<sect2>Changes to existing tags<label id="modifiedtags">
+<p>
+<descrip>
+       <tag>http_port</tag>
+       <p>New options:
+       <verb>
+    disable-pmtu-discovery=
+      Control Path-MTU discovery usage:
+        off          lets OS decide on what to do (default).
+        transparent  disable PMTU discovery when transparent support is enabled.
+        always       disable always PMTU discovery.
+
+    In many setups of transparently intercepting proxies Path-MTU
+    discovery can not work on traffic towards the clients. This is
+    the case when the intercepting device does not fully track
+    connections and fails to forward ICMP must fragment messages
+    to the cache server. If you have such setup and experience that
+    certain clients sporadically hang or never complete requests set
+    disable-pmtu-discovery option to 'transparent'.
+       </verb>
+       <p>Removed options:
+       <verb>
+    urlgroup=, not yet ported to Squid-3.
+    
+    no-connection-auth, not yet ported to Squid-3.
+        </verb>        
+       <tag> https_port</tag>
+       <p>Removed options:
+       <verb>
+    urlgroup=, not yet ported to Squid-3.
+       </verb>
+       <tag>cache_peer</tag>
+       <p>New options:
+       <verb>
+     basetime=n
+
+     background-ping
+
+     weighted-round-robin
+
+     use 'basetime=n' to specify a base amount to
+     be subtracted from round trip times of parents.
+     It is subtracted before division by weight in calculating
+     which parent to fectch from. If the rtt is less than the
+     base time the rtt is set to a minimal value.
+
+     use 'background-ping' to only send ICP queries to this
+     neighbor infrequently. This is used to keep the neighbor
+     round trip time updated and is usually used in
+     conjunction with weighted-round-robin.
+
+     use 'weighted-round-robin' to define a set of parents
+     which should be used in a round-robin fashion with the
+     frequency of each parent being based on the round trip
+     time. Closer parents are used more often.
+     Usually used for background-ping parents.
+
+       </verb>
+       <p>Removed options:
+       <verb>
+    userhash, not yet ported to Squid-3
+
+    sourcehash, not yet ported to Squid-2
+
+    monitorurl, monitorsize etc, not yet ported to Squid-3
+
+    connection-auth=, not yet ported to Squid-3
+       </verb>
+       <tag>cache_dir</tag>
+       <p>Common options
+       <verb>
+    no-store, replaces the older read-only option
+
+    min-size, not yet portedto Squid-3
+       </verb>
+       <p>COSS file system:
+       <verb>
+    The coss file store is experimental, and still lacks much
+    of the functionality found in 2.6.
+
+    overwrite-percent=n, not yet ported to Squid-3.
+
+    max-stripe-waste=n, not yet ported to Squid-3.
+
+    membufs=n, not yet ported to Squid-3.
+
+    maxfullbufs=n, not yet ported to Squid-3.
+       </verb>
+       <tag>auth_param</tag>
+       <p>Removed Basic auth option
+       <verb>
+    blankpasswor, not yet ported to squid-3.
+    auth_param basic concurrency 0
+       </verb>
+       <p>Removed digest options:
+       <verb>
+    concurrency, not yet ported to Squid-3.
+       </verb>
+
+       <tag>external_acl_type</tag>
+       <p>New format specifications:
+       <verb>
+    %URI          Requested URI
+
+    %PATH         Requested URL path
+       </verb>
+       <P>Removed format specifications:
+       <verb>
+    %ACL, not yet ported to Squid-3
+
+    %DATA, not yet ported to Squid-3
+       </verb>
+       <p>New result keywords:
+       <verb>
+     tag=  Apply a tag to a request (for both ERR and OK results)
+           Only sets a tag, does not alter existing tags.
+       </verb>
+
+       <tag>refresh_pattern</tag>
+       <p>New options:
+       <verb>
+    ignore-no-store
+    refresh-ims
+
+    ignore-no-store ignores any ``Cache-control: no-store''
+    headers received from a server. Doing this VIOLATES
+    the HTTP standard. Enabling this feature could make you
+    liable for problems which it causes.
+
+    refresh-ims causes squid to contact the origin server
+    when a client issues an If-Modified-Since request. This
+    ensures that the client will receive an updated version
+    if one is available.
+       </verb>
+       <tag>acl</tag>
+       <p>New types:
+       <verb>
+    acl aclname http_status 200 301 500- 400-403 ...     # status code in reply
+
+       </verb>
+       <p>Removed types:
+       <verb>
+    acl aclname urllogin [-i] [^a-zA-Z0-9] ...      # regex matching on URL login field
+
+    acl urlgroup group1 ...
+       # match against the urlgroup as indicated by redirectors
+
+       </verb>
+       <tag>short_icon_urls</tag>
+       <p>New default:
+       <verb>
+    Default: on
+    (Old default: off)
+       </verb>
+       <tag>delay_class</tag>
+       <p>New delay classes:
+       <verb>
+    class 4 Everything in a class 3 delay pool, with an
+    additional limit on a per user basis. This
+    only takes effect if the username is established
+    in advance - by forcing authentication in your
+    http_access rules.
+
+    class 5 Requests are grouped according their tag (see
+    external_acl's tag= reply).
+       </verb>
+
+       <tag>htcp_port</tag>
+       <p>New default to require the feature to be enabled in squid.conf:
+       <verb>
+    Default: 0 (disabled)
+    (Old default: 4827)
+       </verb>
+
+       <tag>icp_port</tag>
+       <p>New default to require the feature to be enabled in squid.conf:
+       <verb>
+    Default: 0 (disabled)
+    (Old default: 3130)
+       </verb>
+
+       <tag>snmp_port</tag>
+       <p>New default to require the feature to be enabled in squid.conf:
+       <verb>
+    Default: 0 (disabled)
+    (Old default: 3401)
+       </verb>
+
+       <tag>logformat</tag>
+       <p>New format tags:
+       <verb>
+    rp      Request URL-Path excluding hostname
+
+    et      Tag returned by external acl
+
+    &lt;sH     Reply high offset sent
+
+    &lt;sS     Upstream object size
+       </verb>
+
+       <p>Removed format tags:
+       <verb>
+    &gt;st     Request size including HTTP headers, not yet ported to Squid-3.
+
+    st      Request+Reply size including HTTP headers, not yet ported to Squid-3.
+       </verb>
+
+       <tag>reply_body_max_size</tag>
+       <p>Syntax changed:
+       <verb>
+    reply_body_max_size size [acl acl...]
+       </verb>
+       <p>allow/deny no longer used.
+
+       <tag>url_rewrite_program</tag>
+       <p>No urlgroup support in either requests or responese
+</descrip>
+
+
+
+
+<sect2>Removed tags<label id="removedtags">
+<p>
+<descrip>
+       <tag>broken_vary_encoding</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>cache_vary</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>collapsed_forwarding</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>follow_x_forwarded_for</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>*_uses_indirect_client</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>error_map</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>header_access</tag>
+       <p>This has been replaced by request_header_access and reply_header_access
+       <tag>http_access2</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>httpd_accel_no_pmtu_disc</tag>
+       <p>Replaced by disable-pmtu-discovery http_port option
+       <tag>location_rewrite_*</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>refresh_stale_hit</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>umask</tag>
+       <p>Not yet ported to Squid-3.
+       <tag>wais_relay_*</tag>
+       <p>equivalent to cache_peer + cache_peer_access.
+</descrip>
+
+
+<sect1>Changes to ./configure Options
+<p>
+There have been some changes to Squid's build configuration since Squid-2.6.
+
+This section gives an account of those changes in three categories:
+
+<itemize>
+       <item><ref id="newoptions" name="New options">
+       <item><ref id="modifiedoptions" name="Changes to existing options">
+       <item><ref id="notportedoptions" name="Not yet available options">
+       <item><ref id="removedoptions" name="Removed options">
+</itemize>
+<p>
+
+
+<sect2>New options<label id="newoptions">
+
+<p>
+<descrip>
+       <tag>--enable-shared[=PKGS]</tag>
+       <p>Build shared libraries. The default is to build without.</p>
+
+       <tag>--enable-static[=PKGS]</tag>
+       <p>Build static libraries. The default is on.</p>
+
+       <tag>--enable-fast-install[=PKGS]</tag>
+       <verb>Optimize for fast installation
+       default: yes</verb>
+
+       <tag>--disable-libtool-lock</tag>
+       <p>Avoid locking (might break parallel builds)</p>
+
+       <tag>--disable-optimizations</tag>
+       <p>Don't compile Squid with compiler optimizations enabled.
+       Optimization is good for production builds, but not
+       good for debugging. During development, use
+       --disable-optimizations to reduce compilation times
+       and allow easier debugging. This option implicitly
+       also enables --disable-inline</p>
+
+       <tag>--disable-inline</tag>
+       <p>Don't compile trivial methods as inline. Squid
+       is coded with much of the code able to be inlined.
+       Inlining is good for production builds, but not
+       good for development. During development, use
+       --disable-inline to reduce compilation times and
+       allow incremental builds to be quick. For
+       production builds, or load tests, use
+       --enable-inline to have squid make all trivial
+       methods inlinable by the compiler.</p>
+
+       <tag>--enable-debug-cbdata</tag>
+       <p>Provide some debug information in cbdata</p>
+
+       <tag>--enable-disk-io=\"list of modules\"</tag>
+       <p>Build support for the list of disk I/O modules.
+       The default is only to build the "Blocking" module.
+       See src/DiskIO for a list of available modules, or
+       Programmers Guide for details on how to build your
+       custom disk module.</p>
+
+       <tag>--enable-esi</tag>
+       <p>Enable ESI for accelerators. Requires libexpat.
+       Enabling ESI will cause squid to follow the Edge
+       Acceleration Specification (www.esi.org). This
+       causes squid to IGNORE client Cache-Control headers.</p>
+       <p><em>DO NOT</em> use this in a squid configured as a web
+       proxy, ONLY use it in a squid configured for
+       webserver acceleration.</p>
+
+       <tag>--enable-icap-client</tag>
+       <p>Enable the ICAP client.</p>
+
+       <tag>--disable-snmp</tag>
+       <p>Disable SNMP monitoring support which is now built by default.</p>
+
+       <tag>--disable-htcp</tag>
+       <p>Disable HTCP protocol support which is now built by default.</p>
+
+       <tag>--enable-kqueue</tag>
+       <p>Enable kqueue() support. Marked as experimental in 3.0.</p>
+
+       <tag>--enable-ipfw-transparent</tag>
+       <p>Enable Transparent Proxy support for systems
+       using FreeBSD IPFW style redirection.</p>
+
+       <tag>--disable-mempools</tag>
+       <p>Disable memPools. Note that this option now simply sets the
+       default behaviour. Specific classes can override this at runtime, and
+       only lib/MemPool.c needs to be altered to change the squid-wide
+       default for all classes.</p>
+
+       <tag>--enable-cpu-profiling</tag>
+       <p>This option allows you to see which internal functions
+       in Squid are consuming how much CPU. Compiles in probes
+       that measure time spent in probed functions. Needs
+       source modifications to add new probes. This is meant
+       for developers to assist in performance optimisations
+       of Squid internal functions.</p>
+       <p>If you are not developer and not interested in the stats
+       you shouldn't enable this, as overhead added, although
+       small, is still overhead. See lib/Profiler.c for more.</p>
+
+       <tag>--with-gnu-ld</tag>
+       <p>Assume the C compiler uses GNU ld. The default is to auto-detect.</p>
+
+       <tag>--with-pic</tag>
+       <p>Try to use only PIC/non-PIC objects. The default is to use both.</p>
+
+       <tag>--with-tags[=TAGS]</tag>
+       <p>Include additional configurations. The default is automatic.</p>
+
+       <tag>--with-default-user=USER</tag>
+       <p>Sets the default System User account for squid permissions.
+       The default is 'nobody' as in other releases of squid.</p>
+
+       <tag>--with-cppunit-basedir=[PATH]</tag>
+       <p>Path where the cppunit headers and libraries are found
+       for unit testing. The default is automatic detection.</p>
+       <p>NOTE: Since 3.0-PRE6 and 2.6STABLE14 squid no longer comes
+       bundled with CPPUnit. Compile-time validation will be disabled
+       if it is not installed on your system.</p>
+
+</descrip>
+</p>
+
+<sect2>Changes to existing options<label id="modifiedoptions">
+
+<p>
+<descrip>
+       <tag>--enable-carp</tag>
+       <p>CARP support is now built by default.
+        --disable-carp can be used to build without it.</p>
+
+       <tag>--enable-htcp</tag>
+       <p>HTCP protocol support is now built by default.
+       Use --disable-htcp to build without it.</p>
+
+       <tag>--enable-snmp</tag>
+       <p>SNMP monitoring is now build by default.
+       Use --disable-snmp to build without it.</p>
+
+       <tag>--enable-heap-replacement</tag>
+       <p>Please use --enable-removal-policies directive instead.</p>
+
+       <tag>--with-maxfd=N</tag>
+       <p>Replaced by --with-filedescriptors=N</p>
+       <p>Override maximum number of filedescriptors. Useful
+       if you build as another user who is not privileged
+       to use the number of filedescriptors you want the
+       resulting binary to support</p>
+
+       <tag>--enable-select</tag>
+       <p>Deprecated.
+       Automatic checks will enable best I/O loop method available.</p>
+
+       <tag>--enable-epoll</tag>
+       <p>Deprecated.
+       Automatic checks will enable best I/O loop method available.</p>
+
+       <tag>--enable-poll</tag>
+       <p>Deprecated.
+       Automatic checks will enable best I/O loop method available.</p>
+
+       <tag>--enable-kqueue</tag>
+       <p>kqueue support is marked Experimental in Squid 3.0. Known to have some issues under load.</p>
+
+</descrip>
+</p>
+
+<sect2>Not yet available options<label id="notportedoptions">
+
+<p>These configure options have not yet been ported to Squid-3. If you need something to do then
+porting one of these from Squid-2 to Squid-3 is most welcome.
+
+<descrip>
+       <tag>--enable-devpoll</tag>
+       <p>Support for Solaris /dev/poll</p>
+
+       <tag>--enable-select-simple</tag>
+       <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>
+
+       <tag>--enable-follow-x-forwarded-for</tag>
+       <p>Support following the X-Forwarded-For HTTP header for determining the
+       client IP address</p>
+</descrip>
+
+<sect2>Removed options<label id="removedoptions">
+
+<p>The following configure options have been removed.
+
+<descrip>
+       <tag>--enable-dlmalloc</tag>
+       <p>Most OS:es have good malloc implementations these days, and the version we used to ship with Squid was very very old..</p>
+       <tag>--enable-mempool-debug</tag>
+       <p>Debug option, not needed and therefore removed.</p>
+       <tag>--enable-forward-log</tag>
+       <p>Rarely used extra log file. Removed.</p>
+       <tag>--enable-multicast-miss</tag>
+       <p>Rarely used feature, and multicast ICP acheives almost the same result. Removed.</p>
+       <tag>--enable-coss-aio-ops</tag>
+       <p>Specific to the COSS implementation in Squid-2</p>
+       <tag>--enable-large-cache-files</tag>
+       <p>Now enabled by default. Configure option was redundant and therefore removed.
+       <tag>--enable-truncate</tag>
+       <p>Known to cause race conditions where cache objects may get corrupted, and this for at most a marginal performance improvement. Removed.</p>
+
+</descrip>
+
+</article>
index bc3aa3c794e4a8bf3a275fc892280787842a6b86..f22f2321539ca7aee08098d0788304a2a097ea78 100644 (file)
@@ -1,13 +1,13 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <HTML>
 <HEAD>
- <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
+ <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.50">
  <TITLE>Squid 3.1.PRE1 release notes</TITLE>
 </HEAD>
 <BODY>
 <H1>Squid 3.1.PRE1 release notes</H1>
 
-<H2>Squid Developers</H2>$Id: release-3.1.html,v 1.5 2008/01/17 10:09:05 hno Exp $
+<H2>Squid Developers</H2>$Id: release-3.1.sgml,v 1.6 2008/01/17 10:09:05 hno Exp $
 <HR>
 <EM>This document contains the release notes for version 3.1 of Squid.
 Squid is a WWW Cache application developed by the National Laboratory
@@ -44,6 +44,7 @@ While this release is not deemed ready for production use, we believe it is read
 <P>
 <UL>
 <LI>IPv6 Support</LI>
+<LI>Error Page Localization</LI>
 </UL>
 </P>
 <P>Most user-facing changes are reflected in squid.conf (see below).</P>
@@ -112,7 +113,243 @@ A new one will be needed for IPv6 traffic between the helper and server.</P>
 with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.</P>
 
 
-<H2><A NAME="ss4.2">4.2 Changes to squid.conf</A>
+<H3>Error Page Localization</H3>
+
+<P>The error pages presented by squid may now be localized per-request to match the visitors local preferred language.</P>
+
+<P>Squid needs to be build with the --enable-auto-locale option. And the error_directory option in squid.conf needs to be removed.</P>
+
+<P>For best coverage of languages, using the latest language pack of error files is recommended.
+Updates can be downloaded from 
+<A HREF="http://www.squid-cahch.org/Versions/langpack/">www.squid-cache.org/Versions/langpack/</A></P>
+
+<P>The squid developers are interested in making squid available in a wide variety of languages.
+Contributions of new languages is encouraged.
+Details at 
+<A HREF="http://wiki.squid-cache.org/Translations">http://wiki.squid-cache.org/Translations</A></P>
+
+<H2><A NAME="s5">5. Windows support</A></H2>
+
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment, 
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<BR>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<DL>
+
+<DT><B>Usage</B><DD>
+<P>Some new command line options were added for the Windows service support:<BR></P>
+<P>The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.</P>
+<P>A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<EM>"Squid"</EM> is the default when the switch is not used.</P>
+<P>So, to install the service, the syntax is: </P>
+<P>
+<PRE>
+squid -i [-f file] [-n name]
+</PRE>
+</P>
+<P>Service uninstallation is made with -r command line switch with the appropriate -n switch.</P>
+<P>The -k switch family must be used with the appropriate -f and -n switches, so the syntax is: </P>
+<P>
+<PRE>
+squid -k command [-f file] -n service-name
+</PRE>
+
+where <EM>service-name</EM> is the name specified with -n options at service install time.</P>
+<P>To use the Squid original command line, the new -O switch must be used ONCE, the syntax is: </P>
+<P>
+<PRE>
+squid -O cmdline [-n service-name]
+</PRE>
+
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.</P>
+<P>Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.</P>
+<P>In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130": </P>
+<P>
+<PRE>
+squid -O "-D -u 3130" -n squidsvc
+</PRE>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>PSAPI.DLL (Process Status Helper) Considerations</B><DD>
+<P>The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.</P>
+<P>PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.</P>
+<P>On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<A HREF="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE</A></P>
+<P>On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Registry DNS lookup</B><DD>
+<P>On Windows platforms, if no value is specified in the <EM>dns_nameservers</EM> option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Compatibility Notes</B><DD>
+<P>
+<UL>
+<LI>It's recommended to use '/' char in Squid paths instead of '\'</LI>
+<LI>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid</LI>
+<LI>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<PRE>
+acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"
+</PRE>
+
+</LI>
+<LI>The Windows equivalent of '/dev/null' is 'NUL'</LI>
+<LI>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<PRE>
+redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd
+</PRE>
+</LI>
+<LI>When Squid runs in command line mode, the launching user account must have administrative privilege on the system</LI>
+<LI>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used</LI>
+<LI>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Known Limitations</B><DD>
+<P>
+<UL>
+<LI>Squid features not operational:<BR>
+<UL>
+<LI>DISKD: still needs to be ported<BR></LI>
+<LI>WCCP: cannot work because user space GRE support on Windows is missing<BR></LI>
+<LI>Transparent Proxy: missing Windows non commercial interception driver<BR></LI>
+</UL>
+</LI>
+<LI>Some code sections can make blocking calls.</LI>
+<LI>Some external helpers may not work.</LI>
+<LI>File Descriptors number hard-limited to 2048 when building with MinGW.</LI>
+</UL>
+</P>
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Building Squid on Windows</B><DD>
+<P>A reasonably recent release of 
+<A HREF="http://www.cygwin.com/">Cygwin</A> or 
+<A HREF="http://www.mingw.org/">MinGW</A> is needed.<BR>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<BR>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<BR><BR>
+OpenSSL: 
+<A HREF="http://www.slproweb.com/products/Win32OpenSSL.html">Shining Light Productions Win32 OpenSSL</A><BR>
+libcrypt: 
+<A HREF="http://sourceforge.net/projects/mingwrep/">MinGW packages repository</A><BR>
+db-1.85: 
+<A HREF="http://tinycobol.org/download.html">TinyCOBOL download area</A><BR>
+uudecode: 
+<A HREF="http://unxutils.sourceforge.net/">Native Win32 ports of some GNU utilities</A><BR><BR>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<BR>
+<UL>
+<LI>New configure options:<BR>
+<UL>
+<LI>--enable-win32-service<BR></LI>
+</UL>
+</LI>
+<LI>Updated configure options:<BR>
+<UL>
+<LI>--enable-arp-acl<BR></LI>
+<LI>--enable-default-hostsfile<BR></LI>
+</UL>
+</LI>
+<LI>Unsupported configure options:<BR>
+<UL>
+<LI>--enable-coss-aio-ops: On Windows Posix AIO is not available<BR></LI>
+<LI>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<BR></LI>
+</UL>
+</LI>
+<LI>Recommended configure minimal options for Windows:<BR>
+<UL>
+<LI>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none</LI>
+</UL>
+</LI>
+</UL>
+<BR>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<UL>
+<LI>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<BR></LI>
+<LI>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<BR></LI>
+<LI>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<BR></LI>
+</UL>
+</P>
+
+</DL>
+</P>
+<P>
+<DL>
+<DT><B>Using cache manager on Windows:</B><DD>
+<P>On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<BR>
+Some specific configuration could be needed:<BR>
+<UL>
+<LI>IIS 6 (Windows 2003):<BR>
+<UL>
+<LI>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<BR>
+<UL>
+<LI>Create a cgi-bin Directory</LI>
+<LI>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application </LI>
+<LI>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file</LI>
+<LI>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <EM>"Squid Cachemgr"</EM>, add the cachemgr.cgi file and set the
+extension status to <EM>Allowed</EM></LI>
+</UL>
+</LI>
+</UL>
+</LI>
+<LI>Apache:<BR>
+<UL>
+<LI>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+to pass the TMP and TEMP Windows environment variables to CGI applications:<BR>
+<PRE>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+&lt;Location /squid/cgi-bin/cachemgr.cgi&gt;
+    PassEnv TMP TEMP
+    Order allow,deny
+    Allow from workstation.example.com
+&lt;/Location&gt;
+</PRE>
+</LI>
+</UL>
+</LI>
+</UL>
+</P>
+</DL>
+</P>
+
+
+<H2><A NAME="ss5.1">5.1 Changes to squid.conf</A>
 </H2>
 
 <P>There have been changes to Squid's configuration file since Squid-3.0.</P>
@@ -135,7 +372,8 @@ with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.</P
 
 <P>
 <DL>
-<DT><B>pinger_enable</B><DD><P>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.
+<DT><B>pinger_enable</B><DD>
+<P>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.
 <PRE>
         Control whether the pinger is active at run-time.
         Enables turning ICMP pinger on and off with a simple squid -k reconfigure.
@@ -144,7 +382,8 @@ with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.</P
 </PRE>
 </P>
 
-<DT><B>dns_v4_fallback</B><DD><P>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.
+<DT><B>dns_v4_fallback</B><DD>
+<P>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.
 Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a safety net behind IPv6.
 <PRE>
         Standard practice with DNS is to lookup either A or AAAA records
@@ -164,7 +403,8 @@ Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a s
 </PRE>
 </P>
 
-<DT><B>include</B><DD><P>New option to import entire secondary configuration files into squid.conf.
+<DT><B>include</B><DD>
+<P>New option to import entire secondary configuration files into squid.conf.
 <PRE>
         Squid will follow the files immediately and insert all their content
         as if it was at that position in squid.conf. As per squid.conf some
@@ -179,6 +419,19 @@ Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a s
 </PRE>
 </P>
 
+<DT><B>error_default_language</B><DD>
+<P>New option to replace the old configure option --enable-default-err-language
+<PRE>
+        Set the default language which squid will send error pages in
+        if no existing translation matches the clients language
+        preferences.
+
+        If unset (default) generic English will be used.
+        
+</PRE>
+</P>
+
+
 </DL>
 </P>
 
@@ -186,30 +439,35 @@ Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a s
 
 <P>
 <DL>
-<DT><B>acl dst ipvs</B><DD><P>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.
+<DT><B>acl dst ipvs</B><DD>
+<P>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.
 <PRE>
         acl aclname dst ipv6
         
 </PRE>
 </P>
 
-<DT><B>http(s)_port name= option</B><DD><P>New port option to assign internal names to listening ports
+<DT><B>http(s)_port name= intercept</B><DD>
+<P>New port options.
 <PRE>
            name=        Specifies a internal name for the port. Defaults to
                         the port specification (port or addr:port)
+
+           intercept    Rename of old 'transparent' option to indicate proper functionality.
         
 </PRE>
 </P>
 
-<DT><B>acl myportname</B><DD><P>New acl type myportname, matching the name of the http(s)_port where the request was accepted
+<DT><B>acl myportname</B><DD>
+<P>New acl type myportname, matching the name of the http(s)_port where the request was accepted
 <PRE>
         acl aclname myportname 3128 ...         # http(s)_port name
         
 </PRE>
 </P>
 
-
-<DT><B>external_acl_type</B><DD><P>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.
+<DT><B>external_acl_type</B><DD>
+<P>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.
 Please be aware of some limits to these options. These options only affet the transport protocol used
 to send data to and from the helpers. Squid in IPv6-mode may still send %SRC addresses in IPv4 or IPv6
 format, so all helpers will need to be checked and converted to cope with such information cleanly.
@@ -223,7 +481,8 @@ format, so all helpers will need to be checked and converted to cope with such i
 </PRE>
 </P>
 
-<DT><B>tcp_outgoing_address</B><DD><P>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.
+<DT><B>tcp_outgoing_address</B><DD>
+<P>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.
 <PRE>
         Squid is built with a capability of bridging the IPv4 and IPv6 internets.
         tcp_outgoing_address as previously used breaks this bridging by forcing
@@ -247,7 +506,8 @@ format, so all helpers will need to be checked and converted to cope with such i
 </PRE>
 </P>
 
-<DT><B>balance_on_multiple_ip</B><DD><P>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.
+<DT><B>balance_on_multiple_ip</B><DD>
+<P>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.
 It has thus been turned off by default. Making the 'best choice' IP continue in use for any hostname until it encounters a connection failure and failover drops to the next known IP.
 <PRE>
        Modern IP resolvers in squid sort lookup results by preferred access.
@@ -263,6 +523,34 @@ It has thus been turned off by default. Making the 'best choice' IP continue in
 </PRE>
 </P>
 
+<DT><B>http_port</B><DD>
+<P>option 'transparent' is being deprecated in favour of 'intercept' which more clearly identifies what the option does.
+For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy using TPROXY support.</P>
+
+<DT><B>error_directory</B><DD>
+<P>Now an optiona entry in squid.conf. If present it will force all visitors to receive the error pages
+contained in the directory it points at. If absent error page localization will be given a chance.
+<PRE>
+        If you wish to create your own versions of the default
+        error files to customize them to suit your company copy
+        the error/template files to another directory and point
+        this tag at them.
+
+        WARNING: This option will disable multi-language support
+                 on error pages if used.
+
+        The squid developers are interested in making squid available in
+        a wide variety of languages. If you are making translations for a
+        language that Squid does not currently provide please consider
+        contributing your translation back to the project.
+        http://wiki.squid-cache.org/Translations
+
+        The squid developers working on translations are happy to supply drop-in
+        translated error files in exchange for any new language contributions.
+        
+</PRE>
+</P>
+
 </DL>
 </P>
 
@@ -272,11 +560,14 @@ It has thus been turned off by default. Making the 'best choice' IP continue in
 <P>
 <DL>
 
+<DT><B>dns_testnames</B><DD>
+<P>Obsolete. This feature is no longer relevant to modern networks and causes boot problems.</P>
+
 </DL>
 </P>
 
 
-<H2><A NAME="ss4.3">4.3 Changes to ./configure Options</A>
+<H2><A NAME="ss5.2">5.2 Changes to ./configure Options</A>
 </H2>
 
 <P>There have been some changes to Squid's build configuration since Squid-3.0.</P>
@@ -300,19 +591,24 @@ It has thus been turned off by default. Making the 'best choice' IP continue in
 
 <P>
 <DL>
-<DT><B>--enable-ipv6</B><DD><P>Buildwith IPv6 support. The default is to build without.</P>
+<DT><B>--enable-ipv6</B><DD>
+<P>Buildwith IPv6 support. The default is to build without.</P>
 
-<DT><B>--with-localhost-ipv6</B><DD><P>Build support for squid to map all 127.0.0.1 traffic onto ::1.
+<DT><B>--with-localhost-ipv6</B><DD>
+<P>Build support for squid to map all 127.0.0.1 traffic onto ::1.
 The default is to build with 127.0.0.1 and ::1 being considered seperate IP.
 see the IPv6 details above for a better description. </P>
 
-<DT><B>--with-ipv6-split-stack</B><DD><P>Enable special additions for IPv6 support in Windows XP.
+<DT><B>--with-ipv6-split-stack</B><DD>
+<P>Enable special additions for IPv6 support in Windows XP.
 see the IPv6 details above for a better description.</P>
 
-<DT><B>--with-ipv4-mapped</B><DD><P>Enable special additions for IPv6 support in Windows Vista.
+<DT><B>--with-ipv4-mapped</B><DD>
+<P>Enable special additions for IPv6 support in Windows Vista.
 see the IPv6 details above for a better description.</P>
 
-<DT><B>--with-dns-cname</B><DD><P>Enable CNAME recursion within the Internal DNS resolver stub squid uses.
+<DT><B>--with-dns-cname</B><DD>
+<P>Enable CNAME recursion within the Internal DNS resolver stub squid uses.
 This has no effect on the external DNS helper.
 Please note this extension is still experimental and may encounter problems.
 To see if it is actually needed you can run squid without it for a period and
@@ -320,15 +616,25 @@ check the CNAME-Only Requests statistics squid maintains.
 If it produces ongoing serious problems the external helper may be needed
 but please report the bugs anyway.</P>
 
+<DT><B>--enable-auto-locale</B><DD>
+<P>Enable error page localization for visitors.</P>
+
 </DL>
 </P>
 <H3><A NAME="modifiedoptions"></A> Changes to existing options</H3>
 
 <P>
 <DL>
-<DT><B>--disable-internl-dns</B><DD><P>Better support for Linux using the external DNS helper.
+<DT><B>--disable-internl-dns</B><DD>
+<P>Better support for Linux using the external DNS helper.
 The helper will compile and work with dns_nameservers on more variants of Linux than previously.</P>
 
+<DT><B>--enable-linux-netfilter</B><DD>
+<P>This option now enables support for all three netfilter interception targets.
+Adding TPROXY version 4+ support to squid through the TPROXY target.
+This options requires a linux kernel 2.6.25 or later for embeded netfilter TPROXY targets.
+Older REDIRECT and DNAT targets work as before on HTTP ports marked 'intercept'.</P>
+
 </DL>
 </P>
 <H3><A NAME="notportedoptions"></A> Not yet available options</H3>
@@ -337,11 +643,14 @@ The helper will compile and work with dns_nameservers on more variants of Linux
 porting one of these from Squid-2 to Squid-3 is most welcome.</P>
 <P>
 <DL>
-<DT><B>--enable-devpoll</B><DD><P>Support for Solaris /dev/poll</P>
+<DT><B>--enable-devpoll</B><DD>
+<P>Support for Solaris /dev/poll</P>
 
-<DT><B>--enable-select-simple</B><DD><P>Basic POSIX select() loop without any binary fd_set optimizations.</P>
+<DT><B>--enable-select-simple</B><DD>
+<P>Basic POSIX select() loop without any binary fd_set optimizations.</P>
 
-<DT><B>--enable-follow-x-forwarded-for</B><DD><P>Support following the X-Forwarded-For HTTP header for determining the
+<DT><B>--enable-follow-x-forwarded-for</B><DD>
+<P>Support following the X-Forwarded-For HTTP header for determining the
 client IP address</P>
 </DL>
 </P>
@@ -351,7 +660,12 @@ client IP address</P>
 <P>The following configure options have been removed.</P>
 <P>
 <DL>
-
+<DT><B>--enable-linux-tproxy</B><DD>
+<P>Replaced by --enable-linux-tproxy2 to make way for differences in TPROXY v2 and v4 support.</P>
+<DT><B>--enable-default-err-language</B><DD>
+<P>Replaced by error_default_language squid.conf option</P>
+<DT><B>--enable-err-languages</B><DD>
+<P>Removed.</P>
 </DL>
 </P>
 
index 4a2384e4c61132681f4a435d1522ed0962ff59b7..a453f5fdafcefa9981613d002c2c7754caae82cc 100644 (file)
-<!doctype linuxdoc system>\r
-<article>\r
-<title>Squid 3.1.PRE1 release notes</title>\r
-<author>Squid Developers</author>\r
-<date>$Id: release-3.1.sgml,v 1.6 2008/01/17 10:09:05 hno Exp $</date>\r
-\r
-<abstract>\r
-This document contains the release notes for version 3.1 of Squid.\r
-Squid is a WWW Cache application developed by the National Laboratory\r
-for Applied Network Research and members of the Web Caching community.\r
-</abstract>\r
-\r
-<toc>\r
-\r
-<sect>Notice\r
-<p>\r
-The Squid Team are pleased to announce the release of Squid-3.1.PRE1 for pre-release testing.\r
-\r
-This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.1/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="mirrors">.\r
-\r
-A large number of the show-stopper bugs have been fixed along with general improvements to the ICAP support.\r
-While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.\r
-\r
-We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.\r
-\r
-<sect>Known issues\r
-<p>\r
-Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;target_milestone=3.1&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=bugs.bug_severity&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" name="open bugs against Squid-3.1">.\r
-\r
-<sect>Changes since earlier PRE releases of Squid-3.1\r
-<p>\r
-The 3.1 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.1/changesets/" name="viewed here">.\r
-\r
-<sect>Changes since Squid-3.0\r
-\r
-<sect1>Major new features\r
-<p>\r
-Squid 3.1 represents a new feature release above 3.0.\r
-\r
-The most important of these new features are:\r
-\r
-<itemize>\r
-       <item>IPv6 Support\r
-</itemize>\r
-\r
-Most user-facing changes are reflected in squid.conf (see below).\r
-\r
-<sect2>Internet Protocol version 6 (IPv6)\r
-\r
-<p>Squid 3.1 supports IPv6. To enable IPv6 support, use the ./configure --enable-ipv6 option\r
-\r
-<sect3>New Features for IPv6\r
-\r
-<p>Squid handles localhost values seperately. For the purpose of ACLs and also external\r
- connections ::1 is considered a seperate IP from 127.0.0.1. This means all ACL which\r
- define behaviour for localhost may need ::1/128 included.\r
-\r
-<p>--with-localhost-ipv6 option is provided for Pure-IPv6 setups who do not want to be\r
- bothered by the localhost vagaries. It will enable logics to map all localhost traffic\r
- through ::1 unless an IPv4-only link is required.\r
-\r
-<p>Additional ./configure --with-ipv4-mapped option is provided for OS that require a socket setting\r
- to accept IPv4 addresses on IPv6 sockets, squid performs v4-mapping on these addresses\r
- It is intended primarily to be used for Windows Vista builds.\r
-\r
-<p>Pinger has been upgraded to perform both ICMP and ICMPv6 as required.\r
- As a result of this and due to a change in the binary protocol format between them,\r
- new builds of squid are no longer backwards-compatible with old pinger binaries.\r
- You will need to perform "make install-pinger" again after installing squid.\r
-\r
-<p>Peer and Client SNMP tables have been altered to handle IPv6 addresses.\r
- As a side effect of this the long-missing fix to show seperate named peers on one IP\r
- has been integrated. Making the SNMP peer table now produce correct output.\r
- The table structure change is identical for both IPv4-only and Dual modes but with\r
- IPv4-only simply not including any IP6 entries. This means any third-party SNMP\r
- software which hard coded the MIB paths needs to be upgraded for this Squid release.\r
-\r
-\r
-<sect3>Limitations of IPv6 Support\r
-\r
-<p>Specify a specific tcp_outgoing_address and the clients who match its ACL are limited\r
- to the IPv4 or IPv6 network that address belongs to. They are not permitted over the\r
- IPv4-IPv6 boundary. Some ACL voodoo can however be applied to explicitly route the\r
- IPv6/IPv4 bound traffic out an appropriate interface.\r
-<verb>\r
-    acl toIP6 dst ipv6\r
-    tcp_outgoing_address 2001::1 toIP6\r
-    tcp_outgoing_address 10.0.0.1 !toIP6\r
-</verb>\r
-\r
-<p>WCCP is not available (neither version 1 or 2). It remains built into squid for use with IPv4 traffic but IPv6 cannot use it.\r
-\r
-<p>Transparent/Interception is done via NAT at the OS level and is not available in IPv6.\r
-   Squid will ensure that any port set with transparent or tproxy options be an IPv4-only\r
-   listening address. Wildcard can still be used but will not open as an IPv6.\r
-   To ensure that squid can accept IPv6 traffic on its default port, an alternative should\r
-   be chosen to handle transparent traffic.\r
-<verb>\r
-   http_port 3128\r
-   http_port 8080 transparent\r
-</verb>\r
-\r
-<p>The bundled NTLM Auth helper is IPv4-native between itself and the NTLM server.\r
-   A new one will be needed for IPv6 traffic between the helper and server.\r
-\r
-<p>The bundled RADIUS Auth helper is IPv4-native, both in traffic between and data storage\r
-   with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.\r
-\r
-\r
-<sect1>Changes to squid.conf\r
-<p>\r
-There have been changes to Squid's configuration file since Squid-3.0.\r
-\r
-This section gives a thorough account of those changes in three categories:\r
-\r
-<itemize>\r
-       <item><ref id="newtags" name="New tags">\r
-       <item><ref id="modifiedtags" name="Changes to existing tags">\r
-       <item><ref id="removedtags" name="Removed tags">\r
-</itemize>\r
-\r
-<p>\r
-\r
-\r
-<sect2>New tags<label id="newtags">\r
-<p>\r
-<descrip>\r
-        <tag>pinger_enable</tag>\r
-        <p>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.\r
-        <verb>\r
-        Control whether the pinger is active at run-time.\r
-        Enables turning ICMP pinger on and off with a simple squid -k reconfigure.\r
-        default is on when --enable-icmp is compiled in.\r
-        </verb>\r
-\r
-        <tag>dns_v4_fallback</tag>\r
-        <p>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.\r
-           Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a safety net behind IPv6.\r
-        <verb>\r
-        Standard practice with DNS is to lookup either A or AAAA records\r
-        and use the results if it succeeds. Only looking up the other if\r
-        the first attempt fails or otherwise produces no results.\r
-\r
-        That policy however will cause squid to produce error pages for some\r
-        servers that advertise AAAA but are unreachable over IPv6.\r
-\r
-        If this is ON  squid will always lookup both AAAA and A, using both.\r
-        If this is OFF squid will lookup AAAA and only try A if none found.\r
-\r
-        WARNING: There are some possibly unwanted side-effects with this on:\r
-                *) Doubles the load placed by squid on the DNS network.\r
-                *) May negatively impact connection delay times.\r
-        </verb>\r
-\r
-       <tag>include</tag>\r
-       <p>New option to import entire secondary configuration files into squid.conf.\r
-       <verb>\r
-       Squid will follow the files immediately and insert all their content\r
-       as if it was at that position in squid.conf. As per squid.conf some\r
-       options are order-specific within the config as a whole.\r
-\r
-       A few layers of include are allowed, but too many are confusing and\r
-       squid will enforce an include depth of 16 files.\r
-\r
-       Syntax:\r
-               include /path/to/file1 /path/to/file2\r
-       </verb>\r
-\r
-</descrip>\r
-\r
-<sect2>Changes to existing tags<label id="modifiedtags">\r
-<p>\r
-<descrip>\r
-       <tag>acl dst ipvs</tag>\r
-       <p>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.\r
-        <verb>\r
-       acl aclname dst ipv6\r
-        </verb>\r
-\r
-       <tag>http(s)_port name= intercept</tag>\r
-       <p>New port options.\r
-        <verb>\r
-           name=        Specifies a internal name for the port. Defaults to\r
-                        the port specification (port or addr:port)\r
-\r
-           intercept    Rename of old 'transparent' option to indicate proper functionality.\r
-        </verb>\r
-\r
-       <tag>acl myportname</tag>\r
-       <p>New acl type myportname, matching the name of the http(s)_port where the request was accepted\r
-        <verb>\r
-        acl aclname myportname 3128 ...         # http(s)_port name\r
-        </verb>\r
-\r
-        <tag>external_acl_type</tag>\r
-        <p>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.\r
-           Please be aware of some limits to these options. These options only affet the transport protocol used\r
-          to send data to and from the helpers. Squid in IPv6-mode may still send %SRC addresses in IPv4 or IPv6\r
-          format, so all helpers will need to be checked and converted to cope with such information cleanly.\r
-        <verb>\r
-          ipv4 / ipv6   IP-mode used to communicate to this helper.\r
-                        For compatability with older configurations and helpers\r
-                        'ipv4' is the default unless --with-localhost-ipv6 is used.\r
-                        --with-localhost-ipv6 changes the default to 'ipv6'.\r
-                        SPECIAL NOTE: explicit use of these options override --with-localhost-ipv6\r
-        </verb>\r
-\r
-        <tag>tcp_outgoing_address</tag>\r
-        <p>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.\r
-        <verb>\r
-        Squid is built with a capability of bridging the IPv4 and IPv6 internets.\r
-        tcp_outgoing_address as previously used breaks this bridging by forcing\r
-        all outbound traffic through a certain IPv4 which may be on the wrong\r
-        side of the IPv4/IPv6 boundary.\r
-\r
-        To operate with tcp_outgoing_address and keep the bridging benefits\r
-        an additional ACL needs to be used which ensures the IPv6-bound traffic\r
-        is never forced or permitted out the IPv4 interface.\r
-\r
-        acl to_ipv6 dst ipv6\r
-        tcp_outgoing_address 2002::c001 good_service_net to_ipv6\r
-        tcp_outgoing_address 10.0.0.2 good_service_net !to_ipv6\r
-\r
-        tcp_outgoing_address 2002::beef normal_service_net to_ipv6\r
-        tcp_outgoing_address 10.0.0.1 normal_service_net !to_ipv6\r
-\r
-        tcp_outgoing_address 2002::1 to_ipv6\r
-        tcp_outgoing_address 10.0.0.3 !to_ipv6\r
-        </verb>\r
-\r
-        <tag>balance_on_multiple_ip</tag>\r
-        <p>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.\r
-           It has thus been turned off by default. Making the 'best choice' IP continue in use for any hostname until it encounters a connection failure and failover drops to the next known IP.\r
-        <verb>\r
-       Modern IP resolvers in squid sort lookup results by preferred access.\r
-       By default squid will use these IP in order and only rotates to\r
-       the next listed when the most preffered fails.\r
-\r
-       Some load balancing servers based on round robin DNS have been\r
-       found not to preserve user session state across requests\r
-       to different IP addresses.\r
-\r
-       Enabling this directive Squid rotates IP's per request.\r
-        </verb>\r
-\r
-       <tag>http_port</tag>\r
-       <p>option 'transparent' is being deprecated in favour of 'intercept' which more clearly identifies what the option does.\r
-       For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy using TPROXY support.</p>\r
-\r
-</descrip>\r
-\r
-\r
-<sect2>Removed tags<label id="removedtags">\r
-<p>\r
-<descrip>\r
-\r
-</descrip>\r
-\r
-\r
-<sect1>Changes to ./configure Options\r
-<p>\r
-There have been some changes to Squid's build configuration since Squid-3.0.\r
-\r
-This section gives an account of those changes in three categories:\r
-\r
-<itemize>\r
-       <item><ref id="newoptions" name="New options">\r
-       <item><ref id="modifiedoptions" name="Changes to existing options">\r
-       <item><ref id="notportedoptions" name="Not yet available options">\r
-       <item><ref id="removedoptions" name="Removed options">\r
-</itemize>\r
-<p>\r
-\r
-\r
-<sect2>New options<label id="newoptions">\r
-\r
-<p>\r
-<descrip>\r
-       <tag>--enable-ipv6</tag>\r
-       <p>Buildwith IPv6 support. The default is to build without.</p>\r
-\r
-       <tag>--with-localhost-ipv6</tag>\r
-       <p>Build support for squid to map all 127.0.0.1 traffic onto ::1.\r
-           The default is to build with 127.0.0.1 and ::1 being considered seperate IP.\r
-           see the IPv6 details above for a better description. \r
-        </p>\r
-\r
-        <tag>--with-ipv6-split-stack</tag>\r
-        <p>Enable special additions for IPv6 support in Windows XP.\r
-           see the IPv6 details above for a better description.</p>\r
-\r
-       <tag>--with-ipv4-mapped</tag>\r
-       <p>Enable special additions for IPv6 support in Windows Vista.\r
-           see the IPv6 details above for a better description.</p>\r
-\r
-        <tag>--with-dns-cname</tag>\r
-        <p>Enable CNAME recursion within the Internal DNS resolver stub squid uses.\r
-           This has no effect on the external DNS helper.\r
-           Please note this extension is still experimental and may encounter problems.\r
-          To see if it is actually needed you can run squid without it for a period and\r
-          check the CNAME-Only Requests statistics squid maintains.\r
-          If it produces ongoing serious problems the external helper may be needed\r
-          but please report the bugs anyway.\r
-        </p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Changes to existing options<label id="modifiedoptions">\r
-\r
-<p>\r
-<descrip>\r
-       <tag>--disable-internl-dns</tag>\r
-       <p>Better support for Linux using the external DNS helper.\r
-           The helper will compile and work with dns_nameservers on more variants of Linux than previously.</p>\r
-\r
-       <tag>--enable-linux-netfilter</tag>\r
-       <p>This option now enables support for all three netfilter interception targets.\r
-        Adding TPROXY version 4+ support to squid through the TPROXY target.\r
-       This options requires a linux kernel 2.6.25 or later for embeded netfilter TPROXY targets.\r
-       Older REDIRECT and DNAT targets work as before on HTTP ports marked 'intercept'.\r
-       </p>\r
-\r
-</descrip>\r
-</p>\r
-\r
-<sect2>Not yet available options<label id="notportedoptions">\r
-\r
-<p>These configure options have not yet been ported to Squid-3. If you need something to do then\r
-porting one of these from Squid-2 to Squid-3 is most welcome.\r
-\r
-<descrip>\r
-       <tag>--enable-devpoll</tag>\r
-       <p>Support for Solaris /dev/poll</p>\r
-\r
-       <tag>--enable-select-simple</tag>\r
-       <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>\r
-\r
-       <tag>--enable-follow-x-forwarded-for</tag>\r
-       <p>Support following the X-Forwarded-For HTTP header for determining the\r
-       client IP address</p>\r
-</descrip>\r
-\r
-<sect2>Removed options<label id="removedoptions">\r
-\r
-<p>The following configure options have been removed.\r
-\r
-<descrip>\r
-       <tag>--enable-linux-tproxy</tag>\r
-       <p>Replaced by --enable-linux-tproxy2 to make way for differences in TPROXY v2 and v4 support.</p>\r
-\r
-</descrip>\r
-\r
-</article>\r
+<!doctype linuxdoc system>
+<article>
+<title>Squid 3.1.PRE1 release notes</title>
+<author>Squid Developers</author>
+<date>$Id: release-3.1.sgml,v 1.6 2008/01/17 10:09:05 hno Exp $</date>
+
+<abstract>
+This document contains the release notes for version 3.1 of Squid.
+Squid is a WWW Cache application developed by the National Laboratory
+for Applied Network Research and members of the Web Caching community.
+</abstract>
+
+<toc>
+
+<sect>Notice
+<p>
+The Squid Team are pleased to announce the release of Squid-3.1.PRE1 for pre-release testing.
+
+This new release is available for download from <url url="http://www.squid-cache.org/Versions/v3/3.1/"> or the <url url="http://www.squid-cache.org/Mirrors/http-mirrors.html" name="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.
+
+We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/TroubleShooting#head-7067fc0034ce967e67911becaabb8c95a34d576d"> for how to submit a report with a stack trace.
+
+<sect>Known issues
+<p>
+Although this release is deemed good enough for testing in many setups, please note the existence of <url url="http://www.squid-cache.org/bugs/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;target_milestone=3.1&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=bugs.bug_severity&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=" name="open bugs against Squid-3.1">.
+
+<sect>Changes since earlier PRE releases of Squid-3.1
+<p>
+The 3.1 change history can be <url url="http://www.squid-cache.org/Versions/v3/3.1/changesets/" name="viewed here">.
+
+<sect>Changes since Squid-3.0
+
+<sect1>Major new features
+<p>
+Squid 3.1 represents a new feature release above 3.0.
+
+The most important of these new features are:
+
+<itemize>
+       <item>IPv6 Support
+       <item>Error Page Localization
+</itemize>
+
+Most user-facing changes are reflected in squid.conf (see below).
+
+<sect2>Internet Protocol version 6 (IPv6)
+
+<p>Squid 3.1 supports IPv6. To enable IPv6 support, use the ./configure --enable-ipv6 option
+
+<sect3>New Features for IPv6
+
+<p>Squid handles localhost values seperately. For the purpose of ACLs and also external
+ connections ::1 is considered a seperate IP from 127.0.0.1. This means all ACL which
+ define behaviour for localhost may need ::1/128 included.
+
+<p>--with-localhost-ipv6 option is provided for Pure-IPv6 setups who do not want to be
+ bothered by the localhost vagaries. It will enable logics to map all localhost traffic
+ through ::1 unless an IPv4-only link is required.
+
+<p>Additional ./configure --with-ipv4-mapped option is provided for OS that require a socket setting
+ to accept IPv4 addresses on IPv6 sockets, squid performs v4-mapping on these addresses
+ It is intended primarily to be used for Windows Vista builds.
+
+<p>Pinger has been upgraded to perform both ICMP and ICMPv6 as required.
+ As a result of this and due to a change in the binary protocol format between them,
+ new builds of squid are no longer backwards-compatible with old pinger binaries.
+ You will need to perform "make install-pinger" again after installing squid.
+
+<p>Peer and Client SNMP tables have been altered to handle IPv6 addresses.
+ As a side effect of this the long-missing fix to show seperate named peers on one IP
+ has been integrated. Making the SNMP peer table now produce correct output.
+ The table structure change is identical for both IPv4-only and Dual modes but with
+ IPv4-only simply not including any IP6 entries. This means any third-party SNMP
+ software which hard coded the MIB paths needs to be upgraded for this Squid release.
+
+
+<sect3>Limitations of IPv6 Support
+
+<p>Specify a specific tcp_outgoing_address and the clients who match its ACL are limited
+ to the IPv4 or IPv6 network that address belongs to. They are not permitted over the
+ IPv4-IPv6 boundary. Some ACL voodoo can however be applied to explicitly route the
+ IPv6/IPv4 bound traffic out an appropriate interface.
+<verb>
+    acl toIP6 dst ipv6
+    tcp_outgoing_address 2001::1 toIP6
+    tcp_outgoing_address 10.0.0.1 !toIP6
+</verb>
+
+<p>WCCP is not available (neither version 1 or 2). It remains built into squid for use with IPv4 traffic but IPv6 cannot use it.
+
+<p>Transparent/Interception is done via NAT at the OS level and is not available in IPv6.
+   Squid will ensure that any port set with transparent or tproxy options be an IPv4-only
+   listening address. Wildcard can still be used but will not open as an IPv6.
+   To ensure that squid can accept IPv6 traffic on its default port, an alternative should
+   be chosen to handle transparent traffic.
+<verb>
+   http_port 3128
+   http_port 8080 transparent
+</verb>
+
+<p>The bundled NTLM Auth helper is IPv4-native between itself and the NTLM server.
+   A new one will be needed for IPv6 traffic between the helper and server.
+
+<p>The bundled RADIUS Auth helper is IPv4-native, both in traffic between and data storage
+   with the RADIUS server. A new helper will be needed for IPv6 RADIUS protocol.
+
+
+<sect2>Error Page Localization
+<p>
+The error pages presented by squid may now be localized per-request to match the visitors local preferred language.
+
+<p>Squid needs to be build with the --enable-auto-locale option. And the error_directory option in squid.conf needs to be removed.
+
+<p>For best coverage of languages, using the latest language pack of error files is recommended.
+Updates can be downloaded from <url url="http://www.squid-cahch.org/Versions/langpack/" name="www.squid-cache.org/Versions/langpack/">
+
+<p>The squid developers are interested in making squid available in a wide variety of languages.
+   Contributions of new languages is encouraged.
+   Details at <url url="http://wiki.squid-cache.org/Translations" named="The Squid wiki">
+
+<sect>Windows support
+<P>This Squid version can run on Windows as a system service using the Cygwin emulation environment, 
+or can be compiled in Windows native mode using the MinGW + MSYS development environment. Windows NT 4 SP4 and later are supported.<newline>
+On Windows 2000 and later the service is configured to use the Windows Service Recovery option
+restarting automatically after 60 seconds.
+<descrip>
+
+<tag>Usage</tag>
+
+Some new command line options were added for the Windows service support:<newline>
+
+The service installation is made with -i command line switch, it's possible to use -f switch at
+the same time for specify a different config-file settings for the Squid Service that will be
+stored on the Windows Registry.
+
+A new -n switch specify the Windows Service Name, so multiple Squid instance are allowed.
+<em/"Squid"/ is the default when the switch is not used.
+
+So, to install the service, the syntax is: 
+
+<verb>squid -i [-f file] [-n name]</verb>
+
+Service uninstallation is made with -r command line switch with the appropriate -n switch.
+
+The -k switch family must be used with the appropriate -f and -n switches, so the syntax is: 
+
+<verb>squid -k command [-f file] -n service-name</verb>
+where <em/service-name/ is the name specified with -n options at service install time.
+
+To use the Squid original command line, the new -O switch must be used ONCE, the syntax is: 
+
+<verb>squid -O cmdline [-n service-name]</verb>
+If multiple service command line options must be specified, use quote. The -n switch is
+needed only when a non default service name is in use.
+
+Don't use the "Start parameters" in the Windows 2000/XP/2003 Service applet: they are
+specific to Windows services functionality and Squid is not designed for understand they.
+
+In the following example the command line of the "squidsvc" Squid service is set to "-D -u 3130": 
+
+<verb>squid -O "-D -u 3130" -n squidsvc</verb>
+</descrip>
+
+<descrip>
+<tag>PSAPI.DLL (Process Status Helper) Considerations</tag>
+
+The process status helper functions make it easier for you to obtain information about
+processes and device drivers running on Microsoft® Windows NT®/Windows® 2000. These
+functions are available in PSAPI.DLL, which is distributed in the Microsoft® Platform
+Software Development Kit (SDK). The same information is generally available through the
+performance data in the registry, but it is more difficult to get to it. PSAPI.DLL is
+freely redistributable.
+
+PSAPI.DLL is available only on Windows NT, 2000, XP and 2003. The implementation in Squid is
+aware of this, and try to use it only on the right platform.
+
+On Windows NT PSAPI.DLL can be found as component of many applications, if you need it,
+you can find it on Windows NT Resource KIT. If you have problem, it can be
+downloaded from here:
+<url url="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE" name="http://download.microsoft.com/download/platformsdk/Redist/4.0.1371.1/NT4/EN-US/psinst.EXE">
+
+On Windows 2000 and later it is available installing the Windows Support Tools, located on the
+Support\Tools folder of the installation Windows CD-ROM.
+</descrip>
+
+<descrip>
+<tag>Registry DNS lookup</tag>
+On Windows platforms, if no value is specified in the <em/dns_nameservers/ option on
+squid.conf or in the /etc/resolv.conf file, the list of DNS name servers are
+taken from the Windows registry, both static and dynamic DHCP configurations
+are supported.
+</descrip>
+
+<descrip>
+<tag>Compatibility Notes</tag>
+<itemize>
+<item>It's recommended to use '/' char in Squid paths instead of '\'
+<item>Paths with spaces (like 'C:\Programs Files\Squid) are NOT supported by Squid
+<item>When using ACL like 'acl aclname acltype "file"' the file must be in DOS text
+format (CR+LF) and the full Windows path must be specified, for example:
+
+<verb>acl blocklist url_regex -i "c:/squid/etc/blocked1.txt"</verb>
+
+<item>The Windows equivalent of '/dev/null' is 'NUL'
+<item>Squid doesn't know how to run external helpers based on scripts, like .bat, .cmd,
+.vbs, .pl, etc. So in squid.conf the interpreter path must be always specified, for example:
+
+<verb>redirect_program c:/perl/bin/perl.exe c:/squid/libexec/redir.pl
+redirect_program c:/winnt/system32/cmd.exe /C c:/squid/libexec/redir.cmd</verb>
+<item>When Squid runs in command line mode, the launching user account must have administrative privilege on the system
+<item>"Start parameters" in the Windows 2000/XP/2003 Service applet cannot be used
+<item>Building with MinGW, when the configure option --enable-truncate is used, Squid cannot run on Windows NT, only Windows 2000 and later are supported
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Known Limitations</tag>
+<itemize>
+<item>Squid features not operational:<newline>
+<itemize>
+<item>DISKD: still needs to be ported<newline>
+<item>WCCP: cannot work because user space GRE support on Windows is missing<newline>
+<item>Transparent Proxy: missing Windows non commercial interception driver<newline>
+</itemize>
+<item>Some code sections can make blocking calls.
+<item>Some external helpers may not work.
+<item>File Descriptors number hard-limited to 2048 when building with MinGW.
+</itemize>
+</descrip>
+
+<descrip>
+<tag>Building Squid on Windows</tag>
+A reasonably recent release of <url url="http://www.cygwin.com/" name="Cygwin"> or <url url="http://www.mingw.org/" name="MinGW"> is needed.<newline>
+The usage of the Cygwin environment is very similar to other Unix/Linux environments, and -devel version of libraries must be installed.<newline>
+For the MinGW environment, the packages MSYS, MinGW and msysDTK must be installed. Some additional libraries and tools must be downloaded separately:<newline><newline>
+OpenSSL: <url url="http://www.slproweb.com/products/Win32OpenSSL.html" name="Shining Light Productions Win32 OpenSSL"><newline>
+libcrypt: <url url="http://sourceforge.net/projects/mingwrep/" name="MinGW packages repository"><newline>
+db-1.85: <url url="http://tinycobol.org/download.html" name="TinyCOBOL download area"><newline>
+uudecode: <url url="http://unxutils.sourceforge.net/" name="Native Win32 ports of some GNU utilities"><newline><newline>
+When running configure, --disable-wccp and --disable-wccpv2 options should always specified to avoid compile errors.<newline>
+<itemize>
+<item>New configure options:<newline>
+<itemize>
+<item>--enable-win32-service<newline>
+</itemize>
+<item>Updated configure options:<newline>
+<itemize>
+<item>--enable-arp-acl<newline>
+<item>--enable-default-hostsfile<newline>
+</itemize>
+<item>Unsupported configure options:<newline>
+<itemize>
+<item>--enable-coss-aio-ops: On Windows Posix AIO is not available<newline>
+<item>--with-large-files: No suitable build environment is available on both Cygwin and MinGW, but --enable-large-cache-files works fine<newline>
+</itemize>
+<item>Recommended configure minimal options for Windows:<newline>
+<itemize>
+<item>--prefix=c:/squid --disable-wccp --disable-wccpv2 --enable-win32-service --enable-default-hostsfile=none
+</itemize>
+</itemize>
+<newline>
+Before build Squid with SSL support, some operations are needed (in the following example OpenSSL is installed in C:\OpenSSL and MinGW in C:\MinGW):
+<itemize>
+<item>Copy C:\OpenSSL\lib\MinGW content to C:\MinGW\lib<newline>
+<item>Copy C:\OpenSSL\include\openssl content to C:\MinGW\include\openssl<newline>
+<item>Rename C:\MinGW\lib\ssleay32.a to C:\MinGW\lib\libssleay32.a<newline>
+</itemize>
+
+</descrip>
+
+<descrip>
+<tag>Using cache manager on Windows:</tag>
+On Windows, cache manager (cachemgr.cgi) can be used with Microsoft IIS or Apache.<newline>
+Some specific configuration could be needed:<newline>
+<itemize>
+<item>IIS 6 (Windows 2003):<newline>
+<itemize>
+<item>On IIS 6.0 all CGI extensions are denied by default for security reason, so the following configuration is needed:<newline>
+<itemize>
+<item>Create a cgi-bin Directory
+<item>Define the cgi-bin IIS Virtual Directory with read and CGI execute IIS
+permissions, ASP scripts are not needed. This automatically defines a
+cgi-bin IIS web application 
+<item>Copy cachemgr.cgi into cgi-bin directory and look to file permissions:
+the IIS system account and SYSTEM must be able to read and execute the file
+<item>In IIS manager go to Web Service extensions and add a new Web Service
+Extension called <em/"Squid Cachemgr"/, add the cachemgr.cgi file and set the
+extension status to <em/Allowed/
+</itemize>
+</itemize>
+<item>Apache:<newline>
+<itemize>
+<item>On Windows, cachemgr.cgi needs to create a temporary file, so Apache must be instructed
+ to pass the TMP and TEMP Windows environment variables to CGI applications:<newline>
+<verb>
+ScriptAlias /squid/cgi-bin/ "c:/squid/libexec/"
+&lt;Location /squid/cgi-bin/cachemgr.cgi&gt;
+    PassEnv TMP TEMP
+    Order allow,deny
+    Allow from workstation.example.com
+&lt;/Location&gt;
+</verb>
+</itemize>
+</itemize>
+</descrip>
+
+
+<sect1>Changes to squid.conf
+<p>
+There have been changes to Squid's configuration file since Squid-3.0.
+
+This section gives a thorough account of those changes in three categories:
+
+<itemize>
+       <item><ref id="newtags" name="New tags">
+       <item><ref id="modifiedtags" name="Changes to existing tags">
+       <item><ref id="removedtags" name="Removed tags">
+</itemize>
+
+<p>
+
+
+<sect2>New tags<label id="newtags">
+<p>
+<descrip>
+        <tag>pinger_enable</tag>
+        <p>New option to enable/disable the ICMP pinger helper with a reconfigure instead of a full rebuild.
+        <verb>
+        Control whether the pinger is active at run-time.
+        Enables turning ICMP pinger on and off with a simple squid -k reconfigure.
+        default is on when --enable-icmp is compiled in.
+        </verb>
+
+        <tag>dns_v4_fallback</tag>
+        <p>New option to prevent squid from always looking up IPv4 regardless of whether IPv6 addresses are found.
+           Squid will follow a policy of prefering IPv6 links, keeping the IPv4 only as a safety net behind IPv6.
+        <verb>
+        Standard practice with DNS is to lookup either A or AAAA records
+        and use the results if it succeeds. Only looking up the other if
+        the first attempt fails or otherwise produces no results.
+
+        That policy however will cause squid to produce error pages for some
+        servers that advertise AAAA but are unreachable over IPv6.
+
+        If this is ON  squid will always lookup both AAAA and A, using both.
+        If this is OFF squid will lookup AAAA and only try A if none found.
+
+        WARNING: There are some possibly unwanted side-effects with this on:
+                *) Doubles the load placed by squid on the DNS network.
+                *) May negatively impact connection delay times.
+        </verb>
+
+       <tag>include</tag>
+       <p>New option to import entire secondary configuration files into squid.conf.
+       <verb>
+       Squid will follow the files immediately and insert all their content
+       as if it was at that position in squid.conf. As per squid.conf some
+       options are order-specific within the config as a whole.
+
+       A few layers of include are allowed, but too many are confusing and
+       squid will enforce an include depth of 16 files.
+
+       Syntax:
+               include /path/to/file1 /path/to/file2
+       </verb>
+
+        <tag>error_default_language</tag>
+        <p>New option to replace the old configure option --enable-default-err-language
+        <verb>
+        Set the default language which squid will send error pages in
+        if no existing translation matches the clients language
+        preferences.
+
+        If unset (default) generic English will be used.
+       </verb>
+
+
+</descrip>
+
+<sect2>Changes to existing tags<label id="modifiedtags">
+<p>
+<descrip>
+       <tag>acl dst ipvs</tag>
+       <p>New preset content - ipv6 - available as a preset type in the src and dst ACL matching all of the public IPv6 network space.
+        <verb>
+       acl aclname dst ipv6
+        </verb>
+
+       <tag>http(s)_port name= intercept</tag>
+       <p>New port options.
+        <verb>
+           name=        Specifies a internal name for the port. Defaults to
+                        the port specification (port or addr:port)
+
+           intercept    Rename of old 'transparent' option to indicate proper functionality.
+        </verb>
+
+       <tag>acl myportname</tag>
+       <p>New acl type myportname, matching the name of the http(s)_port where the request was accepted
+        <verb>
+        acl aclname myportname 3128 ...         # http(s)_port name
+        </verb>
+
+        <tag>external_acl_type</tag>
+        <p>New options 'ipv4' and 'ipv6' are added to set the IPv4/v6 protocol between squid and its helpers.
+           Please be aware of some limits to these options. These options only affet the transport protocol used
+          to send data to and from the helpers. Squid in IPv6-mode may still send %SRC addresses in IPv4 or IPv6
+          format, so all helpers will need to be checked and converted to cope with such information cleanly.
+        <verb>
+          ipv4 / ipv6   IP-mode used to communicate to this helper.
+                        For compatability with older configurations and helpers
+                        'ipv4' is the default unless --with-localhost-ipv6 is used.
+                        --with-localhost-ipv6 changes the default to 'ipv6'.
+                        SPECIAL NOTE: explicit use of these options override --with-localhost-ipv6
+        </verb>
+
+        <tag>tcp_outgoing_address</tag>
+        <p>This option causes some problems when bridging IPv4 and IPv6. A workaround has been provided.
+        <verb>
+        Squid is built with a capability of bridging the IPv4 and IPv6 internets.
+        tcp_outgoing_address as previously used breaks this bridging by forcing
+        all outbound traffic through a certain IPv4 which may be on the wrong
+        side of the IPv4/IPv6 boundary.
+
+        To operate with tcp_outgoing_address and keep the bridging benefits
+        an additional ACL needs to be used which ensures the IPv6-bound traffic
+        is never forced or permitted out the IPv4 interface.
+
+        acl to_ipv6 dst ipv6
+        tcp_outgoing_address 2002::c001 good_service_net to_ipv6
+        tcp_outgoing_address 10.0.0.2 good_service_net !to_ipv6
+
+        tcp_outgoing_address 2002::beef normal_service_net to_ipv6
+        tcp_outgoing_address 10.0.0.1 normal_service_net !to_ipv6
+
+        tcp_outgoing_address 2002::1 to_ipv6
+        tcp_outgoing_address 10.0.0.3 !to_ipv6
+        </verb>
+
+        <tag>balance_on_multiple_ip</tag>
+        <p>The previous default behavour (rotate per-request) of this setting causes failover clashes with IPv6 built-in mechanisms.
+           It has thus been turned off by default. Making the 'best choice' IP continue in use for any hostname until it encounters a connection failure and failover drops to the next known IP.
+        <verb>
+       Modern IP resolvers in squid sort lookup results by preferred access.
+       By default squid will use these IP in order and only rotates to
+       the next listed when the most preffered fails.
+
+       Some load balancing servers based on round robin DNS have been
+       found not to preserve user session state across requests
+       to different IP addresses.
+
+       Enabling this directive Squid rotates IP's per request.
+        </verb>
+
+       <tag>http_port</tag>
+       <p>option 'transparent' is being deprecated in favour of 'intercept' which more clearly identifies what the option does.
+       For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy using TPROXY support.</p>
+
+       <tag>error_directory</tag>
+       <p>Now an optiona entry in squid.conf. If present it will force all visitors to receive the error pages
+       contained in the directory it points at. If absent error page localization will be given a chance.
+       <verb>
+        If you wish to create your own versions of the default
+        error files to customize them to suit your company copy
+        the error/template files to another directory and point
+        this tag at them.
+
+        WARNING: This option will disable multi-language support
+                 on error pages if used.
+
+        The squid developers are interested in making squid available in
+        a wide variety of languages. If you are making translations for a
+        language that Squid does not currently provide please consider
+        contributing your translation back to the project.
+        http://wiki.squid-cache.org/Translations
+
+        The squid developers working on translations are happy to supply drop-in
+        translated error files in exchange for any new language contributions.
+       </verb>
+
+</descrip>
+
+
+<sect2>Removed tags<label id="removedtags">
+<p>
+<descrip>
+
+       <tag>dns_testnames</tag>
+       <p>Obsolete. This feature is no longer relevant to modern networks and causes boot problems.</p>
+
+</descrip>
+
+
+<sect1>Changes to ./configure Options
+<p>
+There have been some changes to Squid's build configuration since Squid-3.0.
+
+This section gives an account of those changes in three categories:
+
+<itemize>
+       <item><ref id="newoptions" name="New options">
+       <item><ref id="modifiedoptions" name="Changes to existing options">
+       <item><ref id="notportedoptions" name="Not yet available options">
+       <item><ref id="removedoptions" name="Removed options">
+</itemize>
+<p>
+
+
+<sect2>New options<label id="newoptions">
+
+<p>
+<descrip>
+       <tag>--enable-ipv6</tag>
+       <p>Buildwith IPv6 support. The default is to build without.</p>
+
+       <tag>--with-localhost-ipv6</tag>
+       <p>Build support for squid to map all 127.0.0.1 traffic onto ::1.
+           The default is to build with 127.0.0.1 and ::1 being considered seperate IP.
+           see the IPv6 details above for a better description. 
+        </p>
+
+        <tag>--with-ipv6-split-stack</tag>
+        <p>Enable special additions for IPv6 support in Windows XP.
+           see the IPv6 details above for a better description.</p>
+
+       <tag>--with-ipv4-mapped</tag>
+       <p>Enable special additions for IPv6 support in Windows Vista.
+           see the IPv6 details above for a better description.</p>
+
+        <tag>--with-dns-cname</tag>
+        <p>Enable CNAME recursion within the Internal DNS resolver stub squid uses.
+           This has no effect on the external DNS helper.
+           Please note this extension is still experimental and may encounter problems.
+          To see if it is actually needed you can run squid without it for a period and
+          check the CNAME-Only Requests statistics squid maintains.
+          If it produces ongoing serious problems the external helper may be needed
+          but please report the bugs anyway.
+        </p>
+
+       <tag>--enable-auto-locale</tag>
+       <p>Enable error page localization for visitors.</p>
+
+</descrip>
+</p>
+
+<sect2>Changes to existing options<label id="modifiedoptions">
+
+<p>
+<descrip>
+       <tag>--disable-internl-dns</tag>
+       <p>Better support for Linux using the external DNS helper.
+           The helper will compile and work with dns_nameservers on more variants of Linux than previously.</p>
+
+       <tag>--enable-linux-netfilter</tag>
+       <p>This option now enables support for all three netfilter interception targets.
+        Adding TPROXY version 4+ support to squid through the TPROXY target.
+       This options requires a linux kernel 2.6.25 or later for embeded netfilter TPROXY targets.
+       Older REDIRECT and DNAT targets work as before on HTTP ports marked 'intercept'.
+       </p>
+
+</descrip>
+</p>
+
+<sect2>Not yet available options<label id="notportedoptions">
+
+<p>These configure options have not yet been ported to Squid-3. If you need something to do then
+porting one of these from Squid-2 to Squid-3 is most welcome.
+
+<descrip>
+       <tag>--enable-devpoll</tag>
+       <p>Support for Solaris /dev/poll</p>
+
+       <tag>--enable-select-simple</tag>
+       <p>Basic POSIX select() loop without any binary fd_set optimizations.</p>
+
+       <tag>--enable-follow-x-forwarded-for</tag>
+       <p>Support following the X-Forwarded-For HTTP header for determining the
+       client IP address</p>
+</descrip>
+
+<sect2>Removed options<label id="removedoptions">
+
+<p>The following configure options have been removed.
+
+<descrip>
+       <tag>--enable-linux-tproxy</tag>
+       <p>Replaced by --enable-linux-tproxy2 to make way for differences in TPROXY v2 and v4 support.</p>
+       <tag>--enable-default-err-language</tag>
+       <p>Replaced by error_default_language squid.conf option</p>
+       <tag>--enable-err-languages</tag>
+       <p>Removed.</p>
+</descrip>
+
+</article>
old mode 100644 (file)
new mode 100755 (executable)
index d137ef2..dac0e11
-\r
-\r
-\r
-\r
-\r
-\r
-Network Working Group                                     O. Gudmundsson\r
-Request for Comments: 3226                                 December 2001\r
-Updates: 2874, 2535\r
-Category: Standards Track\r
-\r
-\r
-   DNSSEC and IPv6 A6 aware server/resolver message size requirements\r
-\r
-Status of this Memo\r
-\r
-   This document specifies an Internet standards track protocol for the\r
-   Internet community, and requests discussion and suggestions for\r
-   improvements.  Please refer to the current edition of the "Internet\r
-   Official Protocol Standards" (STD 1) for the standardization state\r
-   and status of this protocol.  Distribution of this memo is unlimited.\r
-\r
-Copyright Notice\r
-\r
-   Copyright (C) The Internet Society (2001).  All Rights Reserved.\r
-\r
-Abstract\r
-\r
-   This document mandates support for EDNS0 (Extension Mechanisms for\r
-   DNS) in DNS entities claiming to support either DNS Security\r
-   Extensions or A6 records.  This requirement is necessary because\r
-   these new features increase the size of DNS messages.  If EDNS0 is\r
-   not supported fall back to TCP will happen, having a detrimental\r
-   impact on query latency and DNS server load.  This document updates\r
-   RFC 2535 and RFC 2874, by adding new requirements.\r
-\r
-1.  Introduction\r
-\r
-   Familiarity with the DNS [RFC1034, RFC1035], DNS Security Extensions\r
-   [RFC2535], EDNS0 [RFC2671] and A6 [RFC2874] is helpful.\r
-\r
-   STD 13, RFC 1035 Section 2.3.4 requires that DNS messages over UDP\r
-   have a data payload of 512 octets or less.  Most DNS software today\r
-   will not accept larger UDP datagrams.  Any answer that requires more\r
-   than 512 octets, results in a partial and sometimes useless reply\r
-   with the Truncation Bit set; in most cases the requester will then\r
-   retry using TCP.  Furthermore, server delivery of truncated responses\r
-   varies widely and resolver handling of these responses also varies,\r
-   leading to additional inefficiencies in handling truncation.\r
-\r
-   Compared to UDP, TCP is an expensive protocol to use for a simple\r
-   transaction like DNS: a TCP connection requires 5 packets for setup\r
-   and tear down, excluding data packets, thus requiring at least 3\r
-   round trips on top of the one for the original UDP query.  The DNS\r
-\r
-\r
-\r
-Gudmundsson                 Standards Track                     [Page 1]\r
-\f\r
-RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001\r
-\r
-\r
-   server also needs to keep a state of the connection during this\r
-   transaction.  Many DNS servers answer thousands of queries per\r
-   second, requiring them to use TCP will cause significant overhead and\r
-   delays.\r
-\r
-1.1.  Requirements\r
-\r
-   The key words "MUST", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY"\r
-   in this document are to be interpreted as described in RFC 2119.\r
-\r
-2.  Motivating factors\r
-\r
-2.1.  DNSSEC motivations\r
-\r
-   DNSSEC [RFC2535] secures DNS by adding a Public Key signature on each\r
-   RR set.  These signatures range in size from about 80 octets to 800\r
-   octets, most are going to be in the range of 80 to 200 octets.  The\r
-   addition of signatures on each or most RR sets in an answer\r
-   significantly increases the size of DNS answers from secure zones.\r
-\r
-   For performance reasons and to reduce load on DNS servers, it is\r
-   important that security aware servers and resolvers get all the data\r
-   in Answer and Authority section in one query without truncation.\r
-   Sending Additional Data in the same query is helpful when the server\r
-   is authoritative for the data, and this reduces round trips.\r
-\r
-   DNSSEC OK[OK] specifies how a client can, using EDNS0, indicate that\r
-   it is interested in receiving DNSSEC records.  The OK bit does not\r
-   eliminate the need for large answers for DNSSEC capable clients.\r
-\r
-2.1.1.  Message authentication or TSIG motivation\r
-\r
-   TSIG [RFC2845] allows for the light weight authentication of DNS\r
-   messages, but increases the size of the messages by at least 70\r
-   octets.  DNSSEC specifies for computationally expensive message\r
-   authentication SIG(0) using a standard public key signature.  As only\r
-   one TSIG or SIG(0) can be attached to each DNS answer the size\r
-   increase of message authentication is not significant, but may still\r
-   lead to a truncation.\r
-\r
-2.2.  IPv6 Motivations\r
-\r
-   IPv6 addresses [RFC2874] are 128 bits and can be represented in the\r
-   DNS by multiple A6 records, each consisting of a domain name and a\r
-   bit field.  The domain name refers to an address prefix that may\r
-   require additional A6 RRs to be included in the answer.  Answers\r
-   where the queried name has multiple A6 addresses may overflow a 512-\r
-   octet UDP packet size.\r
-\r
-\r
-\r
-Gudmundsson                 Standards Track                     [Page 2]\r
-\f\r
-RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001\r
-\r
-\r
-2.3.  Root server and TLD server motivations\r
-\r
-   The current number of root servers is limited to 13 as that is the\r
-   maximum number of name servers and their address records that fit in\r
-   one 512-octet answer for a SOA record.  If root servers start\r
-   advertising A6 or KEY records then the answer for the root NS records\r
-   will not fit in a single 512-octet DNS message, resulting in a large\r
-   number of TCP query connections to the root servers.  Even if all\r
-   client resolver query their local name server for information, there\r
-   are millions of these servers.  Each name server must periodically\r
-   update its information about the high level servers.\r
-\r
-   For redundancy, latency and load balancing reasons, large numbers of\r
-   DNS servers are required for some zones.  Since the root zone is used\r
-   by the entire net, it is important to have as many servers as\r
-   possible.  Large TLDs (and many high-visibility SLDs) often have\r
-   enough servers that either A6 or KEY records would cause the NS\r
-   response to overflow the 512 byte limit.  Note that these zones with\r
-   large numbers of servers are often exactly those zones that are\r
-   critical to network operation and that already sustain fairly high\r
-   loads.\r
-\r
-2.4.  UDP vs TCP for DNS messages\r
-\r
-   Given all these factors, it is essential that any implementation that\r
-   supports DNSSEC and or A6 be able to use larger DNS messages than 512\r
-   octets.\r
-\r
-   The original 512 restriction was put in place to reduce the\r
-   probability of fragmentation of DNS responses.  A fragmented UDP\r
-   message that suffers a loss of one of the fragments renders the\r
-   answer useless and the query must be retried.  A TCP connection\r
-   requires a larger number of round trips for establishment, data\r
-   transfer and tear down, but only the lost data segments are\r
-   retransmitted.\r
-\r
-   In the early days a number of IP implementations did not handle\r
-   fragmentation well, but all modern operating systems have overcome\r
-   that issue thus sending fragmented messages is fine from that\r
-   standpoint.  The open issue is the effect of losses on fragmented\r
-   messages.  If connection has high loss ratio only TCP will allow\r
-   reliable transfer of DNS data, most links have low loss ratios thus\r
-   sending fragmented UDP packet in one round trip is better than\r
-   establishing a TCP connection to transfer a few thousand octets.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson                 Standards Track                     [Page 3]\r
-\f\r
-RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001\r
-\r
-\r
-2.5.  EDNS0 and large UDP messages\r
-\r
-   EDNS0 [RFC2671] allows clients to declare the maximum size of UDP\r
-   message they are willing to handle.  Thus, if the expected answer is\r
-   between 512 octets and the maximum size that the client can accept,\r
-   the additional overhead of a TCP connection can be avoided.\r
-\r
-3.  Protocol changes:\r
-\r
-   This document updates RFC 2535 and RFC 2874, by adding new\r
-   requirements.\r
-\r
-   All RFC 2535 compliant servers and resolvers MUST support EDNS0 and\r
-   advertise message size of at least 1220 octets, but SHOULD advertise\r
-   message size of 4000.  This value might be too low to get full\r
-   answers for high level servers and successor of this document may\r
-   require a larger value.\r
-\r
-   All RFC 2874 compliant servers and resolver MUST support EDNS0 and\r
-   advertise message size of at least 1024 octets, but SHOULD advertise\r
-   message size of 2048.  The IPv6 datagrams should be 1024 octets,\r
-   unless the MTU of the path is known.  (Note that this is smaller than\r
-   the minimum IPv6 MTU to allow for some extension headers and/or\r
-   encapsulation without exceeding the minimum MTU.)\r
-\r
-   All RFC 2535 and RFC 2874 compliant entities MUST be able to handle\r
-   fragmented IPv4 and IPv6 UDP packets.\r
-\r
-   All hosts supporting both RFC 2535 and RFC 2874 MUST use the larger\r
-   required value in EDNS0 advertisements.\r
-\r
-4.  Acknowledgments\r
-\r
-   Harald Alvestrand, Rob Austein, Randy Bush, David Conrad, Andreas\r
-   Gustafsson, Jun-ichiro itojun Hagino, Bob Halley, Edward Lewis\r
-   Michael Patton and Kazu Yamamoto were instrumental in motivating and\r
-   shaping this document.\r
-\r
-5.  Security Considerations:\r
-\r
-   There are no additional security considerations other than those in\r
-   RFC 2671.\r
-\r
-6.  IANA Considerations:\r
-\r
-   None\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson                 Standards Track                     [Page 4]\r
-\f\r
-RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001\r
-\r
-\r
-7.  References\r
-\r
-   [RFC1034]  Mockapetris, P., "Domain Names - Concepts and Facilities",\r
-              STD 13, RFC 1034, November 1987.\r
-\r
-   [RFC1035]  Mockapetris, P., "Domain Names - Implementation and\r
-              Specification", STD 13, RFC 1035, November 1987.\r
-\r
-   [RFC2535]  Eastlake, D. "Domain Name System Security Extensions", RFC\r
-              2535, March 1999.\r
-\r
-   [RFC2671]  Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC\r
-              2671, August 1999.\r
-\r
-   [RFC2845]  Vixie, P., Gudmundsson, O., Eastlake, D. and B.\r
-              Wellington, "Secret Key Transaction Authentication for DNS\r
-              (TSIG)", RFC 2845, May 2000.\r
-\r
-   [RFC2874]  Crawford, M. and C. Huitema, "DNS Extensions to Support\r
-              IPv6 Address Aggregation and Renumbering", RFC 2874, July\r
-              2000.\r
-\r
-   [RFC3225]  Conrad, D., "Indicating Resolver Support of DNSSEC", RFC\r
-              3225, December 2001.\r
-\r
-8.  Author Address\r
-\r
-   Olafur Gudmundsson\r
-   3826 Legation Street, NW\r
-   Washington, DC 20015\r
-   USA\r
-\r
-   EMail: ogud@ogud.com\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson                 Standards Track                     [Page 5]\r
-\f\r
-RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001\r
-\r
-\r
-9.  Full Copyright Statement\r
-\r
-   Copyright (C) The Internet Society (2001).  All Rights Reserved.\r
-\r
-   This document and translations of it may be copied and furnished to\r
-   others, and derivative works that comment on or otherwise explain it\r
-   or assist in its implementation may be prepared, copied, published\r
-   and distributed, in whole or in part, without restriction of any\r
-   kind, provided that the above copyright notice and this paragraph are\r
-   included on all such copies and derivative works.  However, this\r
-   document itself may not be modified in any way, such as by removing\r
-   the copyright notice or references to the Internet Society or other\r
-   Internet organizations, except as needed for the purpose of\r
-   developing Internet standards in which case the procedures for\r
-   copyrights defined in the Internet Standards process must be\r
-   followed, or as required to translate it into languages other than\r
-   English.\r
-\r
-   The limited permissions granted above are perpetual and will not be\r
-   revoked by the Internet Society or its successors or assigns.\r
-\r
-   This document and the information contained herein is provided on an\r
-   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\r
-   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\r
-   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\r
-   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\r
-   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
-\r
-Acknowledgement\r
-\r
-   Funding for the RFC Editor function is currently provided by the\r
-   Internet Society.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Gudmundsson                 Standards Track                     [Page 6]\r
-\f\r
+
+
+
+
+
+
+Network Working Group                                     O. Gudmundsson
+Request for Comments: 3226                                 December 2001
+Updates: 2874, 2535
+Category: Standards Track
+
+
+   DNSSEC and IPv6 A6 aware server/resolver message size requirements
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2001).  All Rights Reserved.
+
+Abstract
+
+   This document mandates support for EDNS0 (Extension Mechanisms for
+   DNS) in DNS entities claiming to support either DNS Security
+   Extensions or A6 records.  This requirement is necessary because
+   these new features increase the size of DNS messages.  If EDNS0 is
+   not supported fall back to TCP will happen, having a detrimental
+   impact on query latency and DNS server load.  This document updates
+   RFC 2535 and RFC 2874, by adding new requirements.
+
+1.  Introduction
+
+   Familiarity with the DNS [RFC1034, RFC1035], DNS Security Extensions
+   [RFC2535], EDNS0 [RFC2671] and A6 [RFC2874] is helpful.
+
+   STD 13, RFC 1035 Section 2.3.4 requires that DNS messages over UDP
+   have a data payload of 512 octets or less.  Most DNS software today
+   will not accept larger UDP datagrams.  Any answer that requires more
+   than 512 octets, results in a partial and sometimes useless reply
+   with the Truncation Bit set; in most cases the requester will then
+   retry using TCP.  Furthermore, server delivery of truncated responses
+   varies widely and resolver handling of these responses also varies,
+   leading to additional inefficiencies in handling truncation.
+
+   Compared to UDP, TCP is an expensive protocol to use for a simple
+   transaction like DNS: a TCP connection requires 5 packets for setup
+   and tear down, excluding data packets, thus requiring at least 3
+   round trips on top of the one for the original UDP query.  The DNS
+
+
+
+Gudmundsson                 Standards Track                     [Page 1]
+\f
+RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001
+
+
+   server also needs to keep a state of the connection during this
+   transaction.  Many DNS servers answer thousands of queries per
+   second, requiring them to use TCP will cause significant overhead and
+   delays.
+
+1.1.  Requirements
+
+   The key words "MUST", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY"
+   in this document are to be interpreted as described in RFC 2119.
+
+2.  Motivating factors
+
+2.1.  DNSSEC motivations
+
+   DNSSEC [RFC2535] secures DNS by adding a Public Key signature on each
+   RR set.  These signatures range in size from about 80 octets to 800
+   octets, most are going to be in the range of 80 to 200 octets.  The
+   addition of signatures on each or most RR sets in an answer
+   significantly increases the size of DNS answers from secure zones.
+
+   For performance reasons and to reduce load on DNS servers, it is
+   important that security aware servers and resolvers get all the data
+   in Answer and Authority section in one query without truncation.
+   Sending Additional Data in the same query is helpful when the server
+   is authoritative for the data, and this reduces round trips.
+
+   DNSSEC OK[OK] specifies how a client can, using EDNS0, indicate that
+   it is interested in receiving DNSSEC records.  The OK bit does not
+   eliminate the need for large answers for DNSSEC capable clients.
+
+2.1.1.  Message authentication or TSIG motivation
+
+   TSIG [RFC2845] allows for the light weight authentication of DNS
+   messages, but increases the size of the messages by at least 70
+   octets.  DNSSEC specifies for computationally expensive message
+   authentication SIG(0) using a standard public key signature.  As only
+   one TSIG or SIG(0) can be attached to each DNS answer the size
+   increase of message authentication is not significant, but may still
+   lead to a truncation.
+
+2.2.  IPv6 Motivations
+
+   IPv6 addresses [RFC2874] are 128 bits and can be represented in the
+   DNS by multiple A6 records, each consisting of a domain name and a
+   bit field.  The domain name refers to an address prefix that may
+   require additional A6 RRs to be included in the answer.  Answers
+   where the queried name has multiple A6 addresses may overflow a 512-
+   octet UDP packet size.
+
+
+
+Gudmundsson                 Standards Track                     [Page 2]
+\f
+RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001
+
+
+2.3.  Root server and TLD server motivations
+
+   The current number of root servers is limited to 13 as that is the
+   maximum number of name servers and their address records that fit in
+   one 512-octet answer for a SOA record.  If root servers start
+   advertising A6 or KEY records then the answer for the root NS records
+   will not fit in a single 512-octet DNS message, resulting in a large
+   number of TCP query connections to the root servers.  Even if all
+   client resolver query their local name server for information, there
+   are millions of these servers.  Each name server must periodically
+   update its information about the high level servers.
+
+   For redundancy, latency and load balancing reasons, large numbers of
+   DNS servers are required for some zones.  Since the root zone is used
+   by the entire net, it is important to have as many servers as
+   possible.  Large TLDs (and many high-visibility SLDs) often have
+   enough servers that either A6 or KEY records would cause the NS
+   response to overflow the 512 byte limit.  Note that these zones with
+   large numbers of servers are often exactly those zones that are
+   critical to network operation and that already sustain fairly high
+   loads.
+
+2.4.  UDP vs TCP for DNS messages
+
+   Given all these factors, it is essential that any implementation that
+   supports DNSSEC and or A6 be able to use larger DNS messages than 512
+   octets.
+
+   The original 512 restriction was put in place to reduce the
+   probability of fragmentation of DNS responses.  A fragmented UDP
+   message that suffers a loss of one of the fragments renders the
+   answer useless and the query must be retried.  A TCP connection
+   requires a larger number of round trips for establishment, data
+   transfer and tear down, but only the lost data segments are
+   retransmitted.
+
+   In the early days a number of IP implementations did not handle
+   fragmentation well, but all modern operating systems have overcome
+   that issue thus sending fragmented messages is fine from that
+   standpoint.  The open issue is the effect of losses on fragmented
+   messages.  If connection has high loss ratio only TCP will allow
+   reliable transfer of DNS data, most links have low loss ratios thus
+   sending fragmented UDP packet in one round trip is better than
+   establishing a TCP connection to transfer a few thousand octets.
+
+
+
+
+
+
+
+Gudmundsson                 Standards Track                     [Page 3]
+\f
+RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001
+
+
+2.5.  EDNS0 and large UDP messages
+
+   EDNS0 [RFC2671] allows clients to declare the maximum size of UDP
+   message they are willing to handle.  Thus, if the expected answer is
+   between 512 octets and the maximum size that the client can accept,
+   the additional overhead of a TCP connection can be avoided.
+
+3.  Protocol changes:
+
+   This document updates RFC 2535 and RFC 2874, by adding new
+   requirements.
+
+   All RFC 2535 compliant servers and resolvers MUST support EDNS0 and
+   advertise message size of at least 1220 octets, but SHOULD advertise
+   message size of 4000.  This value might be too low to get full
+   answers for high level servers and successor of this document may
+   require a larger value.
+
+   All RFC 2874 compliant servers and resolver MUST support EDNS0 and
+   advertise message size of at least 1024 octets, but SHOULD advertise
+   message size of 2048.  The IPv6 datagrams should be 1024 octets,
+   unless the MTU of the path is known.  (Note that this is smaller than
+   the minimum IPv6 MTU to allow for some extension headers and/or
+   encapsulation without exceeding the minimum MTU.)
+
+   All RFC 2535 and RFC 2874 compliant entities MUST be able to handle
+   fragmented IPv4 and IPv6 UDP packets.
+
+   All hosts supporting both RFC 2535 and RFC 2874 MUST use the larger
+   required value in EDNS0 advertisements.
+
+4.  Acknowledgments
+
+   Harald Alvestrand, Rob Austein, Randy Bush, David Conrad, Andreas
+   Gustafsson, Jun-ichiro itojun Hagino, Bob Halley, Edward Lewis
+   Michael Patton and Kazu Yamamoto were instrumental in motivating and
+   shaping this document.
+
+5.  Security Considerations:
+
+   There are no additional security considerations other than those in
+   RFC 2671.
+
+6.  IANA Considerations:
+
+   None
+
+
+
+
+
+Gudmundsson                 Standards Track                     [Page 4]
+\f
+RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001
+
+
+7.  References
+
+   [RFC1034]  Mockapetris, P., "Domain Names - Concepts and Facilities",
+              STD 13, RFC 1034, November 1987.
+
+   [RFC1035]  Mockapetris, P., "Domain Names - Implementation and
+              Specification", STD 13, RFC 1035, November 1987.
+
+   [RFC2535]  Eastlake, D. "Domain Name System Security Extensions", RFC
+              2535, March 1999.
+
+   [RFC2671]  Vixie, P., "Extension Mechanisms for DNS (EDNS0)", RFC
+              2671, August 1999.
+
+   [RFC2845]  Vixie, P., Gudmundsson, O., Eastlake, D. and B.
+              Wellington, "Secret Key Transaction Authentication for DNS
+              (TSIG)", RFC 2845, May 2000.
+
+   [RFC2874]  Crawford, M. and C. Huitema, "DNS Extensions to Support
+              IPv6 Address Aggregation and Renumbering", RFC 2874, July
+              2000.
+
+   [RFC3225]  Conrad, D., "Indicating Resolver Support of DNSSEC", RFC
+              3225, December 2001.
+
+8.  Author Address
+
+   Olafur Gudmundsson
+   3826 Legation Street, NW
+   Washington, DC 20015
+   USA
+
+   EMail: ogud@ogud.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Gudmundsson                 Standards Track                     [Page 5]
+\f
+RFC 3226            DNSSEC and IPv6 A6 requirements        December 2001
+
+
+9.  Full Copyright Statement
+
+   Copyright (C) The Internet Society (2001).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Gudmundsson                 Standards Track                     [Page 6]
+\f
old mode 100644 (file)
new mode 100755 (executable)
index 7793621..b5ca6a8
-\r
-\r
-\r
-\r
-\r
-Network Working Group                                          R. Hinden\r
-Request for Comments: 3513                                         Nokia\r
-Obsoletes: 2373                                               S. Deering\r
-Category: Standards Track                                  Cisco Systems\r
-                                                              April 2003\r
-\r
-\r
-       Internet Protocol Version 6 (IPv6) Addressing Architecture\r
-\r
-Status of this Memo\r
-\r
-   This document specifies an Internet standards track protocol for the\r
-   Internet community, and requests discussion and suggestions for\r
-   improvements.  Please refer to the current edition of the "Internet\r
-   Official Protocol Standards" (STD 1) for the standardization state\r
-   and status of this protocol.  Distribution of this memo is unlimited.\r
-\r
-Copyright Notice\r
-\r
-   Copyright (C) The Internet Society (2003).  All Rights Reserved.\r
-\r
-Abstract\r
-\r
-   This specification defines the addressing architecture of the IP\r
-   Version 6 (IPv6) protocol.  The document includes the IPv6 addressing\r
-   model, text representations of IPv6 addresses, definition of IPv6\r
-   unicast addresses, anycast addresses, and multicast addresses, and an\r
-   IPv6 node's required addresses.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 1]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-Table of Contents\r
-\r
-   1. Introduction.................................................3\r
-   2. IPv6 Addressing..............................................3\r
-      2.1 Addressing Model.........................................4\r
-      2.2 Text Representation of Addresses.........................4\r
-      2.3 Text Representation of Address Prefixes..................5\r
-      2.4 Address Type Identification..............................6\r
-      2.5 Unicast Addresses........................................7\r
-          2.5.1 Interface Identifiers..............................8\r
-          2.5.2 The Unspecified Address............................9\r
-          2.5.3 The Loopback Address...............................9\r
-          2.5.4 Global Unicast Addresses..........................10\r
-          2.5.5 IPv6 Addresses with Embedded IPv4 Addresses.......10\r
-          2.5.6 Local-use IPv6 Unicast Addresses..................11\r
-      2.6 Anycast Addresses.......................................12\r
-          2.6.1 Required Anycast Address..........................13\r
-      2.7 Multicast Addresses.....................................13\r
-          2.7.1 Pre-Defined Multicast Addresses...................15\r
-      2.8 A Node's Required Addresses.............................17\r
-   3. Security Considerations.....................................17\r
-   4. IANA Considerations.........................................18\r
-   5. References..................................................19\r
-      5.1 Normative References....................................19\r
-      5.2 Informative References..................................19\r
-   APPENDIX A: Creating Modified EUI-64 format Interface IDs......21\r
-   APPENDIX B: Changes from RFC-2373..............................24\r
-   Authors' Addresses.............................................25\r
-   Full Copyright Statement.......................................26\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 2]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-1.  Introduction\r
-\r
-   This specification defines the addressing architecture of the IP\r
-   Version 6 (IPv6) protocol.  It includes the basic formats for the\r
-   various types of IPv6 addresses (unicast, anycast, and multicast).\r
-\r
-   The authors would like to acknowledge the contributions of Paul\r
-   Francis, Scott Bradner, Jim Bound, Brian Carpenter, Matt Crawford,\r
-   Deborah Estrin, Roger Fajman, Bob Fink, Peter Ford, Bob Gilligan,\r
-   Dimitry Haskin, Tom Harsch, Christian Huitema, Tony Li, Greg\r
-   Minshall, Thomas Narten, Erik Nordmark, Yakov Rekhter, Bill Simpson,\r
-   Sue Thomson, Markku Savela, and Larry Masinter.\r
-\r
-2. IPv6 Addressing\r
-\r
-   IPv6 addresses are 128-bit identifiers for interfaces and sets of\r
-   interfaces (where "interface" is as defined in section 2 of [IPV6]).\r
-   There are three types of addresses:\r
-\r
-   Unicast:   An identifier for a single interface.  A packet sent to a\r
-              unicast address is delivered to the interface identified\r
-              by that address.\r
-\r
-   Anycast:   An identifier for a set of interfaces (typically belonging\r
-              to different nodes).  A packet sent to an anycast address\r
-              is delivered to one of the interfaces identified by that\r
-              address (the "nearest" one, according to the routing\r
-              protocols' measure of distance).\r
-\r
-   Multicast: An identifier for a set of interfaces (typically belonging\r
-              to different nodes).  A packet sent to a multicast address\r
-              is delivered to all interfaces identified by that address.\r
-\r
-   There are no broadcast addresses in IPv6, their function being\r
-   superseded by multicast addresses.\r
-\r
-   In this document, fields in addresses are given a specific name, for\r
-   example "subnet".  When this name is used with the term "ID" for\r
-   identifier after the name (e.g., "subnet ID"), it refers to the\r
-   contents of the named field.  When it is used with the term "prefix"\r
-   (e.g., "subnet prefix") it refers to all of the address from the left\r
-   up to and including this field.\r
-\r
-   In IPv6, all zeros and all ones are legal values for any field,\r
-   unless specifically excluded.  Specifically, prefixes may contain, or\r
-   end with, zero-valued fields.\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 3]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-2.1 Addressing Model\r
-\r
-   IPv6 addresses of all types are assigned to interfaces, not nodes.\r
-   An IPv6 unicast address refers to a single interface.  Since each\r
-   interface belongs to a single node, any of that node's interfaces'\r
-   unicast addresses may be used as an identifier for the node.\r
-\r
-   All interfaces are required to have at least one link-local unicast\r
-   address (see section 2.8 for additional required addresses).  A\r
-   single interface may also have multiple IPv6 addresses of any type\r
-   (unicast, anycast, and multicast) or scope.  Unicast addresses with\r
-   scope greater than link-scope are not needed for interfaces that are\r
-   not used as the origin or destination of any IPv6 packets to or from\r
-   non-neighbors.  This is sometimes convenient for point-to-point\r
-   interfaces.  There is one exception to this addressing model:\r
-\r
-      A unicast address or a set of unicast addresses may be assigned to\r
-      multiple physical interfaces if the implementation treats the\r
-      multiple physical interfaces as one interface when presenting it\r
-      to the internet layer.  This is useful for load-sharing over\r
-      multiple physical interfaces.\r
-\r
-   Currently IPv6 continues the IPv4 model that a subnet prefix is\r
-   associated with one link.  Multiple subnet prefixes may be assigned\r
-   to the same link.\r
-\r
-2.2 Text Representation of Addresses\r
-\r
-   There are three conventional forms for representing IPv6 addresses as\r
-   text strings:\r
-\r
-   1. The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the\r
-      hexadecimal values of the eight 16-bit pieces of the address.\r
-\r
-      Examples:\r
-\r
-         FEDC:BA98:7654:3210:FEDC:BA98:7654:3210\r
-\r
-         1080:0:0:0:8:800:200C:417A\r
-\r
-      Note that it is not necessary to write the leading zeros in an\r
-      individual field, but there must be at least one numeral in every\r
-      field (except for the case described in 2.).\r
-\r
-   2. Due to some methods of allocating certain styles of IPv6\r
-      addresses, it will be common for addresses to contain long strings\r
-      of zero bits.  In order to make writing addresses containing zero\r
-      bits easier a special syntax is available to compress the zeros.\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 4]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-      The use of "::" indicates one or more groups of 16 bits of zeros.\r
-      The "::" can only appear once in an address.  The "::" can also be\r
-      used to compress leading or trailing zeros in an address.\r
-\r
-      For example, the following addresses:\r
-\r
-         1080:0:0:0:8:800:200C:417A  a unicast address\r
-         FF01:0:0:0:0:0:0:101        a multicast address\r
-         0:0:0:0:0:0:0:1             the loopback address\r
-         0:0:0:0:0:0:0:0             the unspecified addresses\r
-\r
-      may be represented as:\r
-\r
-         1080::8:800:200C:417A       a unicast address\r
-         FF01::101                   a multicast address\r
-         ::1                         the loopback address\r
-         ::                          the unspecified addresses\r
-\r
-   3. An alternative form that is sometimes more convenient when dealing\r
-      with a mixed environment of IPv4 and IPv6 nodes is\r
-      x:x:x:x:x:x:d.d.d.d, where the 'x's are the hexadecimal values of\r
-      the six high-order 16-bit pieces of the address, and the 'd's are\r
-      the decimal values of the four low-order 8-bit pieces of the\r
-      address (standard IPv4 representation).  Examples:\r
-\r
-         0:0:0:0:0:0:13.1.68.3\r
-\r
-         0:0:0:0:0:FFFF:129.144.52.38\r
-\r
-      or in compressed form:\r
-\r
-         ::13.1.68.3\r
-\r
-         ::FFFF:129.144.52.38\r
-\r
-2.3 Text Representation of Address Prefixes\r
-\r
-   The text representation of IPv6 address prefixes is similar to the\r
-   way IPv4 addresses prefixes are written in CIDR notation [CIDR].  An\r
-   IPv6 address prefix is represented by the notation:\r
-\r
-      ipv6-address/prefix-length\r
-\r
-   where\r
-\r
-      ipv6-address    is an IPv6 address in any of the notations listed\r
-                      in section 2.2.\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 5]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-      prefix-length   is a decimal value specifying how many of the\r
-                      leftmost contiguous bits of the address comprise\r
-                      the prefix.\r
-\r
-   For example, the following are legal representations of the 60-bit\r
-   prefix 12AB00000000CD3 (hexadecimal):\r
-\r
-      12AB:0000:0000:CD30:0000:0000:0000:0000/60\r
-      12AB::CD30:0:0:0:0/60\r
-      12AB:0:0:CD30::/60\r
-\r
-   The following are NOT legal representations of the above prefix:\r
-\r
-      12AB:0:0:CD3/60   may drop leading zeros, but not trailing zeros,\r
-                        within any 16-bit chunk of the address\r
-\r
-      12AB::CD30/60     address to left of "/" expands to\r
-                        12AB:0000:0000:0000:0000:000:0000:CD30\r
-\r
-      12AB::CD3/60      address to left of "/" expands to\r
-                        12AB:0000:0000:0000:0000:000:0000:0CD3\r
-\r
-   When writing both a node address and a prefix of that node address\r
-   (e.g., the node's subnet prefix), the two can combined as follows:\r
-\r
-      the node address      12AB:0:0:CD30:123:4567:89AB:CDEF\r
-      and its subnet number 12AB:0:0:CD30::/60\r
-\r
-      can be abbreviated as 12AB:0:0:CD30:123:4567:89AB:CDEF/60\r
-\r
-2.4 Address Type Identification\r
-\r
-   The type of an IPv6 address is identified by the high-order bits of\r
-   the address, as follows:\r
-\r
-   Address type         Binary prefix        IPv6 notation   Section\r
-   ------------         -------------        -------------   -------\r
-   Unspecified          00...0  (128 bits)   ::/128          2.5.2\r
-   Loopback             00...1  (128 bits)   ::1/128         2.5.3\r
-   Multicast            11111111             FF00::/8        2.7\r
-   Link-local unicast   1111111010           FE80::/10       2.5.6\r
-   Site-local unicast   1111111011           FEC0::/10       2.5.6\r
-   Global unicast       (everything else)\r
-\r
-   Anycast addresses are taken from the unicast address spaces (of any\r
-   scope) and are not syntactically distinguishable from unicast\r
-   addresses.\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 6]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   The general format of global unicast addresses is described in\r
-   section 2.5.4.  Some special-purpose subtypes of global unicast\r
-   addresses which contain embedded IPv4 addresses (for the purposes of\r
-   IPv4-IPv6 interoperation) are described in section 2.5.5.\r
-\r
-   Future specifications may redefine one or more sub-ranges of the\r
-   global unicast space for other purposes, but unless and until that\r
-   happens, implementations must treat all addresses that do not start\r
-   with any of the above-listed prefixes as global unicast addresses.\r
-\r
-2.5 Unicast Addresses\r
-\r
-   IPv6 unicast addresses are aggregable with prefixes of arbitrary\r
-   bit-length similar to IPv4 addresses under Classless Interdomain\r
-   Routing.\r
-\r
-   There are several types of unicast addresses in IPv6, in particular\r
-   global unicast, site-local unicast, and link-local unicast.  There\r
-   are also some special-purpose subtypes of global unicast, such as\r
-   IPv6 addresses with embedded IPv4 addresses or encoded NSAP\r
-   addresses.  Additional address types or subtypes can be defined in\r
-   the future.\r
-\r
-   IPv6 nodes may have considerable or little knowledge of the internal\r
-   structure of the IPv6 address, depending on the role the node plays\r
-   (for instance, host versus router).  At a minimum, a node may\r
-   consider that unicast addresses (including its own) have no internal\r
-   structure:\r
-\r
-   |                           128 bits                              |\r
-   +-----------------------------------------------------------------+\r
-   |                          node address                           |\r
-   +-----------------------------------------------------------------+\r
-\r
-   A slightly sophisticated host (but still rather simple) may\r
-   additionally be aware of subnet prefix(es) for the link(s) it is\r
-   attached to, where different addresses may have different values for\r
-   n:\r
-\r
-   |                         n bits                 |   128-n bits   |\r
-   +------------------------------------------------+----------------+\r
-   |                   subnet prefix                | interface ID   |\r
-   +------------------------------------------------+----------------+\r
-\r
-   Though a very simple router may have no knowledge of the internal\r
-   structure of IPv6 unicast addresses, routers will more generally have\r
-   knowledge of one or more of the hierarchical boundaries for the\r
-   operation of routing protocols.  The known boundaries will differ\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 7]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   from router to router, depending on what positions the router holds\r
-   in the routing hierarchy.\r
-\r
-2.5.1 Interface Identifiers\r
-\r
-   Interface identifiers in IPv6 unicast addresses are used to identify\r
-   interfaces on a link.  They are required to be unique within a subnet\r
-   prefix.  It is recommended that the same interface identifier not be\r
-   assigned to different nodes on a link.  They may also be unique over\r
-   a broader scope.  In some cases an interface's identifier will be\r
-   derived directly from that interface's link-layer address.  The same\r
-   interface identifier may be used on multiple interfaces on a single\r
-   node, as long as they are attached to different subnets.\r
-\r
-   Note that the uniqueness of interface identifiers is independent of\r
-   the uniqueness of IPv6 addresses.  For example, a global unicast\r
-   address may be created with a non-global scope interface identifier\r
-   and a site-local address may be created with a global scope interface\r
-   identifier.\r
-\r
-   For all unicast addresses, except those that start with binary value\r
-   000, Interface IDs are required to be 64 bits long and to be\r
-   constructed in Modified EUI-64 format.\r
-\r
-   Modified EUI-64 format based Interface identifiers may have global\r
-   scope when derived from a global token (e.g., IEEE 802 48-bit MAC or\r
-   IEEE EUI-64 identifiers [EUI64]) or may have local scope where a\r
-   global token is not available (e.g., serial links, tunnel end-points,\r
-   etc.) or where global tokens are undesirable (e.g., temporary tokens\r
-   for privacy [PRIV]).\r
-\r
-   Modified EUI-64 format interface identifiers are formed by inverting\r
-   the "u" bit (universal/local bit in IEEE EUI-64 terminology) when\r
-   forming the interface identifier from IEEE EUI-64 identifiers.  In\r
-   the resulting Modified EUI-64 format the "u" bit is set to one (1) to\r
-   indicate global scope, and it is set to zero (0) to indicate local\r
-   scope.  The first three octets in binary of an IEEE EUI-64 identifier\r
-   are as follows:\r
-\r
-       0       0 0       1 1       2\r
-      |0       7 8       5 6       3|\r
-      +----+----+----+----+----+----+\r
-      |cccc|ccug|cccc|cccc|cccc|cccc|\r
-      +----+----+----+----+----+----+\r
-\r
-   written in Internet standard bit-order , where "u" is the\r
-   universal/local bit, "g" is the individual/group bit, and "c" are the\r
-   bits of the company_id.  Appendix A: "Creating Modified EUI-64 format\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 8]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   Interface Identifiers" provides examples on the creation of Modified\r
-   EUI-64 format based interface identifiers.\r
-\r
-   The motivation for inverting the "u" bit when forming an interface\r
-   identifier is to make it easy for system administrators to hand\r
-   configure non-global identifiers when hardware tokens are not\r
-   available.  This is expected to be case for serial links, tunnel end-\r
-   points, etc.  The alternative would have been for these to be of the\r
-   form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler 1, 2,\r
-   etc.\r
-\r
-   The use of the universal/local bit in the Modified EUI-64 format\r
-   identifier is to allow development of future technology that can take\r
-   advantage of interface identifiers with global scope.\r
-\r
-   The details of forming interface identifiers are defined in the\r
-   appropriate "IPv6 over <link>" specification such as "IPv6 over\r
-   Ethernet" [ETHER], "IPv6 over FDDI" [FDDI], etc.\r
-\r
-2.5.2 The Unspecified Address\r
-\r
-   The address 0:0:0:0:0:0:0:0 is called the unspecified address.  It\r
-   must never be assigned to any node.  It indicates the absence of an\r
-   address.  One example of its use is in the Source Address field of\r
-   any IPv6 packets sent by an initializing host before it has learned\r
-   its own address.\r
-\r
-   The unspecified address must not be used as the destination address\r
-   of IPv6 packets or in IPv6 Routing Headers.  An IPv6 packet with a\r
-   source address of unspecified must never be forwarded by an IPv6\r
-   router.\r
-\r
-2.5.3 The Loopback Address\r
-\r
-   The unicast address 0:0:0:0:0:0:0:1 is called the loopback address.\r
-   It may be used by a node to send an IPv6 packet to itself.  It may\r
-   never be assigned to any physical interface.   It is treated as\r
-   having link-local scope, and may be thought of as the link-local\r
-   unicast address of a virtual interface (typically called "the\r
-   loopback interface") to an imaginary link that goes nowhere.\r
-\r
-   The loopback address must not be used as the source address in IPv6\r
-   packets that are sent outside of a single node.  An IPv6 packet with\r
-   a destination address of loopback must never be sent outside of a\r
-   single node and must never be forwarded by an IPv6 router.  A packet\r
-   received on an interface with destination address of loopback must be\r
-   dropped.\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                     [Page 9]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-2.5.4 Global Unicast Addresses\r
-\r
-   The general format for IPv6 global unicast addresses is as follows:\r
-\r
-   |         n bits         |   m bits  |       128-n-m bits         |\r
-   +------------------------+-----------+----------------------------+\r
-   | global routing prefix  | subnet ID |       interface ID         |\r
-   +------------------------+-----------+----------------------------+\r
-\r
-   where the global routing prefix is a (typically hierarchically-\r
-   structured) value assigned to a site (a cluster of subnets/links),\r
-   the subnet ID is an identifier of a link within the site, and the\r
-   interface ID is as defined in section 2.5.1.\r
-\r
-   All global unicast addresses other than those that start with binary\r
-   000 have a 64-bit interface ID field (i.e., n + m = 64), formatted as\r
-   described in section 2.5.1.  Global unicast addresses that start with\r
-   binary 000 have no such constraint on the size or structure of the\r
-   interface ID field.\r
-\r
-   Examples of global unicast addresses that start with binary 000 are\r
-   the IPv6 address with embedded IPv4 addresses described in section\r
-   2.5.5 and the IPv6 address containing encoded NSAP addresses\r
-   specified in [NSAP].  An example of global addresses starting with a\r
-   binary value other than 000 (and therefore having a 64-bit interface\r
-   ID field) can be found in [AGGR].\r
-\r
-2.5.5 IPv6 Addresses with Embedded IPv4 Addresses\r
-\r
-   The IPv6 transition mechanisms [TRAN] include a technique for hosts\r
-   and routers to dynamically tunnel IPv6 packets over IPv4 routing\r
-   infrastructure.  IPv6 nodes that use this technique are assigned\r
-   special IPv6 unicast addresses that carry a global IPv4 address in\r
-   the low-order 32 bits.  This type of address is termed an "IPv4-\r
-   compatible IPv6 address" and has the format:\r
-\r
-   |                80 bits               | 16 |      32 bits        |\r
-   +--------------------------------------+--------------------------+\r
-   |0000..............................0000|0000|    IPv4 address     |\r
-   +--------------------------------------+----+---------------------+\r
-\r
-   Note: The IPv4 address used in the "IPv4-compatible IPv6 address"\r
-   must be a globally-unique IPv4 unicast address.\r
-\r
-   A second type of IPv6 address which holds an embedded IPv4 address is\r
-   also defined.  This address type is used to represent the addresses\r
-   of IPv4 nodes as IPv6 addresses.  This type of address is termed an\r
-   "IPv4-mapped IPv6 address" and has the format:\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 10]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   |                80 bits               | 16 |      32 bits        |\r
-   +--------------------------------------+--------------------------+\r
-   |0000..............................0000|FFFF|    IPv4 address     |\r
-   +--------------------------------------+----+---------------------+\r
-\r
-2.5.6 Local-Use IPv6 Unicast Addresses\r
-\r
-   There are two types of local-use unicast addresses defined.  These\r
-   are Link-Local and Site-Local.  The Link-Local is for use on a single\r
-   link and the Site-Local is for use in a single site.  Link-Local\r
-   addresses have the following format:\r
-\r
-   |   10     |\r
-   |  bits    |         54 bits         |          64 bits           |\r
-   +----------+-------------------------+----------------------------+\r
-   |1111111010|           0             |       interface ID         |\r
-   +----------+-------------------------+----------------------------+\r
-\r
-   Link-Local addresses are designed to be used for addressing on a\r
-   single link for purposes such as automatic address configuration,\r
-   neighbor discovery, or when no routers are present.\r
-\r
-   Routers must not forward any packets with link-local source or\r
-   destination addresses to other links.\r
-\r
-   Site-Local addresses have the following format:\r
-\r
-   |   10     |\r
-   |  bits    |         54 bits         |         64 bits            |\r
-   +----------+-------------------------+----------------------------+\r
-   |1111111011|        subnet ID        |       interface ID         |\r
-   +----------+-------------------------+----------------------------+\r
-\r
-   Site-local addresses are designed to be used for addressing inside of\r
-   a site without the need for a global prefix.  Although a subnet ID\r
-   may be up to 54-bits long, it is expected that globally-connected\r
-   sites will use the same subnet IDs for site-local and global\r
-   prefixes.\r
-\r
-   Routers must not forward any packets with site-local source or\r
-   destination addresses outside of the site.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 11]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-2.6 Anycast Addresses\r
-\r
-   An IPv6 anycast address is an address that is assigned to more than\r
-   one interface (typically belonging to different nodes), with the\r
-   property that a packet sent to an anycast address is routed to the\r
-   "nearest" interface having that address, according to the routing\r
-   protocols' measure of distance.\r
-\r
-   Anycast addresses are allocated from the unicast address space, using\r
-   any of the defined unicast address formats.  Thus, anycast addresses\r
-   are syntactically indistinguishable from unicast addresses.  When a\r
-   unicast address is assigned to more than one interface, thus turning\r
-   it into an anycast address, the nodes to which the address is\r
-   assigned must be explicitly configured to know that it is an anycast\r
-   address.\r
-\r
-   For any assigned anycast address, there is a longest prefix P of that\r
-   address that identifies the topological region in which all\r
-   interfaces belonging to that anycast address reside.  Within the\r
-   region identified by P, the anycast address must be maintained as a\r
-   separate entry in the routing system (commonly referred to as a "host\r
-   route"); outside the region identified by P, the anycast address may\r
-   be aggregated into the routing entry for prefix P.\r
-\r
-   Note that in the worst case, the prefix P of an anycast set may be\r
-   the null prefix, i.e., the members of the set may have no topological\r
-   locality.  In that case, the anycast address must be maintained as a\r
-   separate routing entry throughout the entire internet, which presents\r
-   a severe scaling limit on how many such "global" anycast sets may be\r
-   supported.  Therefore, it is expected that support for global anycast\r
-   sets may be unavailable or very restricted.\r
-\r
-   One expected use of anycast addresses is to identify the set of\r
-   routers belonging to an organization providing internet service.\r
-   Such addresses could be used as intermediate addresses in an IPv6\r
-   Routing header, to cause a packet to be delivered via a particular\r
-   service provider or sequence of service providers.\r
-\r
-   Some other possible uses are to identify the set of routers attached\r
-   to a particular subnet, or the set of routers providing entry into a\r
-   particular routing domain.\r
-\r
-   There is little experience with widespread, arbitrary use of internet\r
-   anycast addresses, and some known complications and hazards when\r
-   using them in their full generality [ANYCST].  Until more experience\r
-   has been gained and solutions are specified, the following\r
-   restrictions are imposed on IPv6 anycast addresses:\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 12]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   o  An anycast address must not be used as the source address of an\r
-      IPv6 packet.\r
-\r
-   o  An anycast address must not be assigned to an IPv6 host, that is,\r
-      it may be assigned to an IPv6 router only.\r
-\r
-2.6.1 Required Anycast Address\r
-\r
-   The Subnet-Router anycast address is predefined.  Its format is as\r
-   follows:\r
-\r
-   |                         n bits                 |   128-n bits   |\r
-   +------------------------------------------------+----------------+\r
-   |                   subnet prefix                | 00000000000000 |\r
-   +------------------------------------------------+----------------+\r
-\r
-   The "subnet prefix" in an anycast address is the prefix which\r
-   identifies a specific link.  This anycast address is syntactically\r
-   the same as a unicast address for an interface on the link with the\r
-   interface identifier set to zero.\r
-\r
-   Packets sent to the Subnet-Router anycast address will be delivered\r
-   to one router on the subnet.  All routers are required to support the\r
-   Subnet-Router anycast addresses for the subnets to which they have\r
-   interfaces.\r
-\r
-   The subnet-router anycast address is intended to be used for\r
-   applications where a node needs to communicate with any one of the\r
-   set of routers.\r
-\r
-2.7 Multicast Addresses\r
-\r
-   An IPv6 multicast address is an identifier for a group of interfaces\r
-   (typically on different nodes).  An interface may belong to any\r
-   number of multicast groups.  Multicast addresses have the following\r
-   format:\r
-\r
-   |   8    |  4 |  4 |                  112 bits                   |\r
-   +------ -+----+----+---------------------------------------------+\r
-   |11111111|flgs|scop|                  group ID                   |\r
-   +--------+----+----+---------------------------------------------+\r
-\r
-         binary 11111111 at the start of the address identifies the\r
-         address as being a multicast address.\r
-\r
-                                       +-+-+-+-+\r
-         flgs is a set of 4 flags:     |0|0|0|T|\r
-                                       +-+-+-+-+\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 13]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-            The high-order 3 flags are reserved, and must be initialized\r
-            to 0.\r
-\r
-            T = 0 indicates a permanently-assigned ("well-known")\r
-            multicast address, assigned by the Internet Assigned Number\r
-            Authority (IANA).\r
-\r
-            T = 1 indicates a non-permanently-assigned ("transient")\r
-            multicast address.\r
-\r
-         scop is a 4-bit multicast scope value used to limit the scope\r
-         of the multicast group.  The values are:\r
-\r
-            0  reserved\r
-            1  interface-local scope\r
-            2  link-local scope\r
-            3  reserved\r
-            4  admin-local scope\r
-            5  site-local scope\r
-            6  (unassigned)\r
-            7  (unassigned)\r
-            8  organization-local scope\r
-            9  (unassigned)\r
-            A  (unassigned)\r
-            B  (unassigned)\r
-            C  (unassigned)\r
-            D  (unassigned)\r
-            E  global scope\r
-            F  reserved\r
-\r
-            interface-local scope spans only a single interface on a\r
-            node, and is useful only for loopback transmission of\r
-            multicast.\r
-\r
-            link-local and site-local multicast scopes span the same\r
-            topological regions as the corresponding unicast scopes.\r
-\r
-            admin-local scope is the smallest scope that must be\r
-            administratively configured, i.e., not automatically derived\r
-            from physical connectivity or other, non- multicast-related\r
-            configuration.\r
-\r
-            organization-local scope is intended to span multiple sites\r
-            belonging to a single organization.\r
-\r
-            scopes labeled "(unassigned)" are available for\r
-            administrators to define additional multicast regions.\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 14]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-         group ID identifies the multicast group, either permanent or\r
-         transient, within the given scope.\r
-\r
-   The "meaning" of a permanently-assigned multicast address is\r
-   independent of the scope value.  For example, if the "NTP servers\r
-   group" is assigned a permanent multicast address with a group ID of\r
-   101 (hex), then:\r
-\r
-      FF01:0:0:0:0:0:0:101 means all NTP servers on the same interface\r
-      (i.e., the same node) as the sender.\r
-\r
-      FF02:0:0:0:0:0:0:101 means all NTP servers on the same link as the\r
-      sender.\r
-\r
-      FF05:0:0:0:0:0:0:101 means all NTP servers in the same site as the\r
-      sender.\r
-\r
-      FF0E:0:0:0:0:0:0:101 means all NTP servers in the internet.\r
-\r
-   Non-permanently-assigned multicast addresses are meaningful only\r
-   within a given scope.  For example, a group identified by the non-\r
-   permanent, site-local multicast address FF15:0:0:0:0:0:0:101 at one\r
-   site bears no relationship to a group using the same address at a\r
-   different site, nor to a non-permanent group using the same group ID\r
-   with different scope, nor to a permanent group with the same group\r
-   ID.\r
-\r
-   Multicast addresses must not be used as source addresses in IPv6\r
-   packets or appear in any Routing header.\r
-\r
-   Routers must not forward any multicast packets beyond of the scope\r
-   indicated by the scop field in the destination multicast address.\r
-\r
-   Nodes must not originate a packet to a multicast address whose scop\r
-   field contains the reserved value 0; if such a packet is received, it\r
-   must be silently dropped.  Nodes should not originate a packet to a\r
-   multicast address whose scop field contains the reserved value F; if\r
-   such a packet is sent or received, it must be treated the same as\r
-   packets destined to a global (scop E) multicast address.\r
-\r
-2.7.1 Pre-Defined Multicast Addresses\r
-\r
-   The following well-known multicast addresses are pre-defined.  The\r
-   group ID's defined in this section are defined for explicit scope\r
-   values.\r
-\r
-   Use of these group IDs for any other scope values, with the T flag\r
-   equal to 0, is not allowed.\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 15]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-      Reserved Multicast Addresses:   FF00:0:0:0:0:0:0:0\r
-                                      FF01:0:0:0:0:0:0:0\r
-                                      FF02:0:0:0:0:0:0:0\r
-                                      FF03:0:0:0:0:0:0:0\r
-                                      FF04:0:0:0:0:0:0:0\r
-                                      FF05:0:0:0:0:0:0:0\r
-                                      FF06:0:0:0:0:0:0:0\r
-                                      FF07:0:0:0:0:0:0:0\r
-                                      FF08:0:0:0:0:0:0:0\r
-                                      FF09:0:0:0:0:0:0:0\r
-                                      FF0A:0:0:0:0:0:0:0\r
-                                      FF0B:0:0:0:0:0:0:0\r
-                                      FF0C:0:0:0:0:0:0:0\r
-                                      FF0D:0:0:0:0:0:0:0\r
-                                      FF0E:0:0:0:0:0:0:0\r
-                                      FF0F:0:0:0:0:0:0:0\r
-\r
-   The above multicast addresses are reserved and shall never be\r
-   assigned to any multicast group.\r
-\r
-      All Nodes Addresses:    FF01:0:0:0:0:0:0:1\r
-                              FF02:0:0:0:0:0:0:1\r
-\r
-   The above multicast addresses identify the group of all IPv6 nodes,\r
-   within scope 1 (interface-local) or 2 (link-local).\r
-\r
-      All Routers Addresses:   FF01:0:0:0:0:0:0:2\r
-                               FF02:0:0:0:0:0:0:2\r
-                               FF05:0:0:0:0:0:0:2\r
-\r
-   The above multicast addresses identify the group of all IPv6 routers,\r
-   within scope 1 (interface-local), 2 (link-local), or 5 (site-local).\r
-\r
-      Solicited-Node Address:  FF02:0:0:0:0:1:FFXX:XXXX\r
-\r
-   Solicited-node multicast address are computed as a function of a\r
-   node's unicast and anycast addresses.  A solicited-node multicast\r
-   address is formed by taking the low-order 24 bits of an address\r
-   (unicast or anycast) and appending those bits to the prefix\r
-   FF02:0:0:0:0:1:FF00::/104 resulting in a multicast address in the\r
-   range\r
-\r
-      FF02:0:0:0:0:1:FF00:0000\r
-\r
-   to\r
-\r
-      FF02:0:0:0:0:1:FFFF:FFFF\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 16]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   For example, the solicited node multicast address corresponding to\r
-   the IPv6 address 4037::01:800:200E:8C6C is FF02::1:FF0E:8C6C.  IPv6\r
-   addresses that differ only in the high-order bits, e.g., due to\r
-   multiple high-order prefixes associated with different aggregations,\r
-   will map to the same solicited-node address thereby, reducing the\r
-   number of multicast addresses a node must join.\r
-\r
-   A node is required to compute and join (on the appropriate interface)\r
-   the associated Solicited-Node multicast addresses for every unicast\r
-   and anycast address it is assigned.\r
-\r
-2.8 A Node's Required Addresses\r
-\r
-   A host is required to recognize the following addresses as\r
-   identifying itself:\r
-\r
-      o  Its required Link-Local Address for each interface.\r
-      o  Any additional Unicast and Anycast Addresses that have been\r
-         configured for the node's interfaces (manually or\r
-         automatically).\r
-      o  The loopback address.\r
-      o  The All-Nodes Multicast Addresses defined in section 2.7.1.\r
-      o  The Solicited-Node Multicast Address for each of its unicast\r
-         and anycast addresses.\r
-      o  Multicast Addresses of all other groups to which the node\r
-         belongs.\r
-\r
-   A router is required to recognize all addresses that a host is\r
-   required to recognize, plus the following addresses as identifying\r
-   itself:\r
-\r
-      o  The Subnet-Router Anycast Addresses for all interfaces for\r
-         which it is configured to act as a router.\r
-      o  All other Anycast Addresses with which the router has been\r
-         configured.\r
-      o  The All-Routers Multicast Addresses defined in section 2.7.1.\r
-\r
-3. Security Considerations\r
-\r
-   IPv6 addressing documents do not have any direct impact on Internet\r
-   infrastructure security.  Authentication of IPv6 packets is defined\r
-   in [AUTH].\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 17]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-4. IANA Considerations\r
-\r
-   The table and notes at http://www.isi.edu/in-\r
-   notes/iana/assignments/ipv6-address-space.txt should be replaced with\r
-   the following:\r
-\r
-   INTERNET PROTOCOL VERSION 6 ADDRESS SPACE\r
-\r
-   The initial assignment of IPv6 address space is as follows:\r
-\r
-   Allocation                            Prefix         Fraction of\r
-                                         (binary)       Address Space\r
-   -----------------------------------   --------       -------------\r
-   Unassigned (see Note 1 below)         0000 0000      1/256\r
-   Unassigned                            0000 0001      1/256\r
-   Reserved for NSAP Allocation          0000 001       1/128 [RFC1888]\r
-   Unassigned                            0000 01        1/64\r
-   Unassigned                            0000 1         1/32\r
-   Unassigned                            0001           1/16\r
-   Global Unicast                        001            1/8   [RFC2374]\r
-   Unassigned                            010            1/8\r
-   Unassigned                            011            1/8\r
-   Unassigned                            100            1/8\r
-   Unassigned                            101            1/8\r
-   Unassigned                            110            1/8\r
-   Unassigned                            1110           1/16\r
-   Unassigned                            1111 0         1/32\r
-   Unassigned                            1111 10        1/64\r
-   Unassigned                            1111 110       1/128\r
-   Unassigned                            1111 1110 0    1/512\r
-   Link-Local Unicast Addresses          1111 1110 10   1/1024\r
-   Site-Local Unicast Addresses          1111 1110 11   1/1024\r
-   Multicast Addresses                   1111 1111      1/256\r
-\r
-   Notes:\r
-\r
-   1. The "unspecified address", the "loopback address", and the IPv6\r
-      Addresses with Embedded IPv4 Addresses are assigned out of the\r
-      0000 0000 binary prefix space.\r
-\r
-   2. For now, IANA should limit its allocation of IPv6 unicast address\r
-      space to the range of addresses that start with binary value 001.\r
-      The rest of the global unicast address space (approximately 85% of\r
-      the IPv6 address space) is reserved for future definition and use,\r
-      and is not to be assigned by IANA at this time.\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 18]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-5.  References\r
-\r
-5.1  Normative References\r
-\r
-   [IPV6]    Deering, S. and R. Hinden, "Internet Protocol, Version 6\r
-             (IPv6) Specification", RFC 2460, December 1998.\r
-\r
-   [RFC2026] Bradner, S., "The Internet Standards Process -- Revision\r
-             3", BCP 9 , RFC 2026, October 1996.\r
-\r
-5.2  Informative References\r
-\r
-   [ANYCST]  Partridge, C., Mendez, T. and W. Milliken, "Host Anycasting\r
-             Service", RFC 1546, November 1993.\r
-\r
-   [AUTH]    Kent, S. and R. Atkinson, "IP Authentication Header", RFC\r
-             2402, November 1998.\r
-\r
-   [AGGR]    Hinden, R., O'Dell, M. and S. Deering, "An Aggregatable\r
-             Global Unicast Address Format", RFC 2374, July 1998.\r
-\r
-   [CIDR]    Fuller, V., Li, T., Yu, J. and K. Varadhan, "Classless\r
-             Inter-Domain Routing (CIDR): An Address Assignment and\r
-             Aggregation Strategy", RFC 1519, September 1993.\r
-\r
-   [ETHER]   Crawford, M., "Transmission of IPv6 Packets over Ethernet\r
-             Networks", RFC 2464, December 1998.\r
-\r
-   [EUI64]   IEEE, "Guidelines for 64-bit Global Identifier (EUI-64)\r
-             Registration Authority",\r
-             http://standards.ieee.org/regauth/oui/tutorials/EUI64.html,\r
-             March 1997.\r
-\r
-   [FDDI]    Crawford, M., "Transmission of IPv6 Packets over FDDI\r
-             Networks", RFC 2467, December 1998.\r
-\r
-   [MASGN]   Hinden, R. and S. Deering, "IPv6 Multicast Address\r
-             Assignments", RFC 2375, July 1998.\r
-\r
-   [NSAP]    Bound, J., Carpenter, B., Harrington, D., Houldsworth, J.\r
-             and A. Lloyd, "OSI NSAPs and IPv6", RFC 1888, August 1996.\r
-\r
-   [PRIV]    Narten, T. and R. Draves, "Privacy Extensions for Stateless\r
-             Address Autoconfiguration in IPv6", RFC 3041, January 2001.\r
-\r
-   [TOKEN]   Crawford, M., Narten, T. and S. Thomas, "Transmission of\r
-             IPv6 Packets over Token Ring Networks", RFC 2470, December\r
-             1998.\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 19]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   [TRAN]    Gilligan, R. and E. Nordmark, "Transition Mechanisms for\r
-             IPv6 Hosts and Routers", RFC 2893, August 2000.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 20]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-APPENDIX A: Creating Modified EUI-64 format Interface Identifiers\r
-\r
-   Depending on the characteristics of a specific link or node there are\r
-   a number of approaches for creating Modified EUI-64 format interface\r
-   identifiers.  This appendix describes some of these approaches.\r
-\r
-Links or Nodes with IEEE EUI-64 Identifiers\r
-\r
-   The only change needed to transform an IEEE EUI-64 identifier to an\r
-   interface identifier is to invert the "u" (universal/local) bit.  For\r
-   example, a globally unique IEEE EUI-64 identifier of the form:\r
-\r
-   |0              1|1              3|3              4|4              6|\r
-   |0              5|6              1|2              7|8              3|\r
-   +----------------+----------------+----------------+----------------+\r
-   |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|\r
-   +----------------+----------------+----------------+----------------+\r
-\r
-   where "c" are the bits of the assigned company_id, "0" is the value\r
-   of the universal/local bit to indicate global scope, "g" is\r
-   individual/group bit, and "m" are the bits of the manufacturer-\r
-   selected extension identifier.  The IPv6 interface identifier would\r
-   be of the form:\r
-\r
-   |0              1|1              3|3              4|4              6|\r
-   |0              5|6              1|2              7|8              3|\r
-   +----------------+----------------+----------------+----------------+\r
-   |cccccc1gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|\r
-   +----------------+----------------+----------------+----------------+\r
-\r
-   The only change is inverting the value of the universal/local bit.\r
-\r
-Links or Nodes with IEEE 802 48 bit MAC's\r
-\r
-   [EUI64] defines a method to create a IEEE EUI-64 identifier from an\r
-   IEEE 48bit MAC identifier.  This is to insert two octets, with\r
-   hexadecimal values of 0xFF and 0xFE, in the middle of the 48 bit MAC\r
-   (between the company_id and vendor supplied id).  For example, the 48\r
-   bit IEEE MAC with global scope:\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 21]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   |0              1|1              3|3              4|\r
-   |0              5|6              1|2              7|\r
-   +----------------+----------------+----------------+\r
-   |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|\r
-   +----------------+----------------+----------------+\r
-\r
-   where "c" are the bits of the assigned company_id, "0" is the value\r
-   of the universal/local bit to indicate global scope, "g" is\r
-   individual/group bit, and "m" are the bits of the manufacturer-\r
-   selected extension identifier.  The interface identifier would be of\r
-   the form:\r
-\r
-   |0              1|1              3|3              4|4              6|\r
-   |0              5|6              1|2              7|8              3|\r
-   +----------------+----------------+----------------+----------------+\r
-   |cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|\r
-   +----------------+----------------+----------------+----------------+\r
-\r
-   When IEEE 802 48bit MAC addresses are available (on an interface or a\r
-   node), an implementation may use them to create interface identifiers\r
-   due to their availability and uniqueness properties.\r
-\r
-Links with Other Kinds of Identifiers\r
-\r
-   There are a number of types of links that have link-layer interface\r
-   identifiers other than IEEE EIU-64 or IEEE 802 48-bit MACs.  Examples\r
-   include LocalTalk and Arcnet.  The method to create an Modified EUI-\r
-   64 format identifier is to take the link identifier (e.g., the\r
-   LocalTalk 8 bit node identifier) and zero fill it to the left.  For\r
-   example, a LocalTalk 8 bit node identifier of hexadecimal value 0x4F\r
-   results in the following interface identifier:\r
-\r
-   |0              1|1              3|3              4|4              6|\r
-   |0              5|6              1|2              7|8              3|\r
-   +----------------+----------------+----------------+----------------+\r
-   |0000000000000000|0000000000000000|0000000000000000|0000000001001111|\r
-   +----------------+----------------+----------------+----------------+\r
-\r
-   Note that this results in the universal/local bit set to "0" to\r
-   indicate local scope.\r
-\r
-Links without Identifiers\r
-\r
-   There are a number of links that do not have any type of built-in\r
-   identifier.  The most common of these are serial links and configured\r
-   tunnels.  Interface identifiers must be chosen that are unique within\r
-   a subnet-prefix.\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 22]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   When no built-in identifier is available on a link the preferred\r
-   approach is to use a global interface identifier from another\r
-   interface or one which is assigned to the node itself.  When using\r
-   this approach no other interface connecting the same node to the same\r
-   subnet-prefix may use the same identifier.\r
-\r
-   If there is no global interface identifier available for use on the\r
-   link the implementation needs to create a local-scope interface\r
-   identifier.  The only requirement is that it be unique within a\r
-   subnet prefix.  There are many possible approaches to select a\r
-   subnet-prefix-unique interface identifier.  These include:\r
-\r
-      Manual Configuration\r
-      Node Serial Number\r
-      Other node-specific token\r
-\r
-   The subnet-prefix-unique interface identifier should be generated in\r
-   a manner that it does not change after a reboot of a node or if\r
-   interfaces are added or deleted from the node.\r
-\r
-   The selection of the appropriate algorithm is link and implementation\r
-   dependent.  The details on forming interface identifiers are defined\r
-   in the appropriate "IPv6 over <link>" specification.  It is strongly\r
-   recommended that a collision detection algorithm be implemented as\r
-   part of any automatic algorithm.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 23]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-APPENDIX B: Changes from RFC-2373\r
-\r
-   The following changes were made from RFC-2373 "IP Version 6\r
-   Addressing Architecture":\r
-\r
-   -  Clarified text in section 2.2 to allow "::" to represent one or\r
-      more groups of 16 bits of zeros.\r
-   -  Changed uniqueness requirement of Interface Identifiers from\r
-      unique on a link to unique within a subnet prefix.  Also added a\r
-      recommendation that the same interface identifier not be assigned\r
-      to different machines on a link.\r
-   -  Change site-local format to make the subnet ID field 54-bit long\r
-      and remove the 38-bit zero's field.\r
-   -  Added description of multicast scop values and rules to handle the\r
-      reserved scop value 0.\r
-   -  Revised sections 2.4 and 2.5.6 to simplify and clarify how\r
-      different address types  are identified.  This was done to insure\r
-      that implementations do not build in any knowledge about global\r
-      unicast format prefixes.  Changes include:\r
-         o  Removed Format Prefix (FP) terminology\r
-         o  Revised list of address types to only include exceptions to\r
-            global unicast and a singe entry that identifies everything\r
-            else as Global Unicast.\r
-         o  Removed list of defined prefix exceptions from section 2.5.6\r
-            as it is now the main part of section 2.4.\r
-   -  Clarified text relating to EUI-64 identifiers to distinguish\r
-      between IPv6's "Modified EUI-64 format" identifiers and IEEE EUI-\r
-      64 identifiers.\r
-   -  Combined the sections on the Global Unicast Addresses and NSAP\r
-      Addresses into a single section on Global Unicast Addresses,\r
-      generalized the Global Unicast format, and cited [AGGR] and [NSAP]\r
-      as examples.\r
-   -  Reordered sections 2.5.4 and 2.5.5.\r
-   -  Removed section 2.7.2 Assignment of New IPv6 Multicast Addresses\r
-      because this is being redefined elsewhere.\r
-   -  Added an IANA considerations section that updates the IANA IPv6\r
-      address allocations and documents the NSAP and AGGR allocations.\r
-   -  Added clarification that the "IPv4-compatible IPv6 address" must\r
-      use global IPv4 unicast addresses.\r
-   -  Divided references in to normative and non-normative sections.\r
-   -  Added reference to [PRIV] in section 2.5.1\r
-   -  Added clarification that routers must not forward multicast\r
-      packets outside of the scope indicated in the multicast address.\r
-   -  Added clarification that routers must not forward packets with\r
-       source address of the unspecified address.\r
-   -  Added clarification that routers must drop packets received on an\r
-      interface with destination address of loopback.\r
-   -  Clarified the definition of IPv4-mapped addresses.\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 24]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-   -  Removed the ABNF Description of Text Representations Appendix.\r
-   -  Removed the address block reserved for IPX addresses.\r
-   -  Multicast scope changes:\r
-         o  Changed name of scope value 1 from "node-local" to\r
-            "interface-local"\r
-         o  Defined scope value 4 as "admin-local"\r
-   -  Corrected reference to RFC1933 and updated references.\r
-   -  Many small changes to clarify and make the text more consistent.\r
-\r
-Authors' Addresses\r
-\r
-   Robert M. Hinden\r
-   Nokia\r
-   313 Fairchild Drive\r
-   Mountain View, CA 94043\r
-   USA\r
-\r
-   Phone: +1 650 625-2004\r
-   EMail: hinden@iprg.nokia.com\r
-\r
-\r
-   Stephen E. Deering\r
-   Cisco Systems, Inc.\r
-   170 West Tasman Drive\r
-   San Jose, CA 95134-1706\r
-   USA\r
-\r
-   Phone: +1 408 527-8213\r
-   EMail: deering@cisco.com\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 25]\r
-\f\r
-RFC 3513              IPv6 Addressing Architecture            April 2003\r
-\r
-\r
-Full Copyright Statement\r
-\r
-   Copyright (C) The Internet Society (2003).  All Rights Reserved.\r
-\r
-   This document and translations of it may be copied and furnished to\r
-   others, and derivative works that comment on or otherwise explain it\r
-   or assist in its implementation may be prepared, copied, published\r
-   and distributed, in whole or in part, without restriction of any\r
-   kind, provided that the above copyright notice and this paragraph are\r
-   included on all such copies and derivative works.  However, this\r
-   document itself may not be modified in any way, such as by removing\r
-   the copyright notice or references to the Internet Society or other\r
-   Internet organizations, except as needed for the purpose of\r
-   developing Internet standards in which case the procedures for\r
-   copyrights defined in the Internet Standards process must be\r
-   followed, or as required to translate it into languages other than\r
-   English.\r
-\r
-   The limited permissions granted above are perpetual and will not be\r
-   revoked by the Internet Society or its successors or assigns.\r
-\r
-   This document and the information contained herein is provided on an\r
-   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\r
-   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\r
-   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\r
-   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\r
-   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
-\r
-Acknowledgement\r
-\r
-   Funding for the RFC Editor function is currently provided by the\r
-   Internet Society.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Hinden & Deering            Standards Track                    [Page 26]\r
-\f\r
-\r
-\r
+
+
+
+
+
+Network Working Group                                          R. Hinden
+Request for Comments: 3513                                         Nokia
+Obsoletes: 2373                                               S. Deering
+Category: Standards Track                                  Cisco Systems
+                                                              April 2003
+
+
+       Internet Protocol Version 6 (IPv6) Addressing Architecture
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+Abstract
+
+   This specification defines the addressing architecture of the IP
+   Version 6 (IPv6) protocol.  The document includes the IPv6 addressing
+   model, text representations of IPv6 addresses, definition of IPv6
+   unicast addresses, anycast addresses, and multicast addresses, and an
+   IPv6 node's required addresses.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                     [Page 1]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+Table of Contents
+
+   1. Introduction.................................................3
+   2. IPv6 Addressing..............................................3
+      2.1 Addressing Model.........................................4
+      2.2 Text Representation of Addresses.........................4
+      2.3 Text Representation of Address Prefixes..................5
+      2.4 Address Type Identification..............................6
+      2.5 Unicast Addresses........................................7
+          2.5.1 Interface Identifiers..............................8
+          2.5.2 The Unspecified Address............................9
+          2.5.3 The Loopback Address...............................9
+          2.5.4 Global Unicast Addresses..........................10
+          2.5.5 IPv6 Addresses with Embedded IPv4 Addresses.......10
+          2.5.6 Local-use IPv6 Unicast Addresses..................11
+      2.6 Anycast Addresses.......................................12
+          2.6.1 Required Anycast Address..........................13
+      2.7 Multicast Addresses.....................................13
+          2.7.1 Pre-Defined Multicast Addresses...................15
+      2.8 A Node's Required Addresses.............................17
+   3. Security Considerations.....................................17
+   4. IANA Considerations.........................................18
+   5. References..................................................19
+      5.1 Normative References....................................19
+      5.2 Informative References..................................19
+   APPENDIX A: Creating Modified EUI-64 format Interface IDs......21
+   APPENDIX B: Changes from RFC-2373..............................24
+   Authors' Addresses.............................................25
+   Full Copyright Statement.......................................26
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                     [Page 2]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+1.  Introduction
+
+   This specification defines the addressing architecture of the IP
+   Version 6 (IPv6) protocol.  It includes the basic formats for the
+   various types of IPv6 addresses (unicast, anycast, and multicast).
+
+   The authors would like to acknowledge the contributions of Paul
+   Francis, Scott Bradner, Jim Bound, Brian Carpenter, Matt Crawford,
+   Deborah Estrin, Roger Fajman, Bob Fink, Peter Ford, Bob Gilligan,
+   Dimitry Haskin, Tom Harsch, Christian Huitema, Tony Li, Greg
+   Minshall, Thomas Narten, Erik Nordmark, Yakov Rekhter, Bill Simpson,
+   Sue Thomson, Markku Savela, and Larry Masinter.
+
+2. IPv6 Addressing
+
+   IPv6 addresses are 128-bit identifiers for interfaces and sets of
+   interfaces (where "interface" is as defined in section 2 of [IPV6]).
+   There are three types of addresses:
+
+   Unicast:   An identifier for a single interface.  A packet sent to a
+              unicast address is delivered to the interface identified
+              by that address.
+
+   Anycast:   An identifier for a set of interfaces (typically belonging
+              to different nodes).  A packet sent to an anycast address
+              is delivered to one of the interfaces identified by that
+              address (the "nearest" one, according to the routing
+              protocols' measure of distance).
+
+   Multicast: An identifier for a set of interfaces (typically belonging
+              to different nodes).  A packet sent to a multicast address
+              is delivered to all interfaces identified by that address.
+
+   There are no broadcast addresses in IPv6, their function being
+   superseded by multicast addresses.
+
+   In this document, fields in addresses are given a specific name, for
+   example "subnet".  When this name is used with the term "ID" for
+   identifier after the name (e.g., "subnet ID"), it refers to the
+   contents of the named field.  When it is used with the term "prefix"
+   (e.g., "subnet prefix") it refers to all of the address from the left
+   up to and including this field.
+
+   In IPv6, all zeros and all ones are legal values for any field,
+   unless specifically excluded.  Specifically, prefixes may contain, or
+   end with, zero-valued fields.
+
+
+
+
+
+Hinden & Deering            Standards Track                     [Page 3]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+2.1 Addressing Model
+
+   IPv6 addresses of all types are assigned to interfaces, not nodes.
+   An IPv6 unicast address refers to a single interface.  Since each
+   interface belongs to a single node, any of that node's interfaces'
+   unicast addresses may be used as an identifier for the node.
+
+   All interfaces are required to have at least one link-local unicast
+   address (see section 2.8 for additional required addresses).  A
+   single interface may also have multiple IPv6 addresses of any type
+   (unicast, anycast, and multicast) or scope.  Unicast addresses with
+   scope greater than link-scope are not needed for interfaces that are
+   not used as the origin or destination of any IPv6 packets to or from
+   non-neighbors.  This is sometimes convenient for point-to-point
+   interfaces.  There is one exception to this addressing model:
+
+      A unicast address or a set of unicast addresses may be assigned to
+      multiple physical interfaces if the implementation treats the
+      multiple physical interfaces as one interface when presenting it
+      to the internet layer.  This is useful for load-sharing over
+      multiple physical interfaces.
+
+   Currently IPv6 continues the IPv4 model that a subnet prefix is
+   associated with one link.  Multiple subnet prefixes may be assigned
+   to the same link.
+
+2.2 Text Representation of Addresses
+
+   There are three conventional forms for representing IPv6 addresses as
+   text strings:
+
+   1. The preferred form is x:x:x:x:x:x:x:x, where the 'x's are the
+      hexadecimal values of the eight 16-bit pieces of the address.
+
+      Examples:
+
+         FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
+
+         1080:0:0:0:8:800:200C:417A
+
+      Note that it is not necessary to write the leading zeros in an
+      individual field, but there must be at least one numeral in every
+      field (except for the case described in 2.).
+
+   2. Due to some methods of allocating certain styles of IPv6
+      addresses, it will be common for addresses to contain long strings
+      of zero bits.  In order to make writing addresses containing zero
+      bits easier a special syntax is available to compress the zeros.
+
+
+
+Hinden & Deering            Standards Track                     [Page 4]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+      The use of "::" indicates one or more groups of 16 bits of zeros.
+      The "::" can only appear once in an address.  The "::" can also be
+      used to compress leading or trailing zeros in an address.
+
+      For example, the following addresses:
+
+         1080:0:0:0:8:800:200C:417A  a unicast address
+         FF01:0:0:0:0:0:0:101        a multicast address
+         0:0:0:0:0:0:0:1             the loopback address
+         0:0:0:0:0:0:0:0             the unspecified addresses
+
+      may be represented as:
+
+         1080::8:800:200C:417A       a unicast address
+         FF01::101                   a multicast address
+         ::1                         the loopback address
+         ::                          the unspecified addresses
+
+   3. An alternative form that is sometimes more convenient when dealing
+      with a mixed environment of IPv4 and IPv6 nodes is
+      x:x:x:x:x:x:d.d.d.d, where the 'x's are the hexadecimal values of
+      the six high-order 16-bit pieces of the address, and the 'd's are
+      the decimal values of the four low-order 8-bit pieces of the
+      address (standard IPv4 representation).  Examples:
+
+         0:0:0:0:0:0:13.1.68.3
+
+         0:0:0:0:0:FFFF:129.144.52.38
+
+      or in compressed form:
+
+         ::13.1.68.3
+
+         ::FFFF:129.144.52.38
+
+2.3 Text Representation of Address Prefixes
+
+   The text representation of IPv6 address prefixes is similar to the
+   way IPv4 addresses prefixes are written in CIDR notation [CIDR].  An
+   IPv6 address prefix is represented by the notation:
+
+      ipv6-address/prefix-length
+
+   where
+
+      ipv6-address    is an IPv6 address in any of the notations listed
+                      in section 2.2.
+
+
+
+
+Hinden & Deering            Standards Track                     [Page 5]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+      prefix-length   is a decimal value specifying how many of the
+                      leftmost contiguous bits of the address comprise
+                      the prefix.
+
+   For example, the following are legal representations of the 60-bit
+   prefix 12AB00000000CD3 (hexadecimal):
+
+      12AB:0000:0000:CD30:0000:0000:0000:0000/60
+      12AB::CD30:0:0:0:0/60
+      12AB:0:0:CD30::/60
+
+   The following are NOT legal representations of the above prefix:
+
+      12AB:0:0:CD3/60   may drop leading zeros, but not trailing zeros,
+                        within any 16-bit chunk of the address
+
+      12AB::CD30/60     address to left of "/" expands to
+                        12AB:0000:0000:0000:0000:000:0000:CD30
+
+      12AB::CD3/60      address to left of "/" expands to
+                        12AB:0000:0000:0000:0000:000:0000:0CD3
+
+   When writing both a node address and a prefix of that node address
+   (e.g., the node's subnet prefix), the two can combined as follows:
+
+      the node address      12AB:0:0:CD30:123:4567:89AB:CDEF
+      and its subnet number 12AB:0:0:CD30::/60
+
+      can be abbreviated as 12AB:0:0:CD30:123:4567:89AB:CDEF/60
+
+2.4 Address Type Identification
+
+   The type of an IPv6 address is identified by the high-order bits of
+   the address, as follows:
+
+   Address type         Binary prefix        IPv6 notation   Section
+   ------------         -------------        -------------   -------
+   Unspecified          00...0  (128 bits)   ::/128          2.5.2
+   Loopback             00...1  (128 bits)   ::1/128         2.5.3
+   Multicast            11111111             FF00::/8        2.7
+   Link-local unicast   1111111010           FE80::/10       2.5.6
+   Site-local unicast   1111111011           FEC0::/10       2.5.6
+   Global unicast       (everything else)
+
+   Anycast addresses are taken from the unicast address spaces (of any
+   scope) and are not syntactically distinguishable from unicast
+   addresses.
+
+
+
+
+Hinden & Deering            Standards Track                     [Page 6]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   The general format of global unicast addresses is described in
+   section 2.5.4.  Some special-purpose subtypes of global unicast
+   addresses which contain embedded IPv4 addresses (for the purposes of
+   IPv4-IPv6 interoperation) are described in section 2.5.5.
+
+   Future specifications may redefine one or more sub-ranges of the
+   global unicast space for other purposes, but unless and until that
+   happens, implementations must treat all addresses that do not start
+   with any of the above-listed prefixes as global unicast addresses.
+
+2.5 Unicast Addresses
+
+   IPv6 unicast addresses are aggregable with prefixes of arbitrary
+   bit-length similar to IPv4 addresses under Classless Interdomain
+   Routing.
+
+   There are several types of unicast addresses in IPv6, in particular
+   global unicast, site-local unicast, and link-local unicast.  There
+   are also some special-purpose subtypes of global unicast, such as
+   IPv6 addresses with embedded IPv4 addresses or encoded NSAP
+   addresses.  Additional address types or subtypes can be defined in
+   the future.
+
+   IPv6 nodes may have considerable or little knowledge of the internal
+   structure of the IPv6 address, depending on the role the node plays
+   (for instance, host versus router).  At a minimum, a node may
+   consider that unicast addresses (including its own) have no internal
+   structure:
+
+   |                           128 bits                              |
+   +-----------------------------------------------------------------+
+   |                          node address                           |
+   +-----------------------------------------------------------------+
+
+   A slightly sophisticated host (but still rather simple) may
+   additionally be aware of subnet prefix(es) for the link(s) it is
+   attached to, where different addresses may have different values for
+   n:
+
+   |                         n bits                 |   128-n bits   |
+   +------------------------------------------------+----------------+
+   |                   subnet prefix                | interface ID   |
+   +------------------------------------------------+----------------+
+
+   Though a very simple router may have no knowledge of the internal
+   structure of IPv6 unicast addresses, routers will more generally have
+   knowledge of one or more of the hierarchical boundaries for the
+   operation of routing protocols.  The known boundaries will differ
+
+
+
+Hinden & Deering            Standards Track                     [Page 7]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   from router to router, depending on what positions the router holds
+   in the routing hierarchy.
+
+2.5.1 Interface Identifiers
+
+   Interface identifiers in IPv6 unicast addresses are used to identify
+   interfaces on a link.  They are required to be unique within a subnet
+   prefix.  It is recommended that the same interface identifier not be
+   assigned to different nodes on a link.  They may also be unique over
+   a broader scope.  In some cases an interface's identifier will be
+   derived directly from that interface's link-layer address.  The same
+   interface identifier may be used on multiple interfaces on a single
+   node, as long as they are attached to different subnets.
+
+   Note that the uniqueness of interface identifiers is independent of
+   the uniqueness of IPv6 addresses.  For example, a global unicast
+   address may be created with a non-global scope interface identifier
+   and a site-local address may be created with a global scope interface
+   identifier.
+
+   For all unicast addresses, except those that start with binary value
+   000, Interface IDs are required to be 64 bits long and to be
+   constructed in Modified EUI-64 format.
+
+   Modified EUI-64 format based Interface identifiers may have global
+   scope when derived from a global token (e.g., IEEE 802 48-bit MAC or
+   IEEE EUI-64 identifiers [EUI64]) or may have local scope where a
+   global token is not available (e.g., serial links, tunnel end-points,
+   etc.) or where global tokens are undesirable (e.g., temporary tokens
+   for privacy [PRIV]).
+
+   Modified EUI-64 format interface identifiers are formed by inverting
+   the "u" bit (universal/local bit in IEEE EUI-64 terminology) when
+   forming the interface identifier from IEEE EUI-64 identifiers.  In
+   the resulting Modified EUI-64 format the "u" bit is set to one (1) to
+   indicate global scope, and it is set to zero (0) to indicate local
+   scope.  The first three octets in binary of an IEEE EUI-64 identifier
+   are as follows:
+
+       0       0 0       1 1       2
+      |0       7 8       5 6       3|
+      +----+----+----+----+----+----+
+      |cccc|ccug|cccc|cccc|cccc|cccc|
+      +----+----+----+----+----+----+
+
+   written in Internet standard bit-order , where "u" is the
+   universal/local bit, "g" is the individual/group bit, and "c" are the
+   bits of the company_id.  Appendix A: "Creating Modified EUI-64 format
+
+
+
+Hinden & Deering            Standards Track                     [Page 8]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   Interface Identifiers" provides examples on the creation of Modified
+   EUI-64 format based interface identifiers.
+
+   The motivation for inverting the "u" bit when forming an interface
+   identifier is to make it easy for system administrators to hand
+   configure non-global identifiers when hardware tokens are not
+   available.  This is expected to be case for serial links, tunnel end-
+   points, etc.  The alternative would have been for these to be of the
+   form 0200:0:0:1, 0200:0:0:2, etc., instead of the much simpler 1, 2,
+   etc.
+
+   The use of the universal/local bit in the Modified EUI-64 format
+   identifier is to allow development of future technology that can take
+   advantage of interface identifiers with global scope.
+
+   The details of forming interface identifiers are defined in the
+   appropriate "IPv6 over <link>" specification such as "IPv6 over
+   Ethernet" [ETHER], "IPv6 over FDDI" [FDDI], etc.
+
+2.5.2 The Unspecified Address
+
+   The address 0:0:0:0:0:0:0:0 is called the unspecified address.  It
+   must never be assigned to any node.  It indicates the absence of an
+   address.  One example of its use is in the Source Address field of
+   any IPv6 packets sent by an initializing host before it has learned
+   its own address.
+
+   The unspecified address must not be used as the destination address
+   of IPv6 packets or in IPv6 Routing Headers.  An IPv6 packet with a
+   source address of unspecified must never be forwarded by an IPv6
+   router.
+
+2.5.3 The Loopback Address
+
+   The unicast address 0:0:0:0:0:0:0:1 is called the loopback address.
+   It may be used by a node to send an IPv6 packet to itself.  It may
+   never be assigned to any physical interface.   It is treated as
+   having link-local scope, and may be thought of as the link-local
+   unicast address of a virtual interface (typically called "the
+   loopback interface") to an imaginary link that goes nowhere.
+
+   The loopback address must not be used as the source address in IPv6
+   packets that are sent outside of a single node.  An IPv6 packet with
+   a destination address of loopback must never be sent outside of a
+   single node and must never be forwarded by an IPv6 router.  A packet
+   received on an interface with destination address of loopback must be
+   dropped.
+
+
+
+
+Hinden & Deering            Standards Track                     [Page 9]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+2.5.4 Global Unicast Addresses
+
+   The general format for IPv6 global unicast addresses is as follows:
+
+   |         n bits         |   m bits  |       128-n-m bits         |
+   +------------------------+-----------+----------------------------+
+   | global routing prefix  | subnet ID |       interface ID         |
+   +------------------------+-----------+----------------------------+
+
+   where the global routing prefix is a (typically hierarchically-
+   structured) value assigned to a site (a cluster of subnets/links),
+   the subnet ID is an identifier of a link within the site, and the
+   interface ID is as defined in section 2.5.1.
+
+   All global unicast addresses other than those that start with binary
+   000 have a 64-bit interface ID field (i.e., n + m = 64), formatted as
+   described in section 2.5.1.  Global unicast addresses that start with
+   binary 000 have no such constraint on the size or structure of the
+   interface ID field.
+
+   Examples of global unicast addresses that start with binary 000 are
+   the IPv6 address with embedded IPv4 addresses described in section
+   2.5.5 and the IPv6 address containing encoded NSAP addresses
+   specified in [NSAP].  An example of global addresses starting with a
+   binary value other than 000 (and therefore having a 64-bit interface
+   ID field) can be found in [AGGR].
+
+2.5.5 IPv6 Addresses with Embedded IPv4 Addresses
+
+   The IPv6 transition mechanisms [TRAN] include a technique for hosts
+   and routers to dynamically tunnel IPv6 packets over IPv4 routing
+   infrastructure.  IPv6 nodes that use this technique are assigned
+   special IPv6 unicast addresses that carry a global IPv4 address in
+   the low-order 32 bits.  This type of address is termed an "IPv4-
+   compatible IPv6 address" and has the format:
+
+   |                80 bits               | 16 |      32 bits        |
+   +--------------------------------------+--------------------------+
+   |0000..............................0000|0000|    IPv4 address     |
+   +--------------------------------------+----+---------------------+
+
+   Note: The IPv4 address used in the "IPv4-compatible IPv6 address"
+   must be a globally-unique IPv4 unicast address.
+
+   A second type of IPv6 address which holds an embedded IPv4 address is
+   also defined.  This address type is used to represent the addresses
+   of IPv4 nodes as IPv6 addresses.  This type of address is termed an
+   "IPv4-mapped IPv6 address" and has the format:
+
+
+
+Hinden & Deering            Standards Track                    [Page 10]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   |                80 bits               | 16 |      32 bits        |
+   +--------------------------------------+--------------------------+
+   |0000..............................0000|FFFF|    IPv4 address     |
+   +--------------------------------------+----+---------------------+
+
+2.5.6 Local-Use IPv6 Unicast Addresses
+
+   There are two types of local-use unicast addresses defined.  These
+   are Link-Local and Site-Local.  The Link-Local is for use on a single
+   link and the Site-Local is for use in a single site.  Link-Local
+   addresses have the following format:
+
+   |   10     |
+   |  bits    |         54 bits         |          64 bits           |
+   +----------+-------------------------+----------------------------+
+   |1111111010|           0             |       interface ID         |
+   +----------+-------------------------+----------------------------+
+
+   Link-Local addresses are designed to be used for addressing on a
+   single link for purposes such as automatic address configuration,
+   neighbor discovery, or when no routers are present.
+
+   Routers must not forward any packets with link-local source or
+   destination addresses to other links.
+
+   Site-Local addresses have the following format:
+
+   |   10     |
+   |  bits    |         54 bits         |         64 bits            |
+   +----------+-------------------------+----------------------------+
+   |1111111011|        subnet ID        |       interface ID         |
+   +----------+-------------------------+----------------------------+
+
+   Site-local addresses are designed to be used for addressing inside of
+   a site without the need for a global prefix.  Although a subnet ID
+   may be up to 54-bits long, it is expected that globally-connected
+   sites will use the same subnet IDs for site-local and global
+   prefixes.
+
+   Routers must not forward any packets with site-local source or
+   destination addresses outside of the site.
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 11]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+2.6 Anycast Addresses
+
+   An IPv6 anycast address is an address that is assigned to more than
+   one interface (typically belonging to different nodes), with the
+   property that a packet sent to an anycast address is routed to the
+   "nearest" interface having that address, according to the routing
+   protocols' measure of distance.
+
+   Anycast addresses are allocated from the unicast address space, using
+   any of the defined unicast address formats.  Thus, anycast addresses
+   are syntactically indistinguishable from unicast addresses.  When a
+   unicast address is assigned to more than one interface, thus turning
+   it into an anycast address, the nodes to which the address is
+   assigned must be explicitly configured to know that it is an anycast
+   address.
+
+   For any assigned anycast address, there is a longest prefix P of that
+   address that identifies the topological region in which all
+   interfaces belonging to that anycast address reside.  Within the
+   region identified by P, the anycast address must be maintained as a
+   separate entry in the routing system (commonly referred to as a "host
+   route"); outside the region identified by P, the anycast address may
+   be aggregated into the routing entry for prefix P.
+
+   Note that in the worst case, the prefix P of an anycast set may be
+   the null prefix, i.e., the members of the set may have no topological
+   locality.  In that case, the anycast address must be maintained as a
+   separate routing entry throughout the entire internet, which presents
+   a severe scaling limit on how many such "global" anycast sets may be
+   supported.  Therefore, it is expected that support for global anycast
+   sets may be unavailable or very restricted.
+
+   One expected use of anycast addresses is to identify the set of
+   routers belonging to an organization providing internet service.
+   Such addresses could be used as intermediate addresses in an IPv6
+   Routing header, to cause a packet to be delivered via a particular
+   service provider or sequence of service providers.
+
+   Some other possible uses are to identify the set of routers attached
+   to a particular subnet, or the set of routers providing entry into a
+   particular routing domain.
+
+   There is little experience with widespread, arbitrary use of internet
+   anycast addresses, and some known complications and hazards when
+   using them in their full generality [ANYCST].  Until more experience
+   has been gained and solutions are specified, the following
+   restrictions are imposed on IPv6 anycast addresses:
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 12]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   o  An anycast address must not be used as the source address of an
+      IPv6 packet.
+
+   o  An anycast address must not be assigned to an IPv6 host, that is,
+      it may be assigned to an IPv6 router only.
+
+2.6.1 Required Anycast Address
+
+   The Subnet-Router anycast address is predefined.  Its format is as
+   follows:
+
+   |                         n bits                 |   128-n bits   |
+   +------------------------------------------------+----------------+
+   |                   subnet prefix                | 00000000000000 |
+   +------------------------------------------------+----------------+
+
+   The "subnet prefix" in an anycast address is the prefix which
+   identifies a specific link.  This anycast address is syntactically
+   the same as a unicast address for an interface on the link with the
+   interface identifier set to zero.
+
+   Packets sent to the Subnet-Router anycast address will be delivered
+   to one router on the subnet.  All routers are required to support the
+   Subnet-Router anycast addresses for the subnets to which they have
+   interfaces.
+
+   The subnet-router anycast address is intended to be used for
+   applications where a node needs to communicate with any one of the
+   set of routers.
+
+2.7 Multicast Addresses
+
+   An IPv6 multicast address is an identifier for a group of interfaces
+   (typically on different nodes).  An interface may belong to any
+   number of multicast groups.  Multicast addresses have the following
+   format:
+
+   |   8    |  4 |  4 |                  112 bits                   |
+   +------ -+----+----+---------------------------------------------+
+   |11111111|flgs|scop|                  group ID                   |
+   +--------+----+----+---------------------------------------------+
+
+         binary 11111111 at the start of the address identifies the
+         address as being a multicast address.
+
+                                       +-+-+-+-+
+         flgs is a set of 4 flags:     |0|0|0|T|
+                                       +-+-+-+-+
+
+
+
+Hinden & Deering            Standards Track                    [Page 13]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+            The high-order 3 flags are reserved, and must be initialized
+            to 0.
+
+            T = 0 indicates a permanently-assigned ("well-known")
+            multicast address, assigned by the Internet Assigned Number
+            Authority (IANA).
+
+            T = 1 indicates a non-permanently-assigned ("transient")
+            multicast address.
+
+         scop is a 4-bit multicast scope value used to limit the scope
+         of the multicast group.  The values are:
+
+            0  reserved
+            1  interface-local scope
+            2  link-local scope
+            3  reserved
+            4  admin-local scope
+            5  site-local scope
+            6  (unassigned)
+            7  (unassigned)
+            8  organization-local scope
+            9  (unassigned)
+            A  (unassigned)
+            B  (unassigned)
+            C  (unassigned)
+            D  (unassigned)
+            E  global scope
+            F  reserved
+
+            interface-local scope spans only a single interface on a
+            node, and is useful only for loopback transmission of
+            multicast.
+
+            link-local and site-local multicast scopes span the same
+            topological regions as the corresponding unicast scopes.
+
+            admin-local scope is the smallest scope that must be
+            administratively configured, i.e., not automatically derived
+            from physical connectivity or other, non- multicast-related
+            configuration.
+
+            organization-local scope is intended to span multiple sites
+            belonging to a single organization.
+
+            scopes labeled "(unassigned)" are available for
+            administrators to define additional multicast regions.
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 14]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+         group ID identifies the multicast group, either permanent or
+         transient, within the given scope.
+
+   The "meaning" of a permanently-assigned multicast address is
+   independent of the scope value.  For example, if the "NTP servers
+   group" is assigned a permanent multicast address with a group ID of
+   101 (hex), then:
+
+      FF01:0:0:0:0:0:0:101 means all NTP servers on the same interface
+      (i.e., the same node) as the sender.
+
+      FF02:0:0:0:0:0:0:101 means all NTP servers on the same link as the
+      sender.
+
+      FF05:0:0:0:0:0:0:101 means all NTP servers in the same site as the
+      sender.
+
+      FF0E:0:0:0:0:0:0:101 means all NTP servers in the internet.
+
+   Non-permanently-assigned multicast addresses are meaningful only
+   within a given scope.  For example, a group identified by the non-
+   permanent, site-local multicast address FF15:0:0:0:0:0:0:101 at one
+   site bears no relationship to a group using the same address at a
+   different site, nor to a non-permanent group using the same group ID
+   with different scope, nor to a permanent group with the same group
+   ID.
+
+   Multicast addresses must not be used as source addresses in IPv6
+   packets or appear in any Routing header.
+
+   Routers must not forward any multicast packets beyond of the scope
+   indicated by the scop field in the destination multicast address.
+
+   Nodes must not originate a packet to a multicast address whose scop
+   field contains the reserved value 0; if such a packet is received, it
+   must be silently dropped.  Nodes should not originate a packet to a
+   multicast address whose scop field contains the reserved value F; if
+   such a packet is sent or received, it must be treated the same as
+   packets destined to a global (scop E) multicast address.
+
+2.7.1 Pre-Defined Multicast Addresses
+
+   The following well-known multicast addresses are pre-defined.  The
+   group ID's defined in this section are defined for explicit scope
+   values.
+
+   Use of these group IDs for any other scope values, with the T flag
+   equal to 0, is not allowed.
+
+
+
+Hinden & Deering            Standards Track                    [Page 15]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+      Reserved Multicast Addresses:   FF00:0:0:0:0:0:0:0
+                                      FF01:0:0:0:0:0:0:0
+                                      FF02:0:0:0:0:0:0:0
+                                      FF03:0:0:0:0:0:0:0
+                                      FF04:0:0:0:0:0:0:0
+                                      FF05:0:0:0:0:0:0:0
+                                      FF06:0:0:0:0:0:0:0
+                                      FF07:0:0:0:0:0:0:0
+                                      FF08:0:0:0:0:0:0:0
+                                      FF09:0:0:0:0:0:0:0
+                                      FF0A:0:0:0:0:0:0:0
+                                      FF0B:0:0:0:0:0:0:0
+                                      FF0C:0:0:0:0:0:0:0
+                                      FF0D:0:0:0:0:0:0:0
+                                      FF0E:0:0:0:0:0:0:0
+                                      FF0F:0:0:0:0:0:0:0
+
+   The above multicast addresses are reserved and shall never be
+   assigned to any multicast group.
+
+      All Nodes Addresses:    FF01:0:0:0:0:0:0:1
+                              FF02:0:0:0:0:0:0:1
+
+   The above multicast addresses identify the group of all IPv6 nodes,
+   within scope 1 (interface-local) or 2 (link-local).
+
+      All Routers Addresses:   FF01:0:0:0:0:0:0:2
+                               FF02:0:0:0:0:0:0:2
+                               FF05:0:0:0:0:0:0:2
+
+   The above multicast addresses identify the group of all IPv6 routers,
+   within scope 1 (interface-local), 2 (link-local), or 5 (site-local).
+
+      Solicited-Node Address:  FF02:0:0:0:0:1:FFXX:XXXX
+
+   Solicited-node multicast address are computed as a function of a
+   node's unicast and anycast addresses.  A solicited-node multicast
+   address is formed by taking the low-order 24 bits of an address
+   (unicast or anycast) and appending those bits to the prefix
+   FF02:0:0:0:0:1:FF00::/104 resulting in a multicast address in the
+   range
+
+      FF02:0:0:0:0:1:FF00:0000
+
+   to
+
+      FF02:0:0:0:0:1:FFFF:FFFF
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 16]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   For example, the solicited node multicast address corresponding to
+   the IPv6 address 4037::01:800:200E:8C6C is FF02::1:FF0E:8C6C.  IPv6
+   addresses that differ only in the high-order bits, e.g., due to
+   multiple high-order prefixes associated with different aggregations,
+   will map to the same solicited-node address thereby, reducing the
+   number of multicast addresses a node must join.
+
+   A node is required to compute and join (on the appropriate interface)
+   the associated Solicited-Node multicast addresses for every unicast
+   and anycast address it is assigned.
+
+2.8 A Node's Required Addresses
+
+   A host is required to recognize the following addresses as
+   identifying itself:
+
+      o  Its required Link-Local Address for each interface.
+      o  Any additional Unicast and Anycast Addresses that have been
+         configured for the node's interfaces (manually or
+         automatically).
+      o  The loopback address.
+      o  The All-Nodes Multicast Addresses defined in section 2.7.1.
+      o  The Solicited-Node Multicast Address for each of its unicast
+         and anycast addresses.
+      o  Multicast Addresses of all other groups to which the node
+         belongs.
+
+   A router is required to recognize all addresses that a host is
+   required to recognize, plus the following addresses as identifying
+   itself:
+
+      o  The Subnet-Router Anycast Addresses for all interfaces for
+         which it is configured to act as a router.
+      o  All other Anycast Addresses with which the router has been
+         configured.
+      o  The All-Routers Multicast Addresses defined in section 2.7.1.
+
+3. Security Considerations
+
+   IPv6 addressing documents do not have any direct impact on Internet
+   infrastructure security.  Authentication of IPv6 packets is defined
+   in [AUTH].
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 17]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+4. IANA Considerations
+
+   The table and notes at http://www.isi.edu/in-
+   notes/iana/assignments/ipv6-address-space.txt should be replaced with
+   the following:
+
+   INTERNET PROTOCOL VERSION 6 ADDRESS SPACE
+
+   The initial assignment of IPv6 address space is as follows:
+
+   Allocation                            Prefix         Fraction of
+                                         (binary)       Address Space
+   -----------------------------------   --------       -------------
+   Unassigned (see Note 1 below)         0000 0000      1/256
+   Unassigned                            0000 0001      1/256
+   Reserved for NSAP Allocation          0000 001       1/128 [RFC1888]
+   Unassigned                            0000 01        1/64
+   Unassigned                            0000 1         1/32
+   Unassigned                            0001           1/16
+   Global Unicast                        001            1/8   [RFC2374]
+   Unassigned                            010            1/8
+   Unassigned                            011            1/8
+   Unassigned                            100            1/8
+   Unassigned                            101            1/8
+   Unassigned                            110            1/8
+   Unassigned                            1110           1/16
+   Unassigned                            1111 0         1/32
+   Unassigned                            1111 10        1/64
+   Unassigned                            1111 110       1/128
+   Unassigned                            1111 1110 0    1/512
+   Link-Local Unicast Addresses          1111 1110 10   1/1024
+   Site-Local Unicast Addresses          1111 1110 11   1/1024
+   Multicast Addresses                   1111 1111      1/256
+
+   Notes:
+
+   1. The "unspecified address", the "loopback address", and the IPv6
+      Addresses with Embedded IPv4 Addresses are assigned out of the
+      0000 0000 binary prefix space.
+
+   2. For now, IANA should limit its allocation of IPv6 unicast address
+      space to the range of addresses that start with binary value 001.
+      The rest of the global unicast address space (approximately 85% of
+      the IPv6 address space) is reserved for future definition and use,
+      and is not to be assigned by IANA at this time.
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 18]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+5.  References
+
+5.1  Normative References
+
+   [IPV6]    Deering, S. and R. Hinden, "Internet Protocol, Version 6
+             (IPv6) Specification", RFC 2460, December 1998.
+
+   [RFC2026] Bradner, S., "The Internet Standards Process -- Revision
+             3", BCP 9 , RFC 2026, October 1996.
+
+5.2  Informative References
+
+   [ANYCST]  Partridge, C., Mendez, T. and W. Milliken, "Host Anycasting
+             Service", RFC 1546, November 1993.
+
+   [AUTH]    Kent, S. and R. Atkinson, "IP Authentication Header", RFC
+             2402, November 1998.
+
+   [AGGR]    Hinden, R., O'Dell, M. and S. Deering, "An Aggregatable
+             Global Unicast Address Format", RFC 2374, July 1998.
+
+   [CIDR]    Fuller, V., Li, T., Yu, J. and K. Varadhan, "Classless
+             Inter-Domain Routing (CIDR): An Address Assignment and
+             Aggregation Strategy", RFC 1519, September 1993.
+
+   [ETHER]   Crawford, M., "Transmission of IPv6 Packets over Ethernet
+             Networks", RFC 2464, December 1998.
+
+   [EUI64]   IEEE, "Guidelines for 64-bit Global Identifier (EUI-64)
+             Registration Authority",
+             http://standards.ieee.org/regauth/oui/tutorials/EUI64.html,
+             March 1997.
+
+   [FDDI]    Crawford, M., "Transmission of IPv6 Packets over FDDI
+             Networks", RFC 2467, December 1998.
+
+   [MASGN]   Hinden, R. and S. Deering, "IPv6 Multicast Address
+             Assignments", RFC 2375, July 1998.
+
+   [NSAP]    Bound, J., Carpenter, B., Harrington, D., Houldsworth, J.
+             and A. Lloyd, "OSI NSAPs and IPv6", RFC 1888, August 1996.
+
+   [PRIV]    Narten, T. and R. Draves, "Privacy Extensions for Stateless
+             Address Autoconfiguration in IPv6", RFC 3041, January 2001.
+
+   [TOKEN]   Crawford, M., Narten, T. and S. Thomas, "Transmission of
+             IPv6 Packets over Token Ring Networks", RFC 2470, December
+             1998.
+
+
+
+Hinden & Deering            Standards Track                    [Page 19]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   [TRAN]    Gilligan, R. and E. Nordmark, "Transition Mechanisms for
+             IPv6 Hosts and Routers", RFC 2893, August 2000.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 20]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+APPENDIX A: Creating Modified EUI-64 format Interface Identifiers
+
+   Depending on the characteristics of a specific link or node there are
+   a number of approaches for creating Modified EUI-64 format interface
+   identifiers.  This appendix describes some of these approaches.
+
+Links or Nodes with IEEE EUI-64 Identifiers
+
+   The only change needed to transform an IEEE EUI-64 identifier to an
+   interface identifier is to invert the "u" (universal/local) bit.  For
+   example, a globally unique IEEE EUI-64 identifier of the form:
+
+   |0              1|1              3|3              4|4              6|
+   |0              5|6              1|2              7|8              3|
+   +----------------+----------------+----------------+----------------+
+   |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|
+   +----------------+----------------+----------------+----------------+
+
+   where "c" are the bits of the assigned company_id, "0" is the value
+   of the universal/local bit to indicate global scope, "g" is
+   individual/group bit, and "m" are the bits of the manufacturer-
+   selected extension identifier.  The IPv6 interface identifier would
+   be of the form:
+
+   |0              1|1              3|3              4|4              6|
+   |0              5|6              1|2              7|8              3|
+   +----------------+----------------+----------------+----------------+
+   |cccccc1gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|mmmmmmmmmmmmmmmm|
+   +----------------+----------------+----------------+----------------+
+
+   The only change is inverting the value of the universal/local bit.
+
+Links or Nodes with IEEE 802 48 bit MAC's
+
+   [EUI64] defines a method to create a IEEE EUI-64 identifier from an
+   IEEE 48bit MAC identifier.  This is to insert two octets, with
+   hexadecimal values of 0xFF and 0xFE, in the middle of the 48 bit MAC
+   (between the company_id and vendor supplied id).  For example, the 48
+   bit IEEE MAC with global scope:
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 21]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   |0              1|1              3|3              4|
+   |0              5|6              1|2              7|
+   +----------------+----------------+----------------+
+   |cccccc0gcccccccc|ccccccccmmmmmmmm|mmmmmmmmmmmmmmmm|
+   +----------------+----------------+----------------+
+
+   where "c" are the bits of the assigned company_id, "0" is the value
+   of the universal/local bit to indicate global scope, "g" is
+   individual/group bit, and "m" are the bits of the manufacturer-
+   selected extension identifier.  The interface identifier would be of
+   the form:
+
+   |0              1|1              3|3              4|4              6|
+   |0              5|6              1|2              7|8              3|
+   +----------------+----------------+----------------+----------------+
+   |cccccc1gcccccccc|cccccccc11111111|11111110mmmmmmmm|mmmmmmmmmmmmmmmm|
+   +----------------+----------------+----------------+----------------+
+
+   When IEEE 802 48bit MAC addresses are available (on an interface or a
+   node), an implementation may use them to create interface identifiers
+   due to their availability and uniqueness properties.
+
+Links with Other Kinds of Identifiers
+
+   There are a number of types of links that have link-layer interface
+   identifiers other than IEEE EIU-64 or IEEE 802 48-bit MACs.  Examples
+   include LocalTalk and Arcnet.  The method to create an Modified EUI-
+   64 format identifier is to take the link identifier (e.g., the
+   LocalTalk 8 bit node identifier) and zero fill it to the left.  For
+   example, a LocalTalk 8 bit node identifier of hexadecimal value 0x4F
+   results in the following interface identifier:
+
+   |0              1|1              3|3              4|4              6|
+   |0              5|6              1|2              7|8              3|
+   +----------------+----------------+----------------+----------------+
+   |0000000000000000|0000000000000000|0000000000000000|0000000001001111|
+   +----------------+----------------+----------------+----------------+
+
+   Note that this results in the universal/local bit set to "0" to
+   indicate local scope.
+
+Links without Identifiers
+
+   There are a number of links that do not have any type of built-in
+   identifier.  The most common of these are serial links and configured
+   tunnels.  Interface identifiers must be chosen that are unique within
+   a subnet-prefix.
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 22]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   When no built-in identifier is available on a link the preferred
+   approach is to use a global interface identifier from another
+   interface or one which is assigned to the node itself.  When using
+   this approach no other interface connecting the same node to the same
+   subnet-prefix may use the same identifier.
+
+   If there is no global interface identifier available for use on the
+   link the implementation needs to create a local-scope interface
+   identifier.  The only requirement is that it be unique within a
+   subnet prefix.  There are many possible approaches to select a
+   subnet-prefix-unique interface identifier.  These include:
+
+      Manual Configuration
+      Node Serial Number
+      Other node-specific token
+
+   The subnet-prefix-unique interface identifier should be generated in
+   a manner that it does not change after a reboot of a node or if
+   interfaces are added or deleted from the node.
+
+   The selection of the appropriate algorithm is link and implementation
+   dependent.  The details on forming interface identifiers are defined
+   in the appropriate "IPv6 over <link>" specification.  It is strongly
+   recommended that a collision detection algorithm be implemented as
+   part of any automatic algorithm.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 23]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+APPENDIX B: Changes from RFC-2373
+
+   The following changes were made from RFC-2373 "IP Version 6
+   Addressing Architecture":
+
+   -  Clarified text in section 2.2 to allow "::" to represent one or
+      more groups of 16 bits of zeros.
+   -  Changed uniqueness requirement of Interface Identifiers from
+      unique on a link to unique within a subnet prefix.  Also added a
+      recommendation that the same interface identifier not be assigned
+      to different machines on a link.
+   -  Change site-local format to make the subnet ID field 54-bit long
+      and remove the 38-bit zero's field.
+   -  Added description of multicast scop values and rules to handle the
+      reserved scop value 0.
+   -  Revised sections 2.4 and 2.5.6 to simplify and clarify how
+      different address types  are identified.  This was done to insure
+      that implementations do not build in any knowledge about global
+      unicast format prefixes.  Changes include:
+         o  Removed Format Prefix (FP) terminology
+         o  Revised list of address types to only include exceptions to
+            global unicast and a singe entry that identifies everything
+            else as Global Unicast.
+         o  Removed list of defined prefix exceptions from section 2.5.6
+            as it is now the main part of section 2.4.
+   -  Clarified text relating to EUI-64 identifiers to distinguish
+      between IPv6's "Modified EUI-64 format" identifiers and IEEE EUI-
+      64 identifiers.
+   -  Combined the sections on the Global Unicast Addresses and NSAP
+      Addresses into a single section on Global Unicast Addresses,
+      generalized the Global Unicast format, and cited [AGGR] and [NSAP]
+      as examples.
+   -  Reordered sections 2.5.4 and 2.5.5.
+   -  Removed section 2.7.2 Assignment of New IPv6 Multicast Addresses
+      because this is being redefined elsewhere.
+   -  Added an IANA considerations section that updates the IANA IPv6
+      address allocations and documents the NSAP and AGGR allocations.
+   -  Added clarification that the "IPv4-compatible IPv6 address" must
+      use global IPv4 unicast addresses.
+   -  Divided references in to normative and non-normative sections.
+   -  Added reference to [PRIV] in section 2.5.1
+   -  Added clarification that routers must not forward multicast
+      packets outside of the scope indicated in the multicast address.
+   -  Added clarification that routers must not forward packets with
+       source address of the unspecified address.
+   -  Added clarification that routers must drop packets received on an
+      interface with destination address of loopback.
+   -  Clarified the definition of IPv4-mapped addresses.
+
+
+
+Hinden & Deering            Standards Track                    [Page 24]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+   -  Removed the ABNF Description of Text Representations Appendix.
+   -  Removed the address block reserved for IPX addresses.
+   -  Multicast scope changes:
+         o  Changed name of scope value 1 from "node-local" to
+            "interface-local"
+         o  Defined scope value 4 as "admin-local"
+   -  Corrected reference to RFC1933 and updated references.
+   -  Many small changes to clarify and make the text more consistent.
+
+Authors' Addresses
+
+   Robert M. Hinden
+   Nokia
+   313 Fairchild Drive
+   Mountain View, CA 94043
+   USA
+
+   Phone: +1 650 625-2004
+   EMail: hinden@iprg.nokia.com
+
+
+   Stephen E. Deering
+   Cisco Systems, Inc.
+   170 West Tasman Drive
+   San Jose, CA 95134-1706
+   USA
+
+   Phone: +1 408 527-8213
+   EMail: deering@cisco.com
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 25]
+\f
+RFC 3513              IPv6 Addressing Architecture            April 2003
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assigns.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Hinden & Deering            Standards Track                    [Page 26]
+\f
+
+
old mode 100644 (file)
new mode 100755 (executable)
index 5e0be2a..f65690c
-\r
-\r
-\r
-\r
-\r
-\r
-Network Working Group                                         S. Thomson\r
-Request for Comments: 3596                                         Cisco\r
-Obsoletes: 3152, 1886                                         C. Huitema\r
-Category: Standards Track                                      Microsoft\r
-                                                              V. Ksinant\r
-                                                                   6WIND\r
-                                                              M. Souissi\r
-                                                                   AFNIC\r
-                                                            October 2003\r
-\r
-\r
-                 DNS Extensions to Support IP Version 6\r
-\r
-Status of this Memo\r
-\r
-   This document specifies an Internet standards track protocol for the\r
-   Internet community, and requests discussion and suggestions for\r
-   improvements.  Please refer to the current edition of the "Internet\r
-   Official Protocol Standards" (STD 1) for the standardization state\r
-   and status of this protocol.  Distribution of this memo is unlimited.\r
-\r
-Copyright Notice\r
-\r
-   Copyright (C) The Internet Society (2003).  All Rights Reserved.\r
-\r
-Abstract\r
-\r
-   This document defines the changes that need to be made to the Domain\r
-   Name System (DNS) to support hosts running IP version 6 (IPv6).  The\r
-   changes include a resource record type to store an IPv6 address, a\r
-   domain to support lookups based on an IPv6 address, and updated\r
-   definitions of existing query types that return Internet addresses as\r
-   part of additional section processing.  The extensions are designed\r
-   to be compatible with existing applications and, in particular, DNS\r
-   implementations themselves.\r
-\r
-Table of Contents\r
-\r
-   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2\r
-   2.  New resource record definition and domain. . . . . . . . . . .  2\r
-       2.1.  AAAA record type . . . . . . . . . . . . . . . . . . . .  3\r
-       2.2.  AAAA data format . . . . . . . . . . . . . . . . . . . .  3\r
-       2.3.  AAAA query . . . . . . . . . . . . . . . . . . . . . . .  3\r
-       2.4.  Textual format of AAAA records . . . . . . . . . . . . .  3\r
-       2.5.  IP6.ARPA domain. . . . . . . . . . . . . . . . . . . . .  3\r
-   3.  Modifications to existing query types. . . . . . . . . . . . .  4\r
-   4.  Security Considerations. . . . . . . . . . . . . . . . . . . .  4\r
-   5.  IANA Considerations. . . . . . . . . . . . . . . . . . . . . .  4\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 1]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-   6.  Intellectual Property Statement. . . . . . . . . . . . . . . .  4\r
-   Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . .  5\r
-   Appendix A: Changes from RFC 1886. . . . . . . . . . . . . . . . .  6\r
-   Normative References . . . . . . . . . . . . . . . . . . . . . . .  6\r
-   Informative References . . . . . . . . . . . . . . . . . . . . . .  6\r
-   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .  7\r
-   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .  8\r
-\r
-1. Introduction\r
-\r
-   Current support for the storage of Internet addresses in the Domain\r
-   Name System (DNS) [1,2] cannot easily be extended to support IPv6\r
-   addresses [3] since applications assume that address queries return\r
-   32-bit IPv4 addresses only.\r
-\r
-   To support the storage of IPv6 addresses in the DNS, this document\r
-   defines the following extensions:\r
-\r
-      o A resource record type is defined to map a domain name to an\r
-        IPv6 address.\r
-\r
-      o A domain is defined to support lookups based on address.\r
-\r
-      o Existing queries that perform additional section processing to\r
-        locate IPv4 addresses are redefined to perform additional\r
-        section processing on both IPv4 and IPv6 addresses.\r
-\r
-   The changes are designed to be compatible with existing software.\r
-   The existing support for IPv4 addresses is retained.  Transition\r
-   issues related to the co-existence of both IPv4 and IPv6 addresses in\r
-   the DNS are discussed in [4].\r
-\r
-   The IP protocol version used for querying resource records is\r
-   independent of the protocol version of the resource records; e.g.,\r
-   IPv4 transport can be used to query IPv6 records and vice versa.\r
-\r
-   This document combines RFC 1886 [5] and changes to RFC 1886 made by\r
-   RFC 3152 [6], obsoleting both.  Changes mainly consist in replacing\r
-   the IP6.INT domain by IP6.ARPA as defined in RFC 3152.\r
-\r
-2. New resource record definition and domain\r
-\r
-   A record type is defined to store a host's IPv6 address.  A host that\r
-   has more than one IPv6 address must have more than one such record.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 2]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-2.1 AAAA record type\r
-\r
-   The AAAA resource record type is a record specific to the Internet\r
-   class that stores a single IPv6 address.\r
-\r
-   The IANA assigned value of the type is 28 (decimal).\r
-\r
-2.2 AAAA data format\r
-\r
-   A 128 bit IPv6 address is encoded in the data portion of an AAAA\r
-   resource record in network byte order (high-order byte first).\r
-\r
-2.3 AAAA query\r
-\r
-   An AAAA query for a specified domain name in the Internet class\r
-   returns all associated AAAA resource records in the answer section of\r
-   a response.\r
-\r
-   A type AAAA query does not trigger additional section processing.\r
-\r
-2.4 Textual format of AAAA records\r
-\r
-   The textual representation of the data portion of the AAAA resource\r
-   record used in a master database file is the textual representation\r
-   of an IPv6 address as defined in [3].\r
-\r
-2.5 IP6.ARPA Domain\r
-\r
-   A special domain is defined to look up a record given an IPv6\r
-   address.  The intent of this domain is to provide a way of mapping an\r
-   IPv6 address to a host name, although it may be used for other\r
-   purposes as well.  The domain is rooted at IP6.ARPA.\r
-\r
-   An IPv6 address is represented as a name in the IP6.ARPA domain by a\r
-   sequence of nibbles separated by dots with the suffix ".IP6.ARPA".\r
-   The sequence of nibbles is encoded in reverse order, i.e., the\r
-   low-order nibble is encoded first, followed by the next low-order\r
-   nibble and so on.  Each nibble is represented by a hexadecimal digit.\r
-   For example, the reverse lookup domain name corresponding to the\r
-   address\r
-\r
-       4321:0:1:2:3:4:567:89ab\r
-\r
-   would be\r
-\r
-   b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.\r
-                                                                  ARPA.\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 3]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-3. Modifications to existing query types\r
-\r
-   All existing query types that perform type A additional section\r
-   processing, i.e., name server (NS), location of services (SRV) and\r
-   mail exchange (MX) query types, must be redefined to perform both\r
-   type A and type AAAA additional section processing.  These\r
-   definitions mean that a name server must add any relevant IPv4\r
-   addresses and any relevant IPv6 addresses available locally to the\r
-   additional section of a response when processing any one of the above\r
-   queries.\r
-\r
-4. Security Considerations\r
-\r
-   Any information obtained from the DNS must be regarded as unsafe\r
-   unless techniques specified in [7] or [8] are used.  The definitions\r
-   of the AAAA record type and of the IP6.ARPA domain do not change the\r
-   model for use of these techniques.\r
-\r
-   So, this specification is not believed to cause any new security\r
-   problems, nor to solve any existing ones.\r
-\r
-5. IANA Considerations\r
-\r
-   There are no IANA assignments to be performed.\r
-\r
-6. Intellectual Property Statement\r
-\r
-   The IETF takes no position regarding the validity or scope of any\r
-   intellectual property or other rights that might be claimed to\r
-   pertain to the implementation or use of the technology described in\r
-   this document or the extent to which any license under such rights\r
-   might or might not be available; neither does it represent that it\r
-   has made any effort to identify any such rights.  Information on the\r
-   IETF's procedures with respect to rights in standards-track and\r
-   standards-related documentation can be found in BCP-11.  Copies of\r
-   claims of rights made available for publication and any assurances of\r
-   licenses to be made available, or the result of an attempt made to\r
-   obtain a general license or permission for the use of such\r
-   proprietary rights by implementors or users of this specification can\r
-   be obtained from the IETF Secretariat.\r
-\r
-   The IETF invites any interested party to bring to its attention any\r
-   copyrights, patents or patent applications, or other proprietary\r
-   rights which may cover technology that may be required to practice\r
-   this standard.  Please address the information to the IETF Executive\r
-   Director.\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 4]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-Acknowledgments\r
-\r
-   Vladimir Ksinant and Mohsen Souissi would like to thank Sebastien\r
-   Barbin (IRISA), Luc Beloeil (France Telecom R&D), Jean-Mickael Guerin\r
-   (6WIND), Vincent Levigneron (AFNIC), Alain Ritoux (6WIND), Frederic\r
-   Roudaut (IRISA) and G6 group for their help during the RFC 1886\r
-   Interop tests sessions.\r
-\r
-   Many thanks to Alain Durand and Olafur Gudmundsson for their support.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 5]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-Appendix A: Changes from RFC 1886\r
-\r
-   The following changes were made from RFC 1886 "DNS Extensions to\r
-   support IP version 6":\r
-\r
-   - Replaced the "IP6.INT" domain by "IP6.ARPA".\r
-   - Mentioned SRV query types in section 3 "MODIFICATIONS TO\r
-     EXISTING QUERY TYPES"\r
-   - Added security considerations.\r
-   - Updated references :\r
-     * From RFC 1884 to RFC 3513 (IP Version 6 Addressing\r
-       Architecture).\r
-     * From "work in progress" to RFC 2893 (Transition Mechanisms for\r
-       IPv6 Hosts and Routers).\r
-     * Added reference to RFC 1886, RFC 3152, RFC 2535 and RFC 2845.\r
-   - Updated document abstract\r
-   - Added table of contents\r
-   - Added full copyright statement\r
-   - Added IANA considerations section\r
-   - Added Intellectual Property Statement\r
-\r
-Normative References\r
-\r
-   [1]  Mockapetris, P., "Domain Names - Concepts and Facilities", STD\r
-        13, RFC 1034, November 1987.\r
-\r
-   [2]  Mockapetris, P., "Domain Names - Implementation and\r
-        Specification", STD 13, RFC 1035, November 1987.\r
-\r
-   [3]  Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6)\r
-        Addressing Architecture", RFC 3513, April 2003.\r
-\r
-Informative References\r
-\r
-   [4]  Gilligan, R. and E. Nordmark, "Transition Mechanisms for IPv6\r
-        Hosts and Routers", RFC 2893, August 2000.\r
-\r
-   [5]  Thomson, S. and C. Huitema, "DNS Extensions to support IP\r
-        version 6", RFC 1886, December 1995.\r
-\r
-   [6]  Bush, R., "Delegation of IP6.ARPA", BCP 49, RFC 3152, August\r
-        2001.\r
-\r
-   [7]  Eastlake, D., "Domain Name System Security Extensions", RFC\r
-        2535, March 1999\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 6]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-   [8]  Vixie, P., Gudmundsson, O., Eastlake, D. and B. Wellington,\r
-        "Secret Key Transaction Authentication for DNS (TSIG)", RFC\r
-        2845, May 2000.\r
-\r
-Authors' Addresses\r
-\r
-   Susan Thomson\r
-   Cisco Systems\r
-   499 Thornall Street, 8th floor\r
-   Edison, NJ 08837\r
-\r
-   Phone: +1 732-635-3086\r
-   EMail:  sethomso@cisco.com\r
-\r
-\r
-   Christian Huitema\r
-   Microsoft Corporation\r
-   One Microsoft Way\r
-   Redmond, WA 98052-6399\r
-\r
-   EMail: huitema@microsoft.com\r
-\r
-\r
-   Vladimir Ksinant\r
-   6WIND S.A.\r
-   Immeuble Central Gare - Bat.C\r
-   1, place Charles de Gaulle\r
-   78180, Montigny-Le-Bretonneux - France\r
-\r
-   Phone: +33 1 39 30 92 36\r
-   EMail: vladimir.ksinant@6wind.com\r
-\r
-\r
-   Mohsen Souissi\r
-   AFNIC\r
-   Immeuble International\r
-   2, rue Stephenson,\r
-   78181, Saint-Quentin en Yvelines Cedex - France\r
-\r
-   Phone: +33 1 39 30 83 40\r
-   EMail: Mohsen.Souissi@nic.fr\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 7]\r
-\f\r
-RFC 3596             DNS Extensions to Support IPv6         October 2003\r
-\r
-\r
-Full Copyright Statement\r
-\r
-   Copyright (C) The Internet Society (2003).  All Rights Reserved.\r
-\r
-   This document and translations of it may be copied and furnished to\r
-   others, and derivative works that comment on or otherwise explain it\r
-   or assist in its implementation may be prepared, copied, published\r
-   and distributed, in whole or in part, without restriction of any\r
-   kind, provided that the above copyright notice and this paragraph are\r
-   included on all such copies and derivative works.  However, this\r
-   document itself may not be modified in any way, such as by removing\r
-   the copyright notice or references to the Internet Society or other\r
-   Internet organizations, except as needed for the purpose of\r
-   developing Internet standards in which case the procedures for\r
-   copyrights defined in the Internet Standards process must be\r
-   followed, or as required to translate it into languages other than\r
-   English.\r
-\r
-   The limited permissions granted above are perpetual and will not be\r
-   revoked by the Internet Society or its successors or assignees.\r
-\r
-   This document and the information contained herein is provided on an\r
-   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING\r
-   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING\r
-   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION\r
-   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF\r
-   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.\r
-\r
-Acknowledgement\r
-\r
-   Funding for the RFC Editor function is currently provided by the\r
-   Internet Society.\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-Thomson, et al.             Standards Track                     [Page 8]\r
-\f\r
+
+
+
+
+
+
+Network Working Group                                         S. Thomson
+Request for Comments: 3596                                         Cisco
+Obsoletes: 3152, 1886                                         C. Huitema
+Category: Standards Track                                      Microsoft
+                                                              V. Ksinant
+                                                                   6WIND
+                                                              M. Souissi
+                                                                   AFNIC
+                                                            October 2003
+
+
+                 DNS Extensions to Support IP Version 6
+
+Status of this Memo
+
+   This document specifies an Internet standards track protocol for the
+   Internet community, and requests discussion and suggestions for
+   improvements.  Please refer to the current edition of the "Internet
+   Official Protocol Standards" (STD 1) for the standardization state
+   and status of this protocol.  Distribution of this memo is unlimited.
+
+Copyright Notice
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+Abstract
+
+   This document defines the changes that need to be made to the Domain
+   Name System (DNS) to support hosts running IP version 6 (IPv6).  The
+   changes include a resource record type to store an IPv6 address, a
+   domain to support lookups based on an IPv6 address, and updated
+   definitions of existing query types that return Internet addresses as
+   part of additional section processing.  The extensions are designed
+   to be compatible with existing applications and, in particular, DNS
+   implementations themselves.
+
+Table of Contents
+
+   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  2
+   2.  New resource record definition and domain. . . . . . . . . . .  2
+       2.1.  AAAA record type . . . . . . . . . . . . . . . . . . . .  3
+       2.2.  AAAA data format . . . . . . . . . . . . . . . . . . . .  3
+       2.3.  AAAA query . . . . . . . . . . . . . . . . . . . . . . .  3
+       2.4.  Textual format of AAAA records . . . . . . . . . . . . .  3
+       2.5.  IP6.ARPA domain. . . . . . . . . . . . . . . . . . . . .  3
+   3.  Modifications to existing query types. . . . . . . . . . . . .  4
+   4.  Security Considerations. . . . . . . . . . . . . . . . . . . .  4
+   5.  IANA Considerations. . . . . . . . . . . . . . . . . . . . . .  4
+
+
+
+Thomson, et al.             Standards Track                     [Page 1]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+   6.  Intellectual Property Statement. . . . . . . . . . . . . . . .  4
+   Acknowledgments. . . . . . . . . . . . . . . . . . . . . . . . . .  5
+   Appendix A: Changes from RFC 1886. . . . . . . . . . . . . . . . .  6
+   Normative References . . . . . . . . . . . . . . . . . . . . . . .  6
+   Informative References . . . . . . . . . . . . . . . . . . . . . .  6
+   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . .  7
+   Full Copyright Statement . . . . . . . . . . . . . . . . . . . . .  8
+
+1. Introduction
+
+   Current support for the storage of Internet addresses in the Domain
+   Name System (DNS) [1,2] cannot easily be extended to support IPv6
+   addresses [3] since applications assume that address queries return
+   32-bit IPv4 addresses only.
+
+   To support the storage of IPv6 addresses in the DNS, this document
+   defines the following extensions:
+
+      o A resource record type is defined to map a domain name to an
+        IPv6 address.
+
+      o A domain is defined to support lookups based on address.
+
+      o Existing queries that perform additional section processing to
+        locate IPv4 addresses are redefined to perform additional
+        section processing on both IPv4 and IPv6 addresses.
+
+   The changes are designed to be compatible with existing software.
+   The existing support for IPv4 addresses is retained.  Transition
+   issues related to the co-existence of both IPv4 and IPv6 addresses in
+   the DNS are discussed in [4].
+
+   The IP protocol version used for querying resource records is
+   independent of the protocol version of the resource records; e.g.,
+   IPv4 transport can be used to query IPv6 records and vice versa.
+
+   This document combines RFC 1886 [5] and changes to RFC 1886 made by
+   RFC 3152 [6], obsoleting both.  Changes mainly consist in replacing
+   the IP6.INT domain by IP6.ARPA as defined in RFC 3152.
+
+2. New resource record definition and domain
+
+   A record type is defined to store a host's IPv6 address.  A host that
+   has more than one IPv6 address must have more than one such record.
+
+
+
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 2]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+2.1 AAAA record type
+
+   The AAAA resource record type is a record specific to the Internet
+   class that stores a single IPv6 address.
+
+   The IANA assigned value of the type is 28 (decimal).
+
+2.2 AAAA data format
+
+   A 128 bit IPv6 address is encoded in the data portion of an AAAA
+   resource record in network byte order (high-order byte first).
+
+2.3 AAAA query
+
+   An AAAA query for a specified domain name in the Internet class
+   returns all associated AAAA resource records in the answer section of
+   a response.
+
+   A type AAAA query does not trigger additional section processing.
+
+2.4 Textual format of AAAA records
+
+   The textual representation of the data portion of the AAAA resource
+   record used in a master database file is the textual representation
+   of an IPv6 address as defined in [3].
+
+2.5 IP6.ARPA Domain
+
+   A special domain is defined to look up a record given an IPv6
+   address.  The intent of this domain is to provide a way of mapping an
+   IPv6 address to a host name, although it may be used for other
+   purposes as well.  The domain is rooted at IP6.ARPA.
+
+   An IPv6 address is represented as a name in the IP6.ARPA domain by a
+   sequence of nibbles separated by dots with the suffix ".IP6.ARPA".
+   The sequence of nibbles is encoded in reverse order, i.e., the
+   low-order nibble is encoded first, followed by the next low-order
+   nibble and so on.  Each nibble is represented by a hexadecimal digit.
+   For example, the reverse lookup domain name corresponding to the
+   address
+
+       4321:0:1:2:3:4:567:89ab
+
+   would be
+
+   b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.
+                                                                  ARPA.
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 3]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+3. Modifications to existing query types
+
+   All existing query types that perform type A additional section
+   processing, i.e., name server (NS), location of services (SRV) and
+   mail exchange (MX) query types, must be redefined to perform both
+   type A and type AAAA additional section processing.  These
+   definitions mean that a name server must add any relevant IPv4
+   addresses and any relevant IPv6 addresses available locally to the
+   additional section of a response when processing any one of the above
+   queries.
+
+4. Security Considerations
+
+   Any information obtained from the DNS must be regarded as unsafe
+   unless techniques specified in [7] or [8] are used.  The definitions
+   of the AAAA record type and of the IP6.ARPA domain do not change the
+   model for use of these techniques.
+
+   So, this specification is not believed to cause any new security
+   problems, nor to solve any existing ones.
+
+5. IANA Considerations
+
+   There are no IANA assignments to be performed.
+
+6. Intellectual Property Statement
+
+   The IETF takes no position regarding the validity or scope of any
+   intellectual property or other rights that might be claimed to
+   pertain to the implementation or use of the technology described in
+   this document or the extent to which any license under such rights
+   might or might not be available; neither does it represent that it
+   has made any effort to identify any such rights.  Information on the
+   IETF's procedures with respect to rights in standards-track and
+   standards-related documentation can be found in BCP-11.  Copies of
+   claims of rights made available for publication and any assurances of
+   licenses to be made available, or the result of an attempt made to
+   obtain a general license or permission for the use of such
+   proprietary rights by implementors or users of this specification can
+   be obtained from the IETF Secretariat.
+
+   The IETF invites any interested party to bring to its attention any
+   copyrights, patents or patent applications, or other proprietary
+   rights which may cover technology that may be required to practice
+   this standard.  Please address the information to the IETF Executive
+   Director.
+
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 4]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+Acknowledgments
+
+   Vladimir Ksinant and Mohsen Souissi would like to thank Sebastien
+   Barbin (IRISA), Luc Beloeil (France Telecom R&D), Jean-Mickael Guerin
+   (6WIND), Vincent Levigneron (AFNIC), Alain Ritoux (6WIND), Frederic
+   Roudaut (IRISA) and G6 group for their help during the RFC 1886
+   Interop tests sessions.
+
+   Many thanks to Alain Durand and Olafur Gudmundsson for their support.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 5]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+Appendix A: Changes from RFC 1886
+
+   The following changes were made from RFC 1886 "DNS Extensions to
+   support IP version 6":
+
+   - Replaced the "IP6.INT" domain by "IP6.ARPA".
+   - Mentioned SRV query types in section 3 "MODIFICATIONS TO
+     EXISTING QUERY TYPES"
+   - Added security considerations.
+   - Updated references :
+     * From RFC 1884 to RFC 3513 (IP Version 6 Addressing
+       Architecture).
+     * From "work in progress" to RFC 2893 (Transition Mechanisms for
+       IPv6 Hosts and Routers).
+     * Added reference to RFC 1886, RFC 3152, RFC 2535 and RFC 2845.
+   - Updated document abstract
+   - Added table of contents
+   - Added full copyright statement
+   - Added IANA considerations section
+   - Added Intellectual Property Statement
+
+Normative References
+
+   [1]  Mockapetris, P., "Domain Names - Concepts and Facilities", STD
+        13, RFC 1034, November 1987.
+
+   [2]  Mockapetris, P., "Domain Names - Implementation and
+        Specification", STD 13, RFC 1035, November 1987.
+
+   [3]  Hinden, R. and S. Deering, "Internet Protocol Version 6 (IPv6)
+        Addressing Architecture", RFC 3513, April 2003.
+
+Informative References
+
+   [4]  Gilligan, R. and E. Nordmark, "Transition Mechanisms for IPv6
+        Hosts and Routers", RFC 2893, August 2000.
+
+   [5]  Thomson, S. and C. Huitema, "DNS Extensions to support IP
+        version 6", RFC 1886, December 1995.
+
+   [6]  Bush, R., "Delegation of IP6.ARPA", BCP 49, RFC 3152, August
+        2001.
+
+   [7]  Eastlake, D., "Domain Name System Security Extensions", RFC
+        2535, March 1999
+
+
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 6]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+   [8]  Vixie, P., Gudmundsson, O., Eastlake, D. and B. Wellington,
+        "Secret Key Transaction Authentication for DNS (TSIG)", RFC
+        2845, May 2000.
+
+Authors' Addresses
+
+   Susan Thomson
+   Cisco Systems
+   499 Thornall Street, 8th floor
+   Edison, NJ 08837
+
+   Phone: +1 732-635-3086
+   EMail:  sethomso@cisco.com
+
+
+   Christian Huitema
+   Microsoft Corporation
+   One Microsoft Way
+   Redmond, WA 98052-6399
+
+   EMail: huitema@microsoft.com
+
+
+   Vladimir Ksinant
+   6WIND S.A.
+   Immeuble Central Gare - Bat.C
+   1, place Charles de Gaulle
+   78180, Montigny-Le-Bretonneux - France
+
+   Phone: +33 1 39 30 92 36
+   EMail: vladimir.ksinant@6wind.com
+
+
+   Mohsen Souissi
+   AFNIC
+   Immeuble International
+   2, rue Stephenson,
+   78181, Saint-Quentin en Yvelines Cedex - France
+
+   Phone: +33 1 39 30 83 40
+   EMail: Mohsen.Souissi@nic.fr
+
+
+
+
+
+
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 7]
+\f
+RFC 3596             DNS Extensions to Support IPv6         October 2003
+
+
+Full Copyright Statement
+
+   Copyright (C) The Internet Society (2003).  All Rights Reserved.
+
+   This document and translations of it may be copied and furnished to
+   others, and derivative works that comment on or otherwise explain it
+   or assist in its implementation may be prepared, copied, published
+   and distributed, in whole or in part, without restriction of any
+   kind, provided that the above copyright notice and this paragraph are
+   included on all such copies and derivative works.  However, this
+   document itself may not be modified in any way, such as by removing
+   the copyright notice or references to the Internet Society or other
+   Internet organizations, except as needed for the purpose of
+   developing Internet standards in which case the procedures for
+   copyrights defined in the Internet Standards process must be
+   followed, or as required to translate it into languages other than
+   English.
+
+   The limited permissions granted above are perpetual and will not be
+   revoked by the Internet Society or its successors or assignees.
+
+   This document and the information contained herein is provided on an
+   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+
+Acknowledgement
+
+   Funding for the RFC Editor function is currently provided by the
+   Internet Society.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Thomson, et al.             Standards Track                     [Page 8]
+\f
diff --git a/errors/Catalan/ERR_ACCESS_DENIED b/errors/Catalan/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 556afac..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Acc&eacute;s no autoritzat.
-</STRONG>
-<P>
-La configuració del control d'acc&eacute;s impedeix realitzar
-aquesta operaci&oacute;. Contacteu amb el vostre prove&iuml;dor
-de servei si creieu que es tracta d'un error.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Catalan/ERR_CACHE_ACCESS_DENIED b/errors/Catalan/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index 5f5ca1b..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Acc&eacute;s denegat a la cache</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Acc&eacute;s denegat a la cache</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Acc&eacute;s denegat a la <i>cache</i>.
-</STRONG>
-</UL>
-</P>
-
-<P>L'acc&eacute;s a l'objecte:
-<PRE>    %U</PRE>
-no est&agrave; perm&egrave;s sense autentificaci&oacute; pr&egrave;via.
-</P>
-
-<P>
-Cal que el vostre navegador tingui suport per a autentificaci&oacute;.
-Podeu usar el Netscape versió 2.0 o superior o l'Internet Explorer 3.0,
-o un navegador que compleixi l'est&agrave;ndar HTTP/1.1 - Contacteu amb
-el vostre <A HREF="mailto:%w%W">administrador de <i>cache</i></a> si teniu
-dificultats per a autentificar-vos o <A
-HREF="http://%h/cgi-bin/chpasswd.cgi">canvieu</a> la vostra contrasenya.
-</P>
diff --git a/errors/Catalan/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Catalan/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index 37902bb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Acc&eacute;s denegat a l'administraci&oacute; de la cache</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>ERROR: Acc&eacute;s denegat a l'administraci&oacute; de la cache</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Acc&eacute;s denegat a l'administraci&oacute; de la cache.
-</STRONG>
-</UL>
-</P>
-
-<P>L'acc&eacute;s a l'objecte:
-<PRE>    %U</PRE>
-no est&agrave; perm&egrave;s sense autentificaci&oacute; pr&egrave;via.
-</P>
-Cal que el vostre navegador tingui suport per a autentificaci&oacute;.
-Podeu usar el Netscape versió 2.0 o superior o l'Internet Explorer 3.0,
-o un navegador que compleixi l'est&agrave;ndar HTTP/1.1 - Contacteu amb
-el vostre <A HREF="mailto:%w%W">administrador de <i>cache</i></a>. Si
-vosaltres <em>sou</em> l'administrador d'aquesta <i>cache</i>, llegiu-vos
-la documentació de l'Squid en l'apartat de l'administrador de la
-<i>cache</i>.
-</P>
diff --git a/errors/Catalan/ERR_CANNOT_FORWARD b/errors/Catalan/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index a4c5e60..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-No ha estat possible de reenviar aquesta petici&oacute;
-</STRONG>
-</UL>
-<P>
-Aquesta petició no s'ha pogut enviar al servidor d'origen o
-a una <i>cache</i> superior. La causa m&eacute;s probable per
-aquest error &eacute;s:
-<UL>
-<LI>L'administrador de la <i>cache</i> no permet connexions
-directes amb els servidors d'origen, o
-<LI>No hi ha cap <i>cache</i> superior disponible.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_CONNECT_FAIL b/errors/Catalan/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index e303974..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Ha fallat la connexi&oacute;.
-</STRONG>
-</UL>
-
-<P>
-El sistema diu:
-<PRE><I>    %E</I></PRE>
-
-<P>
-El servidor o la xarxa remota no es troben disponibles.
-Torneu-ho a provar d'aqui a una estona. 
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_DNS_FAIL b/errors/Catalan/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 5bce8d9..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<BLOCKQUOTE>
-No ha estat possible determinar l'adre&ccedil;a IP del servidor
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-El servidor de DNS diu:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Aix&ograce; vol dir que:
-<PRE>
- La <i>cache<i> no ha pogut resoldre el nom del servidor que heu escrit
- a la URL. Comproveu si aquesta adre&ccedil;a &eacute;s correcta.
-</PRE>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_ESI b/errors/Catalan/ERR_ESI
deleted file mode 100644 (file)
index b78db43..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
diff --git a/errors/Catalan/ERR_FORWARDING_DENIED b/errors/Catalan/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 9c9ba7a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Reenviament denegat.
-</STRONG>
-</UL>
-
-<P>
-Aquesta <i>cache</i> no reenviar&agrave; la vostra petici&oacute;
-donat que est&agrave; for&ccedil;ant una connexi&oacute; a una <i>cache</i>
-germana. Potser que el client %i sigui una <i>cache</i> mal configurada.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_FTP_DISABLED b/errors/Catalan/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 5fbabb1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-El protocol FTP est&agrave; deshabilitat.
-</STRONG>
-</UL>
-
-<P>
-Aquesta <i>cache</i> no accepta connexions FTP.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_FTP_FAILURE b/errors/Catalan/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 795a696..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-S'ha produ&iuml;t un error FTP mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_FTP_FORBIDDEN b/errors/Catalan/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 2f26f6a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-S'ha produ&iuml;t un error en l'autentificaci&oacute; FTP
-mentre s'intentava llegir la URL
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_FTP_NOT_FOUND b/errors/Catalan/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index d1f4c8a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-URL:
-<A HREF="%U">%U</A>
-<P>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Aquest error pot ser causat per una URL del protocol FTP amb
-un cam&iacute; absolut (que no compleix amb la RFC 1738). Si aquesta
-n'&eacute;s la causa, trobareu el fitxer desitjat a <A HREF="%B">%B</A>.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_FTP_PUT_CREATED b/errors/Catalan/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index 7534410..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>Comanda FTP PUT executada amb &egrave;xit: Fitxer creat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operaci&oacute; completada</H1>
-<H2>Fitxer creat</H2>
-<HR noshade size="1px">
diff --git a/errors/Catalan/ERR_FTP_PUT_ERROR b/errors/Catalan/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index 21d2163..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Ha fallat l'enviament del fitxer FTP</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>Ha fallat la comanda FTP d'enviament de fitxer</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava la comanda PUT a la URL:
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-i ha rebut aquesta resposta:
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-<PRE>
-Verifiqueu cam&iacute;, permisos, espai de disc i proveu de nou.
-</PRE>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_FTP_PUT_MODIFIED b/errors/Catalan/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index e9fb457..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>Comanda FTP PUT completada amb &eacute;xit: Fitxer actualitzat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operaci&oacute; completada</H1>
-<H2>Fitxer actualitzat</H2>
-<HR noshade size="1px">
diff --git a/errors/Catalan/ERR_FTP_UNAVAILABLE b/errors/Catalan/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index e74a6f4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-El servidor FTP estava massa ocupat quan intentava mostrar la URL:
-<A HREF="%U">%U</A>
-<P>
-La <i>cache</i> ha enviat la comanda FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-i ha rebut aquesta resposta:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A
-HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_ICAP_FAILURE b/errors/Catalan/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/Catalan/ERR_INVALID_REQ b/errors/Catalan/ERR_INVALID_REQ
deleted file mode 100644 (file)
index cc0dd79..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<PRE>
-%R
-</PRE>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Petici&oacute; no v&agrave;lida
-</STRONG>
-</UL>
-
-<P>
-Algun camp de la petici&oacute; HTTP no &eacute;s v&agrave;lid. Causes probables:
-<UL>
-<LI>M&egrave;tode de petici&oacute; desconegut o absent.
-<LI>no hi ha URL.
-<LI>Falta l'identificador HTTP (HTTP/1.0).   
-<LI>La petici&ocute; &eacute;s massa llarga.
-<LI>Falta el camp <i>Content-Length</i>.
-<LI>Car&agrave;cter no perm&egrave;s en el nom del servidor.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_INVALID_RESP b/errors/Catalan/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 960968c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Catalan/ERR_INVALID_URL b/errors/Catalan/ERR_INVALID_URL
deleted file mode 100644 (file)
index 0245995..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-URL incorrecte.
-</STRONG>
-</UL>
-
-<P>
-Alguna part de la URL no &eacute;s correcte.  Possibles problemes:
-<UL>
-<LI>Protocol d'acc&eacute;s absent o incorrecte ( http:// o similar )
-<LI>Falta el nom del servidor.
-<LI>La URL cont&eacute; un doble car&agrave;cter d'escapament.
-<LI>Car&agrave;cter no perm&egrave;s en el nom del servidor.
-</UL>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_LIFETIME_EXP b/errors/Catalan/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index cabc9dd..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-La connexi&oacute; ha excedit el temps m&agrave;xim
-</STRONG>
-</UL>
-
-<P>
-La <i>cache</i> ha finalitzat la connexi&oacute; perque aquesta ha
-excedit el temps m&agrave;xim perm&egrave;s.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_NO_RELAY b/errors/Catalan/ERR_NO_RELAY
deleted file mode 100644 (file)
index 2a664fa..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-No hi ha reenviament de protocol WAIS
-</STRONG>
-</UL>
-
-<P>
-No hi ha un reenviador de protocol WAIS per a aquesta <i>cache</i>.
-Comenta-li a l'administrador.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_ONLY_IF_CACHED_MISS b/errors/Catalan/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index c5b82b6..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-S'ha especificat una directiva <code>only-if-cached</code> i no s'ha trobat un document v&agrave;lid a la <i>cache</i>.
-</STRONG>
-</UL>
-
-<P>
-Heu fet una petició amb la directiva de control de <i>cache</i>
-<code>only-if-cached</code>. El document no s'ha trobat a la <i>cache</i>, o 
-necessitava revalidaci&oacute;, expressament prohibida per la directiva
-<code>only-if-cached</code>.
-
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_READ_ERROR b/errors/Catalan/ERR_READ_ERROR
deleted file mode 100644 (file)
index 7ac463f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Error de lectura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha respost:
-<PRE><I>    %E</I></PRE>
-
-<P>
-S'ha produ&iuml;t un error quan es llegien les dades de la xarxa.
-Repetiu la petici&oacute;
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_READ_TIMEOUT b/errors/Catalan/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index f1ebaed..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-S'ha excedit el temps de lectura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha respost:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Hi ha hagut un exc&eacute;s en el temps de lectura de dades de la xarxa.
-Hi ha congesti&oacute; o indisposici&oacute; del servidor i/o la xarxa.
-Intenteu-ho d'aqui a una estona.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_SECURE_CONNECT_FAIL b/errors/Catalan/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Catalan/ERR_SHUTTING_DOWN b/errors/Catalan/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index b44d59b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<P>
-Aquesta <i>cache</i> est&agrave; en proc&eacute;s d'aturada inmediata
-i no pot atendre la vostra petici&oacute;. Reintenteu la petici&oacute;
-d'aqui a uns minuts.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_SOCKET_FAILURE b/errors/Catalan/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index d250fd8..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Errada de connexi&oacute; de xarxa
-</STRONG>
-</UL>
-
-<P>
-El sistema diu:
-<PRE><I>    %E</I></PRE>
-
-<P>
-La <i>cache</i> no pot obrir sessions TCP, possiblement degut a un
-exc&eacute;s de c&agrave;rrega.
-Reintenteu d'aqui a una estona
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_TOO_BIG b/errors/Catalan/ERR_TOO_BIG
deleted file mode 100644 (file)
index a1d8cd6..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-La petici&oacute; o la resposta s&oacute;n massa llargues
-</STRONG>
-<P>
-Si esteu fent una petici&oacute; de tipus POST o PUT, llavors
-el cos de la petici&oacute; &eacute;s massa llarg (el fitxer
-que intenteu enviar). Si esteu intentant descarregar-vos algun
-fitxer, aques &eacute;s massa gros. Aquests l&iacute;mits han
-estat establerts pel prove&iuml;dor Internet que opera aquesta
-<i>cache</i>. Contacta amb ells si creus que es tracta d'un error.
-</UL>
-<P>
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_UNSUP_REQ b/errors/Catalan/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index 2ac593a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-M&egrave;tode i protocol no admesos
-</STRONG>
-</UL>
-
-<P>
-La <i>cache</i> no admet tots els tipus de petici&oacute; per a tots
-els protocols. Per exemple, no es pot fer una petici&oacute; tipus POST
-en el protocol Gopher.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_URN_RESOLVE b/errors/Catalan/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index c900b88..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URN que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URN que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URN:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-No s'ha pogut resoldre la URN
-</STRONG>
-</UL>
-
-<P>
-Ei :) no esperis massa de les URN a %T !!
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_WRITE_ERROR b/errors/Catalan/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 2be119e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Error d'escriptura
-</STRONG>
-</UL>
-
-<P>
-El sistema diu:
-<PRE><I>    %E</I></PRE>
-
-<P>
-S'ha produ&iuml;t un error mentre s'intentava escriure a la xarxa.
-Reintenteu-ho en breus instants.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/ERR_ZERO_SIZE_OBJECT b/errors/Catalan/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index e20b1d2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL:
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-Resposta de longitut ZERO :)
-</STRONG>
-</UL>
-
-<P>
-La <i>cache</i> ha rebut una resposta sense dades, un document buit.
-<P>L'administrador d'aquesta <i>cache</i> &eacute;s<A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Catalan/README b/errors/Catalan/README
deleted file mode 100644 (file)
index 10832cd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Thank you to Jordi Bruguera <jordi@dns1.grn.es> for
-creating these error pages in Catalan!
diff --git a/errors/Catalan/generic b/errors/Catalan/generic
deleted file mode 100644 (file)
index a1969bf..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: No es pot mostrar la URL que heu sol.licitat</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No es pot mostrar la URL que heu sol.licitat</H2>
-<HR noshade size="1px">
-<P>
-Mentre s'intentava llegir la URL::
-<A HREF="%U">%U</A>
-<P>
-S'ha produ&iuml;t el seg&uuml;ent error:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-El sistema ha respost:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Aix&ograve; vol dir que:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
diff --git a/errors/Danish/ERR_ACCESS_DENIED b/errors/Danish/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index eb28199..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Adgang n&aelig;gtet.
-</STRONG>
-<P>
-Adgangs kontrollen tillader ikke din foresp&oslash;rgsel.
-Kontakt din udbyder nu, hvis du mener dette er en fejl.
-</UL>
-</P>
diff --git a/errors/Danish/ERR_CACHE_ACCESS_DENIED b/errors/Danish/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index 030c999..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Cache Adgang N&aelig;gtet</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Cache Adgang N&aelig;gtet</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Cache Adgang N&aelig;gtet.
-</STRONG>
-</UL>
-</P>
-
-<P>Du har desv&aelig;rre ikke lov til at hente:
-<PRE>    %U</PRE>
-fra denne cache f&oslash;rend du har autenticieret dig selv.
-</P>
-
-<P>
-Du er n&oslash;dt til at bruge Netscape version 2.0 eller bedre, 
-Internet Explorer version 3.0 eller bedre, eller en browser der 
-opfylder HTTP/1.1 standarden. Kontakt 
-<A HREF="mailto:%w%W">cache administratoren</a> hvis du har problemer 
-med at autenticiere dig eller 
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">skift</a> dit
-password.
-</P>
diff --git a/errors/Danish/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Danish/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index d2e4a5e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Cache Administrator Adgang N&aelig;gtet</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Cache Administrator Adgang N&aelig;gtet</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Cache Administrator Adgang N&aelig;gtet.
-</STRONG>
-</UL>
-</P>
-
-<P>Du har desv&aelig;rre ikke lov til at hente:
-<PRE>    %U</PRE>
-fra denne cache f&oslash;rend du har autenticieret dig selv.
-</P>
-
-<P>
-Du er n&oslash;dt til at bruge Netscape version 2.0 eller bedre, 
-Internet Explorer version 3.0 eller bedre, eller en browser der 
-opfylder HTTP/1.1 standarden. Kontakt 
-<A HREF="mailto:%w%W">cache administratoren</a> hvis du har problemer 
-med at autenticiere dig eller hvis du <em>er</em> cache 
-administratoren, l&aelig;s Squid dokumentationen for cache
-administrator interfacet og check cache loggen for mere detaljerede
-fejlmeddelelser
-</P>
diff --git a/errors/Danish/ERR_CANNOT_FORWARD b/errors/Danish/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 252c4d7..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Kunne ikke vidersende foresp&oslash;rgslen.
-</STRONG>
-<P>
-Denne foresp&oslash;rgsel kunne ikke videresendes til den
-oprindelige server eller en af for&aelig;ldre cache'ene. Dette
-skyldes sandsynligvis at:
-<UL>
-<LI>Cache administratoren tillader ikke denne cache at udf&oslash;re
-direkte forbindelser til servere og
-<LI>Alle for&aelig;ldre cache'er kan ikke n&aring;s for &oslash;jeblikket. 
-</UL>
-</P>
diff --git a/errors/Danish/ERR_CONNECT_FAIL b/errors/Danish/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index b30d3ed..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Forbindelses fejl.
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Der kunne ikke opn&aring;s forbindelse til
-den anden computer. Netv&aelig;rket eller 
-computeren kan v&aelig;re nede.
-Pr&oslash;v eventuelt igen.
-</P>
diff --git a/errors/Danish/ERR_DNS_FAIL b/errors/Danish/ERR_DNS_FAIL
deleted file mode 100644 (file)
index b98c7eb..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<BLOCKQUOTE>
-Kunne ikke finde IP nummeret for navnet
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Dns serveren returnerede:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Dette betyder at:
-<PRE>
- Cachen kunne ikke opl&oslash;se det angivne navn i URL'en.
- Check at adressen er korrekt.
-</PRE>
-</P>
diff --git a/errors/Danish/ERR_ESI b/errors/Danish/ERR_ESI
deleted file mode 100644 (file)
index b78db43..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
diff --git a/errors/Danish/ERR_FORWARDING_DENIED b/errors/Danish/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 8d298f2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Videresendelse n&aelig;gtet.
-</STRONG>
-
-<P>
-Denne cache vil ikke videresende din foresp&oslash;rgsel fordi
-den pr&oslash;ver at opretholde et s&oslash;skendeforhold. M&aring;ske
-er klienten p&aring; %i en fejlkonfigureret cache.
-</P>
diff --git a/errors/Danish/ERR_FTP_DISABLED b/errors/Danish/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index f7c3f98..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-FTP er sl&aring;et fra
-</STRONG>
-</UL>
-
-<P>
-Denne cache underst&oslash;tter ikke FTP.
-</P>
diff --git a/errors/Danish/ERR_FTP_FAILURE b/errors/Danish/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index ad370e7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-En FTP protokol fejl opstod
-under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte f&oslash;lgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik f&oslash;lgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dette kan muligvis for&aring;rsages af en FTP URL med en
-absolut sti (hvilket ikke er i overensstemmelse med standarden 
-RFC 1738). Hvis dette er &aring;rsagen, kan filen findes p&aring;
-<A HREF="%B">%B</A>.
-</P>
diff --git a/errors/Danish/ERR_FTP_FORBIDDEN b/errors/Danish/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 030db80..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-En FTP autenticierings fejl opstod
-under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte f&oslash;lgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik f&oslash;lgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-</P>
diff --git a/errors/Danish/ERR_FTP_NOT_FOUND b/errors/Danish/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index 16fefde..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Den f&oslash;gende URL kunne ikke hentes:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte f&oslash;lgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik f&oslash;lgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dette kan muligvis for&aring;rsages af en FTP URL med en
-absolut sti (hvilket ikke er i overensstemmelse med standarden 
-RFC 1738). Hvis dette er &aring;rsagen, kan filen findes p&aring;
-<A HREF="%B">%B</A>.
-</P>
diff --git a/errors/Danish/ERR_FTP_PUT_CREATED b/errors/Danish/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index ff33678..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FTP PUT Lykkedes: Fil Oprettet</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Handlingen lykkedes</H1>
-<H2>Fil oprettet</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Danish/ERR_FTP_PUT_ERROR b/errors/Danish/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index c5dc763..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: FTP upload fejlede</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>FTP PUT/upload fejlede</H2>
-<HR noshade size="1px">
-<P>
-Under udf&oslash;relse af PUT kommando (sending) p&aring; 
-f&oslash;lgende URL:
-<A HREF="%U">%U</A>
-<P>
-sendte proxy'en Squid f&oslash;lgende FTP kommando:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-og fik dette svar:
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Dette betyder at:
-<PRE>
-Du skal checke sti, rettigheder, diskplads og eventuelt pr&oslash;ve igen.
-</PRE>
-<P>
diff --git a/errors/Danish/ERR_FTP_PUT_MODIFIED b/errors/Danish/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index e762110..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FTP PUT Lykkedes: Fil Opdateret</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Handlingen lykkedes</H1>
-<H2>Fil opdateret</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Danish/ERR_FTP_UNAVAILABLE b/errors/Danish/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 9427bb7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-FTP serveren var optaget da
-f&oslash;gende URL skulle hentes:
-<A HREF="%U">%U</A>
-<P>
-Proxy'en Squid sendte f&oslash;lgende FTP kommando
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-og fik f&oslash;lgende svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-</P>
diff --git a/errors/Danish/ERR_ICAP_FAILURE b/errors/Danish/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/Danish/ERR_INVALID_REQ b/errors/Danish/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 4f0e92d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under bearbejdning af foresp&oslash;rgslen:
-<PRE>
-%R
-</PRE>
-<P>
-St&oslash;dte poxy'en Squid ind i f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Ugyldig foresp&oslash;rgsel.
-</STRONG>
-</UL>
-
-<P>
-Et eller andet i HTTP forsp&oslash;rgslen er fejlbeh&aelig;ftet. 
-Mulige problemer kan v&aelig;re:
-<UL>
-<LI>Manglende eller ukendt foresp&oslash;rgsels metode
-<LI>Manglende URL
-<LI>Manglende HTTP Identifikator (ved HTTP/1.0)
-<LI>Foresp&oslash;rgslen er for stor
-<LI>"Content-Length" mangler til POST eller PUT foresp&oslash;rgsler
-<LI>Ulovlige bogstaver i maskinnavnet; &aelig;, &oslash; , &aring; og _ tegn 
-er ikke tilladt i maskinnavne (som f.eks. i: www.&oslash;l.dk)!
-<LI>Blanktegn i foresp&oslash;rgslen (kan som regel slettes)
-</UL>
-</P>
-
diff --git a/errors/Danish/ERR_INVALID_RESP b/errors/Danish/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 960968c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Danish/ERR_INVALID_URL b/errors/Danish/ERR_INVALID_URL
deleted file mode 100644 (file)
index 6dbbcc8..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Ugyldig URL
-</STRONG>
-</UL>
-
-<P>
-Et eller andet i HTTP forsp&oslash;rgslen er fejlbeh&aelig;ftet. 
-Mulige problemer kan v&aelig;re:
-<UL>
-<LI>Manglende eller ukendt adgangsprotokol (burde v&aelig;re `http:// eller tilsvarende)
-<LI>Manglende maskinnavn
-<LI>Manglende HTTP Identifikator (ved HTTP/1.0)
-<LI>Ugyldig dobbelt-escape i URL sti
-<LI>Ulovlige bogstaver i maskinnavnet; &aelig;, &oslash; , &aring; og _ -tegn 
-er ikke tilladt i maskinnavne (som f.eks. i: www.&oslash;l.dk)!
-<LI>Blanktegn i URL (kan normalt slettes)
-</UL>
-</P>
-
diff --git a/errors/Danish/ERR_LIFETIME_EXP b/errors/Danish/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index e659943..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Levetiden for forbindelsen udl&oslash;b
-</STRONG>
-</UL>
-
-<P>
-Proxy'en Squid har afsluttet foresp&oslash;rgslen fordi den
-har overskredet den maksimale levetid for forbindelser (connection timeout).
-Hvis dette er en fejl kontakt 
-<A HREF="mailto:%w%W">cache administratoren</a>.
-</P>
diff --git a/errors/Danish/ERR_NO_RELAY b/errors/Danish/ERR_NO_RELAY
deleted file mode 100644 (file)
index bb750b8..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Ingen WAIS Rel&aelig;
-</STRONG>
-</UL>
-
-<P>
-Der er ikke nogen WAIS Rel&aelig; maskine defineret for denne proxy 
-cache! R&aring;b efter <A HREF="mailto:%w%W">cache administratoren</a>!
-</P>
diff --git a/errors/Danish/ERR_ONLY_IF_CACHED_MISS b/errors/Danish/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 0bd952e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Dokumentet blev ikke fundet i cachen og <code>only-if-cached</code>
-(kun-hvis-gemt-i-cachen) direktivet var specificeret.
-</STRONG>
-</UL>
-<P>
-Du har sendt en foresp&oslash;rgsel med en <code>only-if-cached</code>
-cache kontrol direktiv. Dokumentet blev ikke fundet i cachen, <em>eller</em>
-det kr&aelig;ver en bekr&aelig;ftelse af gyldighed som bliver forbudt
-af <code>only-if-cached</code> direktivet.
-</P>
diff --git a/errors/Danish/ERR_READ_ERROR b/errors/Danish/ERR_READ_ERROR
deleted file mode 100644 (file)
index c20fdc5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-L&aelig;se fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I>    %E</I></PRE>
-
-<P>
-En fejl opstod mens der blev l&aelig;st data fra nettet. Pr&oslash;v igen.
-</P>
-
diff --git a/errors/Danish/ERR_READ_TIMEOUT b/errors/Danish/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index 7d141b8..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-L&aelig;se fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I>    %E</I></PRE>
-
-<P>
-En timeout opstod mens der der blev ventet p&aelig; at l&aelig;se data
-fra netv&aelig;rket. Netv&aelig;rket kan v&aelig;re nede eller 
-forstoppet. Hvis dette sker meget ofte kan du kontakte
-<A HREF="mailto:%w%W">cache administratoren</a> og eventuelt f&aring; 
-&oslash;get timeout v&aelig;rdien. Pr&oslash;v igen.
-</P>
-
diff --git a/errors/Danish/ERR_SECURE_CONNECT_FAIL b/errors/Danish/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Danish/ERR_SHUTTING_DOWN b/errors/Danish/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 3d2f285..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-opstod f&oslash;lgende fejl:
-<UL>
-<P>
-Proxy cachen er i gang med at lukke ned og kan 
-derfor ikke betjene din foresp&oslash;rgsel nu.
-Pr&oslash;v venligst igen snart.
-</P>
diff --git a/errors/Danish/ERR_SOCKET_FAILURE b/errors/Danish/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 1582470..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Socket Fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Proxy'en Squid kunne ikke skabe en TCP socket, sandsynligvis pga. 
-h&oslash;j last p&aring; proxy maskinen. Ved gentagne fejl
-af denne type kontakt venligst
-<A HREF="mailto:%w%W">cache administratoren</a>. Pr&oslash;v igen nu
-eller p&aring; et mindre belastet tidspunkt.
-</P>
-
diff --git a/errors/Danish/ERR_TOO_BIG b/errors/Danish/ERR_TOO_BIG
deleted file mode 100644 (file)
index e5cdbbf..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-The request or reply is too large.
-</STRONG>
-<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large.  If you are 
-making a GET request, then the reply body (what you are trying
-to download) is too large.   These limits have been established
-by the Internet Service Provider who operates this cache.  Please
-contact them directly if you feel this is an error.
-</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Danish/ERR_UNSUP_REQ b/errors/Danish/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index 5bea169..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Uunderst&oslash;ttet Foresp&oslash;rgsels Metode og Protokol
-</STRONG>
-</UL>
-
-
-<P>
-Proxy'en Squid underst&oslash;tter ikke alle foresp&oslash;rgselsmetoder
-for alle adgangs protokoller. For eksempel kan du ikke POST en
-Gopher foresp&oslash;rgsel.
-</P>
-
diff --git a/errors/Danish/ERR_URN_RESOLVE b/errors/Danish/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index dfaa93b..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URN kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>URL for den angivne URN kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URN:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Kan Ikke Opl&oslash;se URN
-</STRONG>
-</UL>
-
-<P>
-Hallo, forvent nu ikke for meget af URNs på %T :)
-</P>
-
diff --git a/errors/Danish/ERR_WRITE_ERROR b/errors/Danish/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 7999140..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Skrive Fejl
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I>    %E</I></PRE>
-
-<P>
-En fejl opstod mens der blev skrevet data til nettet. Pr&oslash;v igen.
-</P>
-
diff --git a/errors/Danish/ERR_ZERO_SIZE_OBJECT b/errors/Danish/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 36a2601..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-Nul St&oslash;rrelse Svar
-</STRONG>
-</UL>
-
-<P>
-Proxy'en Squid modtog ingen data for denne foresp&oslash;rgsel. 
-Hvis du f&aring;r svar n&aring;r du pr&oslash;ver igen, kontakt
-da <A HREF="mailto:%w%W">cache administratoren</a> med angivelse
-af n&oslash;jagtigt tidspunkt og URL for foresp&oslash;rgslen.
-</P>
-
diff --git a/errors/Danish/README b/errors/Danish/README
deleted file mode 100644 (file)
index 33f5b18..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Thank you to Morten S. Nielsen <mortensn@geocities.com> for
-creating these error pages in Danish!
diff --git a/errors/Danish/generic b/errors/Danish/generic
deleted file mode 100644 (file)
index bda9e0b..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEJL: Den angivne URL kunne ikke hentes</TITLE>
-<META CONTENT="text/html; charset=iso-8859-1">
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEJL</H1>
-<H2>Den angivne URL kunne ikke hentes</H2>
-<HR noshade size="1px">
-<P>
-Under hentning af f&oslash;gende URL:
-<A HREF="%U">%U</A>
-<P>
-Opstod f&oslash;lgende fejl:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerede:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Dette betyder at
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
-
diff --git a/errors/Dutch/ERR_ACCESS_DENIED b/errors/Dutch/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 1d101fe..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Toegang niet toegestaan.
-</STRONG>
-<P>
-U heeft geen toegang tot de URL die u probeerde op te vragen van deze
-server. Neem contact op met uw service provider als u denkt dat dit niet
-klopt.
-</UL>
-</P>
diff --git a/errors/Dutch/ERR_CACHE_ACCESS_DENIED b/errors/Dutch/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index ffa932f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: Cache toegang niet toegestaan</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FOUT</H1>
-<H2>Cache toegang niet toegestaan</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Cache toegang niet toegestaan.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, het is u niet toegestaan om:
-<PRE>    %U</PRE>
-van deze cache op te vragen totdat u zich geidentificeerd hebt.
-</P>
-
-<P>
-U dient Netscape 2.0 of recenter, Microsoft Internet Explorer 3.0, of een HTTP/1.1 compatibele browser te gebruiken om dit te laten werken. Neem contact op met de <A HREF="mailto:%w%W">cache beheerder</a> als u problemen heeft om uzelf te identificeren of <A HREF="http://%h/cgi-bin/chpasswd.cgi">verander</a> hier uw standaard wachtwoord.
-</P>
diff --git a/errors/Dutch/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Dutch/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index 25d2379..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: Cache Manager toegang niet toegestaan</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FOUT</H1>
-<H2>Cache Manager toegang niet toegestaan</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Cache Manager toegang niet toegestaan.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, het is u momenteel niet toegestaan om:
-<PRE>    %U</PRE>
-op te vragen van deze cache manager totdat u zichzelf hebt geidentificeerd.
-</P>
-
-<P>
-U dient Netscape 2.0 of recenter, Microsoft Internet Explorer 3.0, of een HTTP/1.1 compatibele browser te gebruiken om dit te laten werken. Neem contact op met de <A HREF="mailto:%w%W">cache beheerder</a> als u problemen heeft om uzelf te identificeren. Als <em>U</em> de beheerder bent, lees dan de Squid documentatie over de cache manager interface en lees de cache log voor meer gedetailleerde foutmeldingen.
-</P>
diff --git a/errors/Dutch/ERR_CANNOT_FORWARD b/errors/Dutch/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 017542d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Momenteel niet in staat dit verzoek door te sturen.
-</STRONG>
-</UL>
-
-<P>
-Dit verzoek kon niet worden doorgestuurd naar de oorspronkelijke server of een van de parent caches. De meest waarschijnlijke reden voor deze fout is dat
-<UL>
-<LI>De cache beheerder het deze cache niet toestaat met de oorspronkelijke server te praten, en
-<LI>alle ingestelde parent caches op dit moment onbereikbaar zijn.
-</UL>
-</P>
diff --git a/errors/Dutch/ERR_CONNECT_FAIL b/errors/Dutch/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index c3fc912..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Verbinding mislukt.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I>    %E</I></PRE>
-
-<P>
-De door u gezochte server of het netwerk is onbereikbaar. Probeer het verzoek opnieuw.
-</P>
diff --git a/errors/Dutch/ERR_DNS_FAIL b/errors/Dutch/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 1750f07..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<BLOCKQUOTE>
-Niet in staat om het IP adres te bepalen van de hostnaam.
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-De dnsserver gaf als antwoord:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Dit betekent dat:
-<PRE>
- De cache niet in staat was om de hostnaam uit de URL te herleiden. 
- Controleer of de naam klopt.
-</PRE>
-</P>
diff --git a/errors/Dutch/ERR_ESI b/errors/Dutch/ERR_ESI
deleted file mode 100644 (file)
index b78db43..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
diff --git a/errors/Dutch/ERR_FORWARDING_DENIED b/errors/Dutch/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index a6183c2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Doorsturen niet toegestaan.
-</STRONG>
-</UL>
-
-<P>
-Deze cache zal uw verzoek niet doorsturen, omdat het een sibling relatie tracht te bewerkstelligen. Wellicht dat de client op %i een fout ingestelde cache is.
-</P>
diff --git a/errors/Dutch/ERR_FTP_DISABLED b/errors/Dutch/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index e57c3d0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-FTP is uitgeschakeld.
-</STRONG>
-</UL>
-
-<P>
-Deze cache ondersteunt geen FTP.
-</P>
diff --git a/errors/Dutch/ERR_FTP_FAILURE b/errors/Dutch/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index c0c54e5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Er is een FTP protocolfout voorgekomen
-tijdens het ophalen van de URL: 
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<PRE><STRONG>
-       %f
-</STRONG></PRE>
-en ontving daarop het volgende antwoord:
-<PRE><STRONG>
-       %F
-</STRONG></PRE>
-<P>
-Dit kan veroorzaakt worden door een FTP URL met een absoluut pad (hetgeen niet in overeenstemming is met RFC 1738). Als dit de oorzaak is, dan kan het bestand gevonden worden op <A HREF="%B">%B</A>.
-</P>
diff --git a/errors/Dutch/ERR_FTP_FORBIDDEN b/errors/Dutch/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index cce7bf5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-De FTP authenticatie is mislukt
-tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-en ontving daarop het volgende antwoord:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Dutch/ERR_FTP_NOT_FOUND b/errors/Dutch/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index cf58665..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-De volgende URL kon niet worden opgehaald:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-en ontving daarop het volgende antwoord:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dit kan veroorzaakt worden door een FTP URL met een absoluut pad (hetgeen niet in overeenstemming is met RFC 1738). Als dit de oorzaak is, dan kan het bestand gevonden worden op <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/Dutch/ERR_FTP_PUT_CREATED b/errors/Dutch/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index 4fdb5fa..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Succesvol: Bestand aangemaakt</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Bewerking succesvol</H1>
-<H2>Bestand aangemaakt</H2>
-<HR noshade size="1px">
-<P>
-</P>
diff --git a/errors/Dutch/ERR_FTP_PUT_ERROR b/errors/Dutch/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index 97874ed..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: FTP PUT/upload mislukt</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FTP PUT/upload mislukt</H2>
-<HR noshade size="1px">
-<P>
-Bij een poging om naar de volgende URL te schrijven:
-<A HREF="%U">%U</A>
-<P>
-stuurde Squid de volgende FTP opdracht:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-en ontving daarop dit antwoord:
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Dit betekent dat:
-<PRE>
-Controleer paden, permissies en schijfruimte en probeer het opnieuw.
-</PRE>
-</P>
diff --git a/errors/Dutch/ERR_FTP_PUT_MODIFIED b/errors/Dutch/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 9f72c30..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Succesvol: Bestand vernieuwd</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Bewerking succesvol</H1>
-<H2>Bestand vernieuwd</H2>
-<HR noshade size="1px">
-<P>
-</P>
diff --git a/errors/Dutch/ERR_FTP_UNAVAILABLE b/errors/Dutch/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 444e1bd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-De FTP server was te druk bezet tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-Squid stuurde de volgende FTP opdracht:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-en ontving daarop het volgende antwoord:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Dutch/ERR_ICAP_FAILURE b/errors/Dutch/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/Dutch/ERR_INVALID_REQ b/errors/Dutch/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 73c326d..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het verwerken van het verzoek:
-<PRE>
-%R
-</PRE>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Ongeldig verzoek.
-</STRONG>
-</UL>
-
-<P>
-
-Een gedeelte van het HTTP verzoek is ongeldig. Mogelijke problemen:
-<UL>
-<LI>Ontbrekende of onbekende verzoekmethode (GET, POST)
-<LI>Ontbrekende URL
-<LI>Ontbrekende HTTP identificatie (HTTP/1.0)
-<LI>Het verzoek is mogelijk te lang
-<LI>De Content-Length ontbreekt voor het POST of PUT verzoek
-<LI>Er staat een ongeldig teken in de hostnaam; Het teken '_' is niet toegestaan.
-</UL>
-</P>
diff --git a/errors/Dutch/ERR_INVALID_RESP b/errors/Dutch/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 960968c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Dutch/ERR_INVALID_URL b/errors/Dutch/ERR_INVALID_URL
deleted file mode 100644 (file)
index 33226e1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het verwerken van het verzoek:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Ongeldige URL.
-</STRONG>
-</UL>
-
-<P>
-Een gedeelte van de gevraagde URL is ongeldig. Mogelijke problemen:
-<UL>
-<LI>Ontbrekend of onjuist toegangsprotocol (moet zijn: `http://' of vergelijkbaar)
-<LI>Ontbrekende hostnaam
-<LI>Ongeldige 'double-escape' in het URL pad
-<LI>Er staat een ongeldig teken in de hostnaam; Het teken '_' is niet toegestaan.
-</UL>
-</P>
diff --git a/errors/Dutch/ERR_LIFETIME_EXP b/errors/Dutch/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index ab0c9ea..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-De levensduur van de verbindings is verstreken.
-</STRONG>
-</UL>
-
-<P>
-Squid heeft het verzoek afgebroken omdat het de maximale verbindingslevensduur heeft overschreden.
-</P>
diff --git a/errors/Dutch/ERR_NO_RELAY b/errors/Dutch/ERR_NO_RELAY
deleted file mode 100644 (file)
index 402ce29..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Geen WAIS Relay.
-</STRONG>
-</UL>
-
-<P>
-Er is geen WAIS Relay host gedefinieerd voor deze Cache! Neem contact op met de cachebeheerder.
-</P>
diff --git a/errors/Dutch/ERR_ONLY_IF_CACHED_MISS b/errors/Dutch/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index b0caaaa..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Een geldig document werd niet gevonden in de cache, en de <code>only-if-cached</code> richtlijn was ingesteld.
-</STRONG>
-</UL>
-
-<P>
-U heeft een verzoek gedaan met een <code>only-if-cached</code> cachebeheer richtlijn. Het document werd niet gevonden in de cache <em>of</em> er was een herbevestiging nodig die niet werd toegestaan door de <code>only-if-cached</code> richtlijn.
-</P>
diff --git a/errors/Dutch/ERR_READ_ERROR b/errors/Dutch/ERR_READ_ERROR
deleted file mode 100644 (file)
index 03bea46..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Leesfout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Een foutwaarde kwam voor tijdens het lezen van data van het netwerk. Probeer uw verzoek opnieuw.
-</P>
diff --git a/errors/Dutch/ERR_READ_TIMEOUT b/errors/Dutch/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index b12a60f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Lees Timeout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Een timeout kwam voor bij het lezen van data van het netwerk. Het netwerk of de server kan niet beschikbaar of overbelast zijn. Probeer uw verzoek opnieuw.
-</P>
diff --git a/errors/Dutch/ERR_SECURE_CONNECT_FAIL b/errors/Dutch/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Dutch/ERR_SHUTTING_DOWN b/errors/Dutch/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index e747a2e..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<P>
-Deze cache is bezig met herstarten en kan daarom momenteel niet aan uw
-verzoek voldoen. Probeer uw verzoek zo nog eens.
-</P>
diff --git a/errors/Dutch/ERR_SOCKET_FAILURE b/errors/Dutch/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index ebcbe7c..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Socket Fout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid is niet in staat een TCP socket aan te maken, waarschijnlijk als gevolg van een te hoge bezettingsgraad. Probeer uw verzoek opnieuw.
-</P>
diff --git a/errors/Dutch/ERR_TOO_BIG b/errors/Dutch/ERR_TOO_BIG
deleted file mode 100644 (file)
index 30f7849..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>FOUT: De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-De aanvraag of het antwoord is te groot.
-</STRONG>
-<P>
-Indien U een POST of PUT aanvraag stuurde, dan was uw aanvraag
-(hetgeen U probeert te verzenden) te groot. Indien u een GET
-aanvraag stuurde, dan was het antwoord (hetgeen U probeert te
-ontvangen) te groot. Deze grootte-beperkingen zijn ingesteld
-door de beheerder van deze cache. Neem contact op met de
-beheerder van deze cache, wanneer U van mening bent dat deze
-beperking onjuist is.
-</UL>
-<P>
-De beheerder van deze cache is <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Dutch/ERR_UNSUP_REQ b/errors/Dutch/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index d6d3099..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Niet ondersteunde verzoekmethode of protocol.
-</STRONG>
-</UL>
-
-<P>
-Squid ondersteunt niet alle verzoekmethoden voor alle toegangsprotocollen.
-U kunt bijvoorbeeld geen Gopher verzoek POSTen.
-</P>
diff --git a/errors/Dutch/ERR_URN_RESOLVE b/errors/Dutch/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index e54acc7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URN kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URN kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URN:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Kan de URN niet herleiden.
-</STRONG>
-</UL>
-
-<P>
-Hmmm, verwacht niet teveel van URNs op %T :)
-</P>
diff --git a/errors/Dutch/ERR_WRITE_ERROR b/errors/Dutch/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index bcacc9b..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Schrijffout.
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf terug:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Een foutwaarde kwam voor tijdens het schrijven naar het netwerk. Probeer uw verzoek opnieuw.
-</P>
diff --git a/errors/Dutch/ERR_ZERO_SIZE_OBJECT b/errors/Dutch/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index e8bd17a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-Leeg object antwoord.
-</STRONG>
-</UL>
-
-<P>
-Squid ontving in het geheel geen data op dit verzoek.
-</P>
diff --git a/errors/Dutch/README b/errors/Dutch/README
deleted file mode 100644 (file)
index 9750fe0..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Thank you to Mark Visser <mark@cal026031.student.utwente.nl> 
-Remco van Mook and Bart Koelman for creating these error
-pages in Dutch!
diff --git a/errors/Dutch/generic b/errors/Dutch/generic
deleted file mode 100644 (file)
index c7eced0..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FOUT: De gevraagde URL kon niet worden opgehaald</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FOUT</H1>
-<H2>De gevraagde URL kon niet worden opgehaald</H2>
-<HR noshade size="1px">
-<P>
-Tijdens het opvragen van de URL:
-<A HREF="%U">%U</A>
-<P>
-kwam de volgende fout voor:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Het systeem gaf als antwoord:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Dit betekent dat:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
diff --git a/errors/English/ERR_ACCESS_DENIED b/errors/English/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 806d455..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Access Denied.
-</STRONG>
-<P>
-Access control configuration prevents your request from
-being allowed at this time.  Please contact your service provider if
-you feel this is incorrect.
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
-
diff --git a/errors/English/ERR_CACHE_ACCESS_DENIED b/errors/English/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index 38c9fae..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Cache Access Denied</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Cache Access Denied</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Cache Access Denied.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, you are not currently allowed to request:
-<PRE>    %U</PRE>
-from this cache until you have authenticated yourself.
-</P>
-
-<P>
-You need to use Netscape version 2.0 or greater, or Microsoft Internet
-Explorer 3.0, or an HTTP/1.1 compliant browser for this to work.  Please
-contact the <A HREF="mailto:%w%W">cache administrator</a> if you have
-difficulties authenticating yourself or 
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">change</a> your default password.
-</P>
diff --git a/errors/English/ERR_CACHE_MGR_ACCESS_DENIED b/errors/English/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index d45840d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Cache Manager Access Denied</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Cache Manager Access Denied</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Cache Manager Access Denied.
-</STRONG>
-</UL>
-</P>
-
-<P>Sorry, you are not currently allowed to request:
-<PRE>    %U</PRE>
-from this cache manager until you have authenticated yourself.
-</P>
-
-<P> You need to use Netscape version 2.0 or greater, or Microsoft Internet
-Explorer 3.0, or an HTTP/1.1 compliant browser for this to work.  Please
-contact the <A HREF="mailto:%w%W">cache administrator</a> if you have
-difficulties authenticating yourself or, if you <em>are</em> the
-administrator, read Squid documentation on cache manager interface and check
-cache log for more detailed error messages.</P>
diff --git a/errors/English/ERR_CANNOT_FORWARD b/errors/English/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 43ccc8a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Unable to forward this request at this time.
-</STRONG>
-</UL>
-
-<P>
-This request could not be forwarded to the origin server or to any
-parent caches.  The most likely cause for this error is that:
-<UL>
-<LI>The cache administrator does not allow this cache to make 
-    direct connections to origin servers, and
-<LI>All configured parent caches are currently unreachable.
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_CONNECT_FAIL b/errors/English/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index 43e04be..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Connection to %I Failed
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-The remote host or network may be down.  Please try the request again.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_DNS_FAIL b/errors/English/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 006bbb1..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-Unable to determine IP address from host name for
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-The dnsserver returned:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The cache was not able to resolve the hostname presented in the URL. 
- Check if the address is correct. 
-</PRE>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_ESI b/errors/English/ERR_ESI
deleted file mode 100644 (file)
index c3da990..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/English/ERR_FORWARDING_DENIED b/errors/English/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 3fb8dbf..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Forwarding Denied.
-</STRONG>
-</UL>
-
-<P>
-This cache will not forward your request because it is trying to enforce a
-sibling relationship.  Perhaps the client at %i is a cache which has been
-misconfigured.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_FTP_DISABLED b/errors/English/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 4dbe2bf..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-FTP is Disabled
-</STRONG>
-</UL>
-
-<P>
-This cache does not support FTP.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_FTP_FAILURE b/errors/English/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 67c8613..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-An FTP protocol error occurred
-while trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_FTP_FORBIDDEN b/errors/English/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index ca8cff3..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-An FTP authentication failure occurred
-while trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_FTP_NOT_FOUND b/errors/English/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index f7a1941..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-The following URL could not be retrieved:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-This might be caused by an FTP URL with an absolute path (which does
-not comply with RFC 1738).  If this is the cause, then the file
-can be found at <A HREF="%B">%B</A>.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_FTP_PUT_CREATED b/errors/English/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index c633002..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Successful: File Created</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation successful</H1>
-<H2>File created</H2>
-<HR noshade size="1px">
diff --git a/errors/English/ERR_FTP_PUT_ERROR b/errors/English/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index cb105b8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: FTP upload failed</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>FTP PUT/upload failed</H2>
-<HR noshade size="1px">
-<P>
-While trying to PUT the following URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-and then received this reply
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-This means that:
-<PRE>
-Check path, permissions, diskspace and try again.
-</PRE>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_FTP_PUT_MODIFIED b/errors/English/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 7fc242b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Successful: File updated</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation successful</H1>
-<H2>File updated</H2>
-<HR noshade size="1px">
diff --git a/errors/English/ERR_FTP_UNAVAILABLE b/errors/English/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index daf035c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-The FTP server was too busy while trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-Squid sent the following FTP command:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-and then received this reply
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_ICAP_FAILURE b/errors/English/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/English/ERR_INVALID_REQ b/errors/English/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 15842a0..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Request
-</STRONG>
-</UL>
-
-<P>
-Some aspect of the HTTP Request is invalid.  Possible problems:
-<UL>
-<LI>Missing or unknown request method
-<LI>Missing URL
-<LI>Missing HTTP Identifier (HTTP/1.0)
-<LI>Request is too large
-<LI>Content-Length missing for POST or PUT requests
-<LI>Illegal character in hostname; underscores are not allowed
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_INVALID_RESP b/errors/English/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 960968c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/English/ERR_INVALID_URL b/errors/English/ERR_INVALID_URL
deleted file mode 100644 (file)
index 0b53a18..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid URL
-</STRONG>
-</UL>
-
-<P>
-Some aspect of the requested URL is incorrect.  Possible problems:
-<UL>
-<LI>Missing or incorrect access protocol (should be `http://'' or similar)
-<LI>Missing hostname
-<LI>Illegal double-escape in the URL-Path
-<LI>Illegal character in hostname; underscores are not allowed
-</UL>
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_LIFETIME_EXP b/errors/English/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index aed65d3..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Connection Lifetime Expired
-</STRONG>
-</UL>
-
-<P>
-Squid has terminated the request because it has exceeded the maximum
-connection lifetime.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_NO_RELAY b/errors/English/ERR_NO_RELAY
deleted file mode 100644 (file)
index a390657..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-No Wais Relay
-</STRONG>
-</UL>
-
-<P>
-There is no WAIS Relay host defined for this Cache!  Yell at the administrator.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_ONLY_IF_CACHED_MISS b/errors/English/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 958ae54..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Valid document was not found in the cache and <code>only-if-cached</code>
-directive was specified.
-</STRONG>
-</UL>
-
-<P>
-
-You have issued a request with a <code>only-if-cached</code> cache control
-directive. The document was not found in the cache, <em>or</em> it required
-revalidation prohibited by <code>only-if-cached</code> directive.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_READ_ERROR b/errors/English/ERR_READ_ERROR
deleted file mode 100644 (file)
index c2a8efe..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Read Error
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-An error condition occurred while reading data from the network.  Please
-retry your request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_READ_TIMEOUT b/errors/English/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index 8ce6de1..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Read Timeout
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-A Timeout occurred while waiting to read data from the network.  The network
-or server may be down or congested.  Please retry your request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_SECURE_CONNECT_FAIL b/errors/English/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_SHUTTING_DOWN b/errors/English/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 8e4b39a..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<P>
-This cache is in the process of shutting down and can not
-service your request at this time.  Please retry your
-request again soon.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_SOCKET_FAILURE b/errors/English/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 186a765..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Socket Failure
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid is unable to create a TCP socket, presumably due to excessive load.
-Please retry your request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_TOO_BIG b/errors/English/ERR_TOO_BIG
deleted file mode 100644 (file)
index e5cdbbf..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-The request or reply is too large.
-</STRONG>
-<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large.  If you are 
-making a GET request, then the reply body (what you are trying
-to download) is too large.   These limits have been established
-by the Internet Service Provider who operates this cache.  Please
-contact them directly if you feel this is an error.
-</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/English/ERR_UNSUP_REQ b/errors/English/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index 0e727ac..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Unsupported Request Method and Protocol
-</STRONG>
-</UL>
-
-<P>
-Squid does not support all request methods for all access protocols.
-For example, you can not POST a Gopher request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_URN_RESOLVE b/errors/English/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 01659c7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URN not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>A URL for the requested URN could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URN:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Cannot Resolve URN
-</STRONG>
-</UL>
-
-<P>
-Hey, don't expect too much from URNs on %T :)
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_WRITE_ERROR b/errors/English/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 87be117..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Write Error
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-An error condition occurred while writing to the network.  Please retry your
-request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/ERR_ZERO_SIZE_OBJECT b/errors/English/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 2ba1c32..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Zero Sized Reply
-</STRONG>
-</UL>
-
-<P>
-Squid did not receive any data for this request.
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/English/generic b/errors/English/generic
deleted file mode 100644 (file)
index e0dc04b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
diff --git a/errors/French/ERR_ACCESS_DENIED b/errors/French/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 9e05bbf..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Acc&egrave;s interdit.
-</STRONG>
-<P>
-La configuration du contr&ocirc;le d'acc&egrave;s interdit &agrave; votre requ&ecirc;te d'&ecirc;tre
-accept&eacute;e &agrave; cette heure-ci. Veuillez contacter votre
-prestataire de service si vous pensez que ceci n'a pas lieu d'&ecirc;tre.
-</UL>
-</P>
-
diff --git a/errors/French/ERR_CACHE_ACCESS_DENIED b/errors/French/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index fa449ca..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: Acc&egrave;s au cache interdit</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERREUR</H1>
-<H2>Acc&egrave;s au cache interdit</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Acc&egrave;s au cache interdit.
-</STRONG>
-</UL>
-</P>
-
-<P>D&eacute;sol&eacute;, vous n'&ecirc;tes actuellement pas autoris&eacute;
-&agrave; demander
-<PRE>    %U</PRE>
-&agrave; ce cache tant que vous ne vous &ecirc;tes pas identifi&eacute;.
-</P>
-
-<P>
-Vous avez besoin de Netscape version 2.0 ou sup&eacute;rieure, ou Microsoft
-Internet Explorer 3.0, ou un navigateur conforme &agrave; HTTP/1.1 pour que
-ceci fonctionne.  Veuillez contacter l'<A HREF="mailto:%w%W">administrateur du cache</a>
-si vous avez des difficult&eacute;s &agrave; vous authentifier, ou
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">changez</a> votre mot de passe.
-</P>
diff --git a/errors/French/ERR_CACHE_MGR_ACCESS_DENIED b/errors/French/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index 477c3a2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: Acc&egrave;s au gestionnaire de cache interdit</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERREUR</H1>
-<H2>Acc&egrave;s au gestionnaire de cache interdit</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Acc&egrave;s au gestionnaire de cache interdit.
-</STRONG>
-</UL>
-</P>
-
-<P>D&eacute;sol&eacute, vous n'&ecirc;tes pas autoris&eacute; &agrave; acc&eacute;der &agrave;
-<PRE>    %U</PRE>
-au travers de ce gestionnaire de cache sans vous &ecirc;tre identifi&eacute;.
-</P>
-
-<P> Vous avez besoin de Netscape version 2.0 ou sup&eacute;rieure, ou
-Microsoft Internet Explorer 3.0, ou un navigateur conforme &agrave; HTTP/1.1
-pour que ceci fonctionne. Veuillez contacter l'<A HREF="mailto:%w%W">administrateur du cache</a>
-si vous avez des difficult&eacute;s &agrave; vous authentifier ou, si vous
-<em>&ecirc;tes</em> l'administrateur, lisez la documentation de Squid sur
-l'interface du gestionnaire de cache, et v&eacute;rifiez l'historique du
-cache pour des messages d'erreur plus d&eacute;taill&eacute;s.</P>
diff --git a/errors/French/ERR_CANNOT_FORWARD b/errors/French/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index b51c392..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Impossible de relayer cette requ&ecirc;te en ce moment.
-</STRONG>
-</UL>
-
-<P>
-Cette requ&ecirc;te n'a pu &ecirc;tre transmise au serveur d'origine ou &agrave; l'un
-des caches parents. La cause la plus probable de cette erreur est&nbsp;:
-<UL>
-<LI>L'administrateur du cache a interdit &agrave; ce cache de faire des
-    connexions directes aux serveurs d'origine, et
-<LI>tous les parents configur&eacute;s sont actuellement injoignables.
-</UL>
-</P>
diff --git a/errors/French/ERR_CONNECT_FAIL b/errors/French/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index d747360..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-La connexion a &eacute;chou&eacute;
-</STRONG>
-</UL>
-
-<P>
-Le syst&egrave;me a retourn&eacute;&nbsp;:
-<PRE><I>    %E</I></PRE>
-
-<P>
-La machine distante ou le r&eacute;seau sont peut-&ecirc;tre hors service. Veuillez
-r&eacute;it&eacute;rer votre requ&ecirc;te.
-</P>
diff --git a/errors/French/ERR_DNS_FAIL b/errors/French/ERR_DNS_FAIL
deleted file mode 100644 (file)
index b4db536..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<BLOCKQUOTE>
-Impossible d'associer une adresse IP &agrave; la machine
-<I>%H</I>.
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Le serveur de noms a retourn&eacute;&nbsp;:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-En d'autres termes&nbsp;:
-<PRE>
- Le cache n'a pas &eacute;t&eacute; en mesure de r&eacute;soudre le nom de
-machine pr&eacute;sent&eacute; dans l'URL.
- V&eacute;rifiez si l'adresse est correcte.
-</PRE>
-</P>
-
diff --git a/errors/French/ERR_ESI b/errors/French/ERR_ESI
deleted file mode 100644 (file)
index b78db43..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
diff --git a/errors/French/ERR_FORWARDING_DENIED b/errors/French/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 67eee75..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Relais interdit.
-</STRONG>
-</UL>
-
-<P>
-Ce cache ne fera pas suivre votre requ&ecirc;te car il tente de respecter une relation
-de voisinage. Le client %i est peut-&ecirc;tre un cache mal configur&eacute;.
-</P>
diff --git a/errors/French/ERR_FTP_DISABLED b/errors/French/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index d8c1f33..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Le FTP est d&eacute;sactiv&eacute;.
-</STRONG>
-</UL>
-
-<P>
-Ce cache ne prend pas en compte le protocole FTP.
-</P>
diff --git a/errors/French/ERR_FTP_FAILURE b/errors/French/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 0f552b3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-Une erreur du protocole FTP est survenue
-en essayant de charger l'URL suivante&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoy&eacute; la commande FTP suivante&nbsp;:
-<PRE><STRONG>
-       %f
-</STRONG></PRE>
-et a re&ccedil;u la r&eacute;ponse&nbsp;:
-<PRE><STRONG>
-       %F
-</STRONG></PRE>
-<P>
-Ceci pourrait &ecirc;tre d&ucirc; &agrave; une URL FTP contenant un chemin absolu&nbsp;(ce
-qui est en contradiction avec la RFC 1738). Dans ce cas,
- le fichier peut &ecirc;tre r&eacute;cup&eacute;r&eacute; &agrave; l'URL&nbsp;: <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/French/ERR_FTP_FORBIDDEN b/errors/French/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 4c35f22..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-Une erreur d'authentification sur un FTP a eu lieu.
-En tentant de charger l'URL:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoy&eacute; la commande FTP suivante:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-et a recu en r&eacute;ponse
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/French/ERR_FTP_NOT_FOUND b/errors/French/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index 57ad7f8..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-L'URL suivante n'a pu &ecirc;tre charg&eacute;e:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoy&eacute; la commande FTP suivante:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-et a recu en retour:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Ceci pourrait etre caus&eacute; par une URL de FTP avec un
-chemin absolu (ce qui n'est pas conforme au RFC 1738) . Si c'est
-effectivement le cas, alors le fichier se trouve &agrave;
-l'adresse <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/French/ERR_FTP_PUT_CREATED b/errors/French/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index c380f80..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT r&eacute;ussi&nbsp;: Fichier cr&eacute;&eacute;</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Op&eacute;ration r&eacute;ussie</H1>
-<H2>Fichier cr&eacute;&eacute;</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/French/ERR_FTP_PUT_ERROR b/errors/French/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index c59909d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: envoi FTP d&eacute;fectueux</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>FTP PUT/envoi d&eacute;fectueux</H2>
-<HR noshade size="1px">
-<P>
-En essayant d'envoyer (PUT) l'URL suivante&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoy&eacute; la commande FTP suivante&nbsp;:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-et a re&ccedil;u la r&eacute;ponse&nbsp;:
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-En d'autres termes&nbsp;:
-<PRE>
-V&eacute;rifiez le chemin, les droits, l'espace disque et essayez &agrave; nouveau.
-</PRE>
-</P>
-
diff --git a/errors/French/ERR_FTP_PUT_MODIFIED b/errors/French/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 673daf1..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT r&eacute;ussi&nbsp;: Fichier mis &agrave; jour</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Op&eacute;ration r&eacute;ussie</H1>
-<H2>Fichier mis &agrave; jour</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/French/ERR_FTP_UNAVAILABLE b/errors/French/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 3d9c5cd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e.</H2>
-<HR noshade size="1px">
-<P>
-Le serveur FTP &eacute;tait trop encombr&eacute; pour charger l'URL:
-<A HREF="%U">%U</A>
-<P>
-Squid a envoy&eacute; la commande FTP suivante:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-et a recu la r&eacute;ponse suivante en retour:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/French/ERR_ICAP_FAILURE b/errors/French/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/French/ERR_INVALID_REQ b/errors/French/ERR_INVALID_REQ
deleted file mode 100644 (file)
index c3759e3..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de traiter la requ&ecirc;te&nbsp;:
-<PRE>
-%R
-</PRE>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Requ&ecirc;te invalide
-</STRONG>
-</UL>
-
-<P>
-Quelque chose est invalide dans la requ&eacute;te HTTP. Probl&egrave;mes envisageables&nbsp;:
-<UL>
-<LI>M&eacute;thode de requ&ecirc;te absente ou inconnue (GET, POST)
-<LI>Absence d'URL
-<LI>Absence d'identifiant HTTP (HTTP/1.0)
-<LI>La requ&ecirc;te est peut-&ecirc;tre trop volumineuse
-<LI>Champ <code>Content-Length</code> absent pour les requ&ecirc;tes POST ou PUT
-<LI>Caract&egrave;re ill&eacute;gal dans le nom de la machine, les soulign&eacute;s (underscores) ne sont pas autoris&eacute;s.
-</UL>
-</P>
diff --git a/errors/French/ERR_INVALID_RESP b/errors/French/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 960968c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to process the request:
-<PRE>
-%R
-</PRE>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Invalid Response
-</STRONG>
-</UL>
-
-<P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
-
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/French/ERR_INVALID_URL b/errors/French/ERR_INVALID_URL
deleted file mode 100644 (file)
index 5f329f2..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-URL invalide
-</STRONG>
-</UL>
-
-<P>
-Quelque chose dans l'URL est incorrect.  Probl&egrave;mes envisageables&nbsp;:
-<UL>
-<LI>Protocole d'acc&egrave;s absent ou incorrect (il devrait &ecirc;tre de la forme `http://')
-<LI>Nom de machine absent
-<LI>Double &eacute;chappement ill&eacute;gal dans le chemin de l'URL
-<LI>Caract&egrave;re ill&eacute;gal dans le nom de la machine, les soulign&eacute;s (underscores) ne sont pas autoris&eacute;s
-</UL>
-</P>
diff --git a/errors/French/ERR_LIFETIME_EXP b/errors/French/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index c08728d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Dur&eacute;e de vie de la connexion d&eacute;pass&eacute;e
-</STRONG>
-</UL>
-
-<P>
-Squid a mis fin &agrave; cette requ&ecirc;te car elle a exc&eacute;d&eacute; la
-dur&eacute;e de vie maximale.
-</P>
diff --git a/errors/French/ERR_NO_RELAY b/errors/French/ERR_NO_RELAY
deleted file mode 100644 (file)
index 074388e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Pas de relais WAIS
-</STRONG>
-</UL>
-
-<P>
-Il n'y a pas de machine d&eacute;finie comme relais WAIS sur ce cache&nbsp;!
-Adressez-vous &agrave; votre administrateur.
-</P>
diff --git a/errors/French/ERR_ONLY_IF_CACHED_MISS b/errors/French/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index ee02355..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Aucun document valide n'a &eacute;t&eacute; trouv&eacute; dans le cache et la directive
-<code>only-if-cached</code> a &eacute;t&eacute; sp&eacute;cifi&eacute;e.
-</STRONG>
-</UL>
-
-<P>
-
-Vous avez formul&eacute; une requ&ecirc;te avec la directive de contr&ocirc;le
-<code>only-if-cached</code>. Le document n'a pas &eacute;t&eacute; trouv&eacute; dans le cache,
-<em>ou</em> il n&eacute;cessite une revalidation, interdite par la directive
-<code>only-if-cached</code>.
-
-</P>
diff --git a/errors/French/ERR_READ_ERROR b/errors/French/ERR_READ_ERROR
deleted file mode 100644 (file)
index 79c3b71..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Erreur de lecture
-</STRONG>
-</UL>
-
-<P>
-Le syst&egrave;me a retourn&eacute;&nbsp;:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Une erreur est survenue en essayant d'acc&eacute;der au r&eacute;seau.
-Veuillez r&eacute;it&eacute;rer votre requ&ecirc;te.
-</P>
diff --git a/errors/French/ERR_READ_TIMEOUT b/errors/French/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index eec4dfe..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-D&eacute;lai de lecture d&eacute;pass&eacute;
-</STRONG>
-</UL>
-
-<P>
-Le syst&egrave;me a retourn&eacute;&nbsp;:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Un d&eacute;lai critique s'est &eacute;coul&eacute; en attendant des
-donn&eacute;es du r&eacute;seau. Le r&eacute;seau ou le serveur sont
-peut-&ecirc;tre hors service ou d&eacute;faillants. Veuillez r&eacute;it&eacute;rer
-votre requ&ecirc;te.
-</P>
diff --git a/errors/French/ERR_SECURE_CONNECT_FAIL b/errors/French/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/French/ERR_SHUTTING_DOWN b/errors/French/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index d4b081f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR: La requete demand&eacute;e n'a pu etre effectu&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>La requete demand&eacute;e n'a pu etre effectu&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante fut rencontr&eacute;e:
-<UL>
-<P>
-Ce cache est en cours de mise hors-service temporaire et il
-lui est impossible de satisfaire votre requete actuellement.
-Veuillez r&eacute;iterer votre requete ult&eacute;rieurement.
-</P>
diff --git a/errors/French/ERR_SOCKET_FAILURE b/errors/French/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 9a7c43c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Erreur de socket
-</STRONG>
-</UL>
-
-<P>
-Le syst&egrave;me a retourn&eacute;:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid n'est pas en mesure de cr&eacute;er une socket TCP, probablement
-&agrave; cause d'une charge excessive. Veuillez r&eacute;it&eacute;rer votre
-requ&ecirc;te.
-</P>
diff --git a/errors/French/ERR_TOO_BIG b/errors/French/ERR_TOO_BIG
deleted file mode 100644 (file)
index e5cdbbf..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-The request or reply is too large.
-</STRONG>
-<P>
-If you are making a POST or PUT request, then your request body
-(the thing you are trying to upload) is too large.  If you are 
-making a GET request, then the reply body (what you are trying
-to download) is too large.   These limits have been established
-by the Internet Service Provider who operates this cache.  Please
-contact them directly if you feel this is an error.
-</UL>
-<P>
-Your cache administrator is <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/French/ERR_UNSUP_REQ b/errors/French/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index 0712e87..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Combinaison de m&eacute;thode et de protocole non g&eacute;r&eacute;e
-</STRONG>
-</UL>
-
-<P>
-Squid ne permet pas toutes les m&eacute;thodes de requ&ecirc;tes pour tous les
-protocoles. Vous ne pouvez par exemple pas utiliser le protocole POST dans une requ&ecirc;te Gopher.
-</P>
-
diff --git a/errors/French/ERR_URN_RESOLVE b/errors/French/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 48d521c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URN suivante n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>Une URL de l'URN n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URN&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Impossible de r&eacute;soudre l'URN
-</STRONG>
-</UL>
-
-<P>
-H&eacute;&nbsp;! N'esp&eacute;rez pas trop des URNs de %T :)
-</P>
diff --git a/errors/French/ERR_WRITE_ERROR b/errors/French/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 2a6bf0d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-Erreur d'&eacute;criture
-</STRONG>
-</UL>
-
-<P>
-Le syst&egrave;me a retourn&eacute;&nbsp;:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Une erreur s'est produite lors de l'acc&egrave;s au r&eacute;seau. Veuillez
-r&eacute;it&eacute;rer votre requ&ecirc;te.
-</P>
diff --git a/errors/French/ERR_ZERO_SIZE_OBJECT b/errors/French/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 6af0809..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-R&eacute;ponse de taille nulle
-</STRONG>
-</UL>
-
-<P>
-Squid n'a re&ccedil;u aucune donn&eacute;e pour cette requ&ecirc;te.
-</P>
diff --git a/errors/French/README b/errors/French/README
deleted file mode 100644 (file)
index 35d200f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Thank you to Frank DENIS -Jedi/Sector One- <j@4u.net> for
-creating these error pages in French!
diff --git a/errors/French/generic b/errors/French/generic
deleted file mode 100644 (file)
index 2868eee..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERREUR&nbsp;: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERREUR</H1>
-<H2>L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e</H2>
-<HR noshade size="1px">
-<P>
-En essayant de charger l'URL&nbsp;:
-<A HREF="%U">%U</A>
-<P>
-L'erreur suivante a &eacute;t&eacute; rencontr&eacute;e&nbsp;:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Le syst&egrave;me a retourn&eacute;&nbsp;:
-<PRE><I>    %E</I></PRE>
-
-<P>
-En d'autres termes&nbsp;:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
diff --git a/errors/German/ERR_ACCESS_DENIED b/errors/German/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 6207021..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Zugriff verweigert</STRONG>
-</UL>
-
-<P>
-Aufgrund von Zugriffsbeschr&auml;nkungen ist Ihre Anfrage zur Zeit
-nicht erlaubt.<br>
-Bitte kontaktieren Sie Ihren Service Provider, wenn Sie der Meinung
-sind, da&szlig; dies nicht korrekt ist.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_CACHE_ACCESS_DENIED b/errors/German/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index d78317c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Cache-Zugriff Verweigert</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEHLER</H1>
-<H2>Cache-Zugriff Verweigert</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Cache-Zugriff verweigert</STRONG>
-</P>
-</UL>
-
-<P>Leider sind Sie zur Zeit nicht berechtigt
-<PRE>    %U</PRE>
-von diesem Cache zu beziehen, bis Sie sich authentifiziert haben.
-</P>
-
-<P>
-Sie ben&ouml;tigen hierzu Netscape Version 2.0 (oder h&ouml;her), Microsoft Internet
-Explorer 3.0 oder einen anderen HTTP/1.1 Browser. Bitte kontaktieren Sie
-den <A HREF="mailto:%w%W">Cache-Administrator</a>, wenn Sie Probleme haben,
-sich zu authentifizieren, oder
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">&auml;ndern</a> Sie Ihr Passwort.
-</P>
diff --git a/errors/German/ERR_CACHE_MGR_ACCESS_DENIED b/errors/German/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index b6a7e2d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Cache-Manager-Zugriff Verweigert</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEHLER</H1>
-<H2>Cache-Manager-Zugriff verweigert</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Cache-Manager-Zugriff verweigert</STRONG>
-</UL>
-</P>
-
-<P>Leider sind Sie zur Zeit nicht berechtigt
-<PRE>    %U</PRE>
-von diesem Cache zu beziehen, bis Sie sich authentifiziert haben.
-</P>
-
-<P>
-Sie ben&ouml;tigen hierzu Netscape Version 2.0 (oder h&ouml;her), Microsoft Internet
-Explorer 3.0 oder einen anderen HTTP/1.1 Browser.
-Bitte kontaktieren Sie den <A HREF="mailto:%w%W">Cache-Administrator</a>, wenn Sie Probleme haben,
-sich zu authentifizieren, oder wenn Sie der Administrator <em>sind</em>,
-lesen Sie die Squid-Dokumentation &uuml;ber das Cache-Manager
-Interface und &uuml;berpr&uuml;fen Sie das Cache-Log f&uuml;r detailiertere
-Fehlermeldungen.
-</P>
diff --git a/errors/German/ERR_CANNOT_FORWARD b/errors/German/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 0985f51..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Die Anfrage kann zur Zeit nicht weitergeleitet werden</STRONG>
-</UL>
-
-<P>
-Diese Anfrage konnte nicht zum WWW-Server oder einem
-Parent-Cache weitergeleitet werden. Der wahrscheinlichste Grund f&uuml;r
-diesen Fehler ist:
-<UL>
-<LI>Der Cache-Administrator erlaubt nicht, da&szlig; dieser Server
-    direkte Verbindungen zu WWW-Servern aufbaut, und
-<LI>alle konfigurierten Parent-Caches sind zur Zeit nicht erreichbar.
-</UL>
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
diff --git a/errors/German/ERR_CONNECT_FAIL b/errors/German/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index cc2a354..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Verbindung schlug fehl</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I>    %E</I></PRE>
-zur&uuml;ck.
-<P>
-Der Zielrechner oder das Zielnetzwerk k&ouml;nnten deaktiviert sein. 
-Bitte versuchen Sie die Anfrage noch einmal.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
diff --git a/errors/German/ERR_DNS_FAIL b/errors/German/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 3e9cead..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Es war unm&ouml;glich, eine IP-Adresse f&uuml;r <I>%H</I>
-zu bestimmen.
-</STRONG>
-</UL>
-
-<P>
-Der DNS-Server gab:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-zur&uuml;ck.
-<P>
- Der Cache war nicht in der Lage, den in der URL enthaltenen Hostnamen
- aufzul&ouml;sen.
- &Uuml;berpr&uuml;fen Sie, ob die Adresse korrekt ist.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_ESI b/errors/German/ERR_ESI
deleted file mode 100644 (file)
index b78db43..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
diff --git a/errors/German/ERR_FORWARDING_DENIED b/errors/German/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index f1f0b63..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Weiterleiten verweigert</STRONG>
-</UL>
-
-<P>
-Dieser Cache wird Ihre Anfrage nicht weiterleiten, da er versucht, eine
-Sibling-Beziehung zu erzwingen.
-Wahrscheinlich ist der Client bei %i ein Cache, der falsch
-konfiguriert wurde. Informieren Sie dessen Administrator und/oder &uuml;berpr&uuml;fen
-Sie Ihre Proxy-Einstellungen.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
diff --git a/errors/German/ERR_FTP_DISABLED b/errors/German/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index dc7df24..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>FTP ist deaktiviert</STRONG>
-</UL>
-
-<P>
-Dieser Cache unterst&uuml;tzt kein FTP.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
\ No newline at end of file
diff --git a/errors/German/ERR_FTP_FAILURE b/errors/German/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 6883f70..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Ein FTP-Protokollfehler ist aufgetreten
-w&auml;hrend des Versuches, den URL:
-<A HREF="%U">%U</A><BR>
-zu laden.
-
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<PRE><STRONG>  %f</STRONG></PRE>
-und erhielt die Antwort:
-<PRE><STRONG>  %F</STRONG></PRE>
-<P>
-Dies k&ouml;nnte durch einen FTP-URL verursacht worden sein, der ein
-absoluter Pfad ist (was nicht der RFC 1738 entspricht).
-Wenn dies der Fall sein sollte, kann die Datei unter <A
-HREF="%B">%B</A> gefunden werden.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_FTP_FORBIDDEN b/errors/German/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 2bb863c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Ein FTP-Berechtigungsfehlschlag ist aufgetreten w&auml;hrend des Versuches, den URL: <A HREF="%U">%U</A><BR>
-zu laden.
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-und erhielt die Antwort:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_FTP_NOT_FOUND b/errors/German/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index a995542..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat ein Problem auf:
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-und erhielt die Antwort:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Dies k&ouml;nnte durch einen FTP-URL verursacht worden sein, der ein
-absoluter Pfad ist (was nicht der RFC 1738 entspricht).
-Wenn dies der Fall sein sollte, kann die Datei unter <A href="%B">%B</A> gefunden werden.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_FTP_PUT_CREATED b/errors/German/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index f31bbac..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Erfolgreich: Datei angelegt</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation erfolgreich</H1>
-<H2>Datei angelegt</H2>
-<HR noshade size="1px">
\ No newline at end of file
diff --git a/errors/German/ERR_FTP_PUT_ERROR b/errors/German/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index 4db75d0..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: FTP Upload fehlgeschlagen</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>FTP PUT/Upload fehlgeschlagen</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend dem PUT/Upload-Versuch zum URL:
-<A HREF="%U">%U</A><BR>
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<PRE><STRONG>        %f</STRONG></PRE>
-und erhielt die Antwort:
-<PRE><STRONG>        %F</STRONG></PRE>
-<P>
-&Uuml;berpr&uuml;fen Sie den Pfad, die Zugriffsrechte und den
-Plattenplatz. Versuchen Sie es dann erneut.
-</P>
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_FTP_PUT_MODIFIED b/errors/German/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 9d1886e..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT erfolgreich: Datei aktualisiert</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation erfolgreich</H1>
-<H2>Datei aktualisiert</H2>
-<HR noshade size="1px">
\ No newline at end of file
diff --git a/errors/German/ERR_FTP_UNAVAILABLE b/errors/German/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 864a1f1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-Der FTP Server war zu beschäftigt w&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden.
-<P>
-Squid sendete den folgenden FTP-Befehl:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-und erhielt die Antwort:
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_ICAP_FAILURE b/errors/German/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/German/ERR_INVALID_REQ b/errors/German/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 5d1a217..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, die Anfrage
-<PRE>
-%R
-</PRE>
-zu verarbeiten, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Ung&uuml;ltige Anfrage</STRONG>
-</UL>
-
-<P>
-Ein Teil der HTTP-Anfrage ist ung&uuml;ltig. M&ouml;gliche Gr&uuml;nde:
-<UL>
-<LI>Fehlende oder unbekannte Anfrage-Methode (GET, POST)
-<LI>Fehlender URL
-<LI>Fehlender HTTP Identifier (HTTP/1.0)
-<LI>Anfrage ist zu gro&szlig;
-<LI>Content-Length fehlt f&uuml;r POST- oder PUT-Anfragen
-<LI>Ung&uuml;ltige Zeichen im Hostnamen - z.B. Unterstriche ('_'),
-     Umlaute und Kommata sind nicht erlaubt.
-</UL>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_INVALID_RESP b/errors/German/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 74bd383..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, die Anfrage
-<PRE>
-%R
-</PRE>
-<P>
-zu verarbeiten, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>
-Ung&uuml;ltige Antwort
-</STRONG>
-</UL>
-
-<P>
-Die HTTP Antwortmeldung des kontaktierten Servers konnte nicht verstanden werden
-oder war auf andere Weise missgebildet. Bitte kontaktieren Sie den Betreiber der
-betreffenden Webseite. Wenn n&ouml;tig kann Ihr Cache Administrator in der Lage sein,
-Sie mit mehr Details &uuml;ber die genaue Ursache des Problems zu versorgen.
-
-<P>Ihr Cache Administrator ist <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/German/ERR_INVALID_URL b/errors/German/ERR_INVALID_URL
deleted file mode 100644 (file)
index 600ba50..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Ung&uuml;ltiger URL</STRONG>
-</UL>
-
-<P>
-Ein Teil des angefragten URL ist ung&uuml;ltig. M&ouml;gliche Gr&uuml;nde:
-<UL>
-<LI>Fehlendes oder unkorrektes Zugriffsprotokoll (sollte 'http://' oder &auml;hnlich sein)
-<LI>Fehlender Hostname
-<LI>Ung&uuml;ltiges 'double-escape' im URL-Pfad
-<LI>Ung&uuml;ltige Zeichen im Hostnamen - z.B. Unterstriche ('_'),
-     Umlaute und Kommata sind nicht erlaubt.
-</UL>
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_LIFETIME_EXP b/errors/German/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index 509a324..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Verbindungs-Lebensdauer ist abgelaufen</STRONG>
-</UL>
-
-<P>
-Squid hat die Anfrage abgebrochen, weil sie die maximale
-Verbindungs-Lebensdauer &uuml;berschritten hat.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_NO_RELAY b/errors/German/ERR_NO_RELAY
deleted file mode 100644 (file)
index 29070b6..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Kein WAIS-Relay</STRONG>
-</UL>
-
-<P>
-Es sind keine WAIS-Relay-Rechner f&uuml;r diesen Cache definiert.
-Teilen Sie dies Ihrem <A HREF="mailto:%w%W">Cache Administrator</A> mit.
-</P>
diff --git a/errors/German/ERR_ONLY_IF_CACHED_MISS b/errors/German/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 34a43cb..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Ein g&uuml;ltiges Dokument wurde nicht im Cache gefunden, und die '<code>only-if-cached</code> directive' war angegeben.
-</STRONG>
-</UL>
-
-<P>
-Sie haben eine Anfrage mit einer <code>only-if-cached</code>
-Cache-Control-Direktive abgeschickt. Das Dokument wurde nicht im Cache gefunden,
-<em>oder</em> es h&auml;tte eine &Uuml;berpr&uuml;fung ben&ouml;tigt,
-die durch die <code>only-if-cached</code> dicective verboten wurde.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_READ_ERROR b/errors/German/ERR_READ_ERROR
deleted file mode 100644 (file)
index 93c4acd..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Lesefehler</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I>    %E</I></PRE>
-zur&uuml;ck.
-<P>
-Bei dem Versuch, Daten vom Netzwerk zu lesen, trat ein Fehler
-auf. Bitte versuchen Sie Ihre Anfrage erneut.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_READ_TIMEOUT b/errors/German/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index b8e044e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Read Timeout</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I>    %E</I></PRE>
-zur&uuml;ck.
-<P>
-Bei dem Versuch Daten vom Netzwerk zu lesen, mu&szlig;te zu lange
-gewartet werden (timeout).
-Das Netzwerk oder der Server k&ouml;nnten deaktiviert oder
-&uuml;berlastet sein. Bitte versuchen Sie Ihre Anfrage erneut.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_SECURE_CONNECT_FAIL b/errors/German/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/German/ERR_SHUTTING_DOWN b/errors/German/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index d9854f5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat folgendes Problem auf:
-
-<UL>
-<LI>Dieser Cache ist im Begriff herunterzufahren und kann Ihre Anfrage
-zur Zeit nicht bearbeiten. Bitte wiederholen Sie Ihre Anfrage etwas sp&auml;ter.
-</UL>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_SOCKET_FAILURE b/errors/German/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 65c2ac5..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Socket Failure</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I>    %E</I></PRE>
-zur&uuml;ck.
-<P>
-Squid ist nicht in der Lage, einen TCP-Socket zu &ouml;ffnen,
-wahrscheinlich wegen extremer &Uuml;berlastung.
-Bitte versuchen Sie Ihre Anfrage erneut.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_TOO_BIG b/errors/German/ERR_TOO_BIG
deleted file mode 100644 (file)
index 98492af..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat folgendes Problem auf:
-<UL>
-<LI>
-<STRONG>
-Die Anfrage oder die Antwort ist zu gro&szlig;.
-</STRONG>
-</UL>
-
-<P>
-Wenn Sie eine POST oder PUT Anfrage gemacht haben, dann ist der 'request body'
-(das was Sie versucht haben hochzuladen) zu gro&szlig;. Wenn Sie eine GET
-Anfrage gemacht haben, dann ist der 'reply body' (das was Sie versuchen
-herunterzuladen) zu gro&szlig;. Diese Beschr&auml;nkungen wurden von Ihrem
-Internet Service Provider, der diesen Cache Server unterh&auml;lt, festgelegt.
-Bitte setzen Sie sich direkt mit ihm in Kontakt wenn Sie meinen, da&szlig;
-dies ein Fehler ist.
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_UNSUP_REQ b/errors/German/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index 6538787..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Nicht unterst&uuml;tzte Zugriffsmethode oder nicht unterst&uuml;tztes Protokoll</STRONG>
-</UL>
-
-<P>
-Squid unterst&uuml;tzt nicht alle Anfragemethoden f&uuml;r alle
-Zugriffsprotokolle.
-Beispielsweise k&ouml;nnen Sie keine Gopher-Anfrage POST'en.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_URN_RESOLVE b/errors/German/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 22e75c8..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Die angeforderete URN konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Ein URL f&uuml;r den angeforderten URN konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URN
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Die URN konnte nicht aufgel&ouml;st werden</STRONG>
-</UL>
-
-<P>
-Erwarten Sie nicht zu viel von URNs auf %T
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_WRITE_ERROR b/errors/German/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 49a6a53..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Schreibfehler</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I>    %E</I></PRE>
-zur&uuml;ck.
-<P>
-Ein Fehler trat w&auml;hrend des Schreibens zum Netzwerk auf.
-Bitte wiederholen Sie Ihre Anfrage.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/ERR_ZERO_SIZE_OBJECT b/errors/German/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index a610134..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden, trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>Leeres Dokument</STRONG>
-</UL>
-
-<P>
-Squid hat keinerlei Daten auf diese Anfrage empfangen.
-</P>
-
-<P>
-Ihr Cache Administrator ist <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/German/README b/errors/German/README
deleted file mode 100644 (file)
index ed837d5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Thank you to Bernd P. Ziller <bziller@BA-Stuttgart.De>,
-Jens Frank <jf@jf.kki.org>, and Anke S. <as@kki.org> for
-creating these error pages in German!
diff --git a/errors/German/generic b/errors/German/generic
deleted file mode 100644 (file)
index fb4b5b1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>FEHLER: Der angeforderte URL konnte nicht geholt werden</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEHLER</H1>
-<H2>Der angeforderte URL konnte nicht geholt werden</H2>
-<HR noshade size="1px">
-<P>
-W&auml;hrend des Versuches, den URL<BR>
-<A HREF="%U">%U</A><BR>
-zu laden,
-<P>
-trat der folgende Fehler auf:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Das System gab:
-<PRE><I>    %E</I></PRE>
-zur&uuml;ck.
-<P>
-Das bedeutet, da&szlig;:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
diff --git a/errors/Italian/ERR_ACCESS_DENIED b/errors/Italian/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index cb94c63..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Accesso Negato.
-</STRONG>
-<P>
-La configurazione del controllo d'accesso non permette alla vostra richiesta
-di essere soddisfatta. Contattate il vostro fornitore se pensate che
-ci&ograve; sia errato.
-</UL>
-</P>
-
diff --git a/errors/Italian/ERR_CACHE_ACCESS_DENIED b/errors/Italian/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index db0af7b..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: Negato l'accesso alla cache</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERRORE</H1>
-<H2>Negato l'accesso alla cache</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Negato l'accesso alla cache
-</STRONG>
-</UL>
-</P>
-
-<P>Ci dispiace, ma non siete autorizzati a recuperare
-<PRE>    %U</PRE>
-da questa cache fino a quando non vi sarete autenticati.
-</P>
-
-<P> 
-Dovete utilizzare Netscape versione 2.0 o maggiore, o Microsoft
-Internet Explorer 3.0, o un browser compatibile HTTP/1.1 perch&eacute;
-ci&ograve; sia possibile.  Contattate 
-<A HREF="mailto:%w%W">l'amministratore della cache</a> se avete
-difficolt&agrave; ad autenticarvi o 
-<A HREF="http://%h/cgi-bin/chpasswd.cgi">cambiate</a> la vostra
-password.
-</P>
diff --git a/errors/Italian/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Italian/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index 2d9312c..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: Negato l'accesso al Cache Manager</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERRORE</H1>
-<H2>Negato l'accesso al Cache Manager</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Negato l'accesso al Cache Manager.
-</STRONG>
-</UL>
-</P>
-
-<P>Ci dispiace, ma non siete autorizzati a recuperare
-<PRE>    %U</PRE>
-da questo cache manager fino a quando non vi sarete autenticati.
-</P>
-
-<P>Dovete utilizzare Netscape versione 2.0 o maggiore, o Microsoft
-Internet Explorer 3.0, o un browser compatibile HTTP/1.1 perch&eacute;
-ci&ograve; sia possibile.  Contattate 
-<A HREF="mailto:%w%W">l'amministratore della cache</a> se avete
-difficolt&agrave; ad autenticarvi o, se <em>siete</em> l'amministratore,
-consultate la documentazione di Squid sull'interfaccia cache manager
-e controllate i log della cache per messaggi d'errore dettagliati.
-</p>
diff --git a/errors/Italian/ERR_CANNOT_FORWARD b/errors/Italian/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 4e6c088..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Impossibile inoltrare questa richiesta.
-</STRONG>
-</UL>
-
-<P>
-La richiesta non pu&ograve; essere inoltrata al server originale
-o ad alcuna delle cache padri. La causa pi&ugrave; probabile &egrave; che:
-<UL>
-<LI>l'amministratore della cache non consente che questa cache si colleghi
-direttamente ai server originali;
-<LI>tutte le cache padri configurate sono al momento irrangiungibili.
-</UL>
-</P>
diff --git a/errors/Italian/ERR_CONNECT_FAIL b/errors/Italian/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index a1a73bf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Collegamento a %I fallito
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Il server o la rete esterna possono essere scollegati. Riprovate la richiesta.
-</P>
diff --git a/errors/Italian/ERR_DNS_FAIL b/errors/Italian/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 241128d..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<BLOCKQUOTE>
-Impossibile determinare l'indirizzo IP dal nome dell'host per
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Il dnsserver ha risposto:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Ci&ograve; significa che:
-<PRE>
-La cache non ha potuto risolvere il nome dell'host presente nella URL.
-Controllate che l'indirizzo sia corretto.
-</PRE>
-</P>
-
diff --git a/errors/Italian/ERR_ESI b/errors/Italian/ERR_ESI
deleted file mode 100644 (file)
index 4ee590b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<BLOCKQUOTE>
-Elaborazione ESI fallita.
-</BLOCKQUOTE>
-
-<P>
-Il processore ESI ha risposto:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-Ci&ograve; significa che:
-<PRE>
- Il "surrogate" server non ha potuto elaborare la template ESI. Si prega di segnalare questo errore al webmaster.
-</PRE>
-<P>Il vostro webmaster &egrave; <A HREF="mailto:%w">%w</A>.</P>
diff --git a/errors/Italian/ERR_FORWARDING_DENIED b/errors/Italian/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 037365f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Inoltramento vietato.
-</STRONG>
-</UL>
-
-<P>
-Questa cache non inoltra la vostra richiesta in quanto si vuole 
-stabilire una relazione di "fratellanza". Probabilmente il cliente %i
-&egrave; una cache mal configurata.
-</P>
diff --git a/errors/Italian/ERR_FTP_DISABLED b/errors/Italian/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 51c5a5d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-FTP &egrave; disabilitato
-</STRONG>
-</UL>
-
-<P>
-Questa cache non supporta FTP.
-</P>
diff --git a/errors/Italian/ERR_FTP_FAILURE b/errors/Italian/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index c025f5a..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Un errore nel protocollo FTP &egrave; avvenuto
-mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha spedito il seguente comando FTP:
-<PRE><STRONG>
-       %f
-</STRONG></PRE>
-e ha ricevuto in risposta
-<PRE><STRONG>
-       %F
-</STRONG></PRE>
-<P>
-Questo pu&ograve; essere stato causato da un'URL FTP con un percorso
-assoluto (scorretta secondo la RFC 1738). Se questa &egrave; la
-causa, allora il file pu&ograve; essere trovato a <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/Italian/ERR_FTP_FORBIDDEN b/errors/Italian/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index af2603c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Un errore di autenticazione tramite FTP &egrave; avvenuto
-mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha inviato il seguente comando FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-e ha ricevuto la seguente risposta: 
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Italian/ERR_FTP_NOT_FOUND b/errors/Italian/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index d24b919..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-La seguente URL non pu&ograve; essere recuperata:
-<A HREF="%U">%U</A>
-<P>
-Squid ha inviato il seguente comando FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-e ha ricevuto la risposta: 
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Questo potrebbe essere dovuto ad una URL FTP con un percorso assoluto
-(che non &egrave; conforme al RFC 1738). In tal caso, si pu&ograve; 
-recuperare il file in <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/Italian/ERR_FTP_PUT_CREATED b/errors/Italian/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index ac1f145..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Completato: File Creato</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operazione completata</H1>
-<H2>File aggiornato</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Italian/ERR_FTP_PUT_ERROR b/errors/Italian/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index 50779e9..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: Trasferimento FTP fallito</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>Trasferimento FTP fallito</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di trasferire la seguente URL:
-<A HREF="%U">%U</A>
-<P>
-Squid ha spedito il seguente comando FTP:
-<PRE><STRONG>
-       %f
-</STRONG></PRE>
-e ha ricevuto in risposta
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Ci&ograve; significa che:
-<PRE>
-Controllate il percorso, i permessi, lo spazio sul disco e riprovate.
-</PRE>
-</P>
-
diff --git a/errors/Italian/ERR_FTP_PUT_MODIFIED b/errors/Italian/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 339acc2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Completato: File aggiornato</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operazione completata</H1>
-<H2>File aggiornato</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Italian/ERR_FTP_UNAVAILABLE b/errors/Italian/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index beb702c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Il server FTP era troppo occupato al momento di recuperare la URL: 
-<A HREF="%U">%U</A>
-<P>
-Squid ha inviato il seguente comando FTP: 
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-e ha ricevuto la seguente risposta: 
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Italian/ERR_ICAP_FAILURE b/errors/Italian/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 5ad2827..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Errore protocollo ICAP.
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Ci&ograve; significa che:
-Alcune fasi della comunicazione ICAP sono fallitte. Possibili problemi:
-<UL>
-<LI>Il server ICAP non &egrave; raggiungibile.
-<LI>Risposta illegale dal server ICAP.
-</UL>
-</P>
-
diff --git a/errors/Italian/ERR_INVALID_REQ b/errors/Italian/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 600c4c2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si elaborava la richiesta:
-<PRE>
-%R
-</PRE>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Richiesta non valida
-</STRONG>
-</UL>
-
-<P>
-Alcuni aspetti della richiesta HTTP non sono validi. Possibili problemi:
-<UL>
-<LI>Metodo mancante o sconosciuto (GET, POST)
-<LI>URL mancante
-<LI>Identificativo HTTP mancante (HTTP/1.0)
-<LI>La richiesta pu&ograve; essere troppo grande
-<LI>Mancanza di <i>Content-Length</i> per richieste POST o PUT
-<LI>Caratteri illegali nel nome dell'host; gli "underscores" ('<TT>_</TT>')
-non sono permessi
-</UL>
-</P>
diff --git a/errors/Italian/ERR_INVALID_RESP b/errors/Italian/ERR_INVALID_RESP
deleted file mode 100644 (file)
index fd50ad1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si elaborava la richiesta:
-<PRE>
-%R
-</PRE>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Risposta non valida
-</STRONG>
-</UL>
-
-<P>
-Il messaggio contenente la risposta HTTP ricevuto dal server che si sta
-contattando non pu&ograve; essere interpretato od &egrave; stato in qualche modo alterato.
-Si prega di contattare un operatore del sito. Se necessario, l'amministratore della vostra
-cache potr&agrave; fornirvi maggiori dettagli sull'esatta natura del problema.
-
-<P>L'amministratore della vostra cache &egrave; <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Italian/ERR_INVALID_URL b/errors/Italian/ERR_INVALID_URL
deleted file mode 100644 (file)
index 6cb6657..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-URL non valida
-</STRONG>
-</UL>
-
-<P>
-Alcuni aspetti dell'URL richiesta sono errati. Possibili problemi:
-<UL>
-<LI>Protocollo d'accesso mancante o errato (dev'essere `http://' o simile)
-<LI>Nome dell'host mancante
-<LI>Errata doppia conversione di caratteri nell'<i>URL-Path</i>
-<LI>Caratteri illegali nel nome dell'host; gli "underscores" ('<TT>_</TT>')
-non sono permessi
-</UL>
-</P>
diff --git a/errors/Italian/ERR_LIFETIME_EXP b/errors/Italian/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index 5d8ca00..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Durata massima della connessione raggiunta
-</STRONG>
-</UL>
-
-<P>
-Squid ha chiuso la connessione in quanto ha raggiunto
-la durata massima consentita.
-</P>
diff --git a/errors/Italian/ERR_NO_RELAY b/errors/Italian/ERR_NO_RELAY
deleted file mode 100644 (file)
index 5f93d45..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Nessun servizio WAIS
-</STRONG>
-</UL>
-
-<P>
-Non c'&egrave; nessun servizio WAIS definito per questa cache!
-Segnalare all'amministratore.
-</P>
diff --git a/errors/Italian/ERR_ONLY_IF_CACHED_MISS b/errors/Italian/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 4919a08..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Un documento valido non &egrave; stato trovato in questa cache ed &egrave;
-stata specificata l'istruzione "solo se in cache".
-</STRONG>
-</UL>
-
-<P>
-
-Avete formulato una richiesta contenente la direttiva di controllo
-"solo se in cache" (<code>only-if-cached</code>). Il documento non
-&egrave; stato trovato nella cache, <em>oppure</em> necessitava di una
-ri-validazione proibita dall'istruzione <code>only-if-cached</code>.
-
-</P>
diff --git a/errors/Italian/ERR_READ_ERROR b/errors/Italian/ERR_READ_ERROR
deleted file mode 100644 (file)
index 42b0239..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Errore di lettura
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Una condizione di errore &egrave; avvenuta mentre si leggevano i dati
-dalla rete. Riprovate la richiesta.
-</P>
diff --git a/errors/Italian/ERR_READ_TIMEOUT b/errors/Italian/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index 5711d53..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Attesa scaduta per la lettura
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Il tempo di attesa &egrave; scaduto mentre si attendeva risposta dalla rete.
-La rete o il server possono essere scollegati o congestionati.
-Riprovate la richiesta.
-</P>
diff --git a/errors/Italian/ERR_SECURE_CONNECT_FAIL b/errors/Italian/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index cd6cbf3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Impossibile stabilre una conessione di tipo sicuro verso %I
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Questo proxy ed il sistema remoto non sono riusciti a negoziare delle impostazioni di
-sicurezza mutuamente accettabili per gestire la vostra richiesta. &Egrave; possibile che il sistema remoto
-non supporti connessioni di tipo sicuro, o che il proxy non non reputi accettabili le
-credenziali di sicurezza del sistema remoto.
-
-<P>L'amministratore della cache &egrave; <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Italian/ERR_SHUTTING_DOWN b/errors/Italian/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 4b8810f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Cercando di recuperare la URL: 
-<A HREF="%U">%U</A>
-<P>
-&Egrave; occorso il seguente errore: 
-<UL>
-<P>
-Questa cache &egrave; in fase di shutdown e non pu&ograve; 
-provvedere alla vostra richiesta in questo momento. Si prega
-di riprovare pi&ugrave; tardi. 
-</P>
diff --git a/errors/Italian/ERR_SOCKET_FAILURE b/errors/Italian/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 1eb36f2..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Socket Failure
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid &egrave; impossibilitato a creare un socket TCP, probabilmente
-a causa di un carico eccessivo. Riprovate la richiesta.
-</P>
diff --git a/errors/Italian/ERR_TOO_BIG b/errors/Italian/ERR_TOO_BIG
deleted file mode 100644 (file)
index 185bf80..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-La richiesta o la risposta &egrave; troppo grande.
-</STRONG>
-<P>
-Se state eseguendo una richiesta POST o PUT, allora il corpo della richiesta 
-(l'oggetto di cui state tendando l'upload) &egrave; troppo grande. Se state 
-eseguendo una richiesta GET, allora il corpo della risposta (l'oggetto di cui
-state tendando il download) &egrave; troppo grande. Questi limiti sono stati
-impostati dal gestore di questa cache. Se ritenete che questo sia un errore
-siete pregati di contattarlo direttamente.
-</UL>
-<P>
-L'amministratore di questa cache &egrave; <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Italian/ERR_UNSUP_REQ b/errors/Italian/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index e651c37..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Metodo e protocollo della richiesta non supportati
-</STRONG>
-</UL>
-
-<P>
-Squid non supporta tutte i metodi richiesti per tutti i protocolli
-d'accesso. Ad esempio, non &egrave; possibile una richiesta POST per 
-un Gopher.
-</P>
-
diff --git a/errors/Italian/ERR_URN_RESOLVE b/errors/Italian/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index d1574fe..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URN richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>Non pu&ograve; essere recuperata una URL per la URN richiesta</h2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URN:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Impossibile risolvere la URN
-</STRONG>
-</UL>
-
-<P>
-Non aspettatevi molte URN nel %T! :)
-</P>
diff --git a/errors/Italian/ERR_WRITE_ERROR b/errors/Italian/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index d3d3d68..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Errore di scrittura
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha risposto:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Un errore &egrave; avvenuto mentre si scriveva in rete.
-Riprovate la vostra richiesta.
-</P>
diff --git a/errors/Italian/ERR_ZERO_SIZE_OBJECT b/errors/Italian/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 751f6e2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-Risposta di dimensione nulla
-</STRONG>
-</UL>
-
-<P>
-Squid non ha ricevuto alcun dato in risposta alla richiesta.
-</P>
diff --git a/errors/Italian/README b/errors/Italian/README
deleted file mode 100644 (file)
index 649ec42..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Thank you to Alessio Bragadini <alessio@dsnet.it> and Marco Mesturino
-<sw_tools@beatles.cselt.it> for creating these error pages in Italian!
diff --git a/errors/Italian/generic b/errors/Italian/generic
deleted file mode 100644 (file)
index d1c16f1..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERRORE: La URL richiesta non pu&ograve; essere recuperata</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERRORE</H1>
-<H2>La URL richiesta non pu&ograve; essere recuperata</H2>
-<HR noshade size="1px">
-<P>
-Mentre si cercava di recuperare la URL:
-<A HREF="%U">%U</A>
-<P>
-&Egrave; avvenuto il seguente errore:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Il sistema ha riportato:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Questo significa che:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
index 1f4aaf45318afba8294def396d685ade5fb605a6..d435eaf2bbf7f19261c5922c8883705f1971b968 100644 (file)
@@ -10,24 +10,33 @@ errordir = $(datadir)/errors
 
 DEFAULT_ERROR_DIR      = $(errordir)
 
-INSTALL_LANGUAGES      = @ERR_LANGUAGES@
+# List of automated translations possible:
+TRANSLATIONS = \
+       ca \
+       da \
+       de \
+       en en-au en-gb \
+       es \
+       fr \
+       id \
+       it \
+       nl \
+       pt-br \
+       sv \
+       uk
+
+# Legacy language contributions...
+#
 LANGUAGES      = \
                Armenian \
                Azerbaijani \
                Bulgarian \
-               Catalan \
                Czech \
-               Danish \
-               Dutch \
-               English \
                Estonian \
                Finnish \
-               French \
-               German \
                Greek \
                Hebrew \
                Hungarian \
-               Italian \
                Japanese \
                Korean \
                Lithuanian \
@@ -39,28 +48,39 @@ LANGUAGES   = \
                Serbian \
                Simplify_Chinese \
                Slovak \
-               Spanish \
-               Swedish \
                Traditional_Chinese \
-               Turkish \
-               Ukrainian-1251 \
-               Ukrainian-koi8-u \
-               Ukrainian-utf8
+               Turkish
 
 install-data-local: 
-       @for l in $(INSTALL_LANGUAGES); do \
+       @for l in $(LANGUAGES); do \
                $(mkinstalldirs) $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l && \
                for f in $(srcdir)/$$l/ERR_*; do \
                        echo "$(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l"; \
                        $(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l; \
-               done \
+               done; \
+       done; \
+       for l in $(TRANSLATIONS) templates; do \
+         if test -d $(srcdir)/$$l; then \
+               $(mkinstalldirs) $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l && \
+               for f in $(srcdir)/$$l/ERR_*; do \
+                       echo "$(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l"; \
+                       $(INSTALL_DATA) $$f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l; \
+               done; \
+         fi \
        done
 
 uninstall-local:
-       @for l in $(INSTALL_LANGUAGES); do \
+       @ for l in $(LANGUAGES); do \
                for f in $(srcdir)/$$l/ERR_*; do \
                        rm -f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l/`basename $$f`; \
-               done \
+               done; \
+       done; \
+       for l in $(TRANSLATIONS) templates; do \
+         if test -d $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l; then \
+               for f in $(srcdir)/$$l/ERR_*; do \
+                       rm -f $(DESTDIR)$(DEFAULT_ERROR_DIR)/$$l/`basename $$f`; \
+               done; \
+         fi \
        done
 
 # undocumented hack.  You can use this target to create multi-lingual
@@ -70,6 +90,10 @@ uninstall-local:
 #
 # by Andres Kroonmaa <andre@mail.lbi.ee>
 #
+# UPDATE: this hack completely breaks HTML standards and with the addition
+#        of language translations is now largely obsolete.
+#        It will be removed without notice at some future date.
+#
 addlang: all
        -@if test -d $(srcdir)/$(ADDLANG); then \
        if test -d $(DEFAULT_ERROR_DIR)/$(DESTLANG); then \
@@ -85,12 +109,44 @@ addlang: all
        fi
 
 dist-hook:
-       for lang in $(LANGUAGES); do \
-         if test "$$lang" = .; then :; else \
+       for lang in $(LANGUAGES); do \
+         if test -d $(srcdir)/$$lang ; then \
            test -d $(distdir)/$$lang \
            || mkdir $(distdir)/$$lang \
            || exit 1; \
            cp -p $(srcdir)/$$lang/ERR_*  $(distdir)/$$lang \
              || exit 1; \
          fi; \
-       done            
+       done; \
+       $(MAKE) translate; \
+       for lang in $(TRANSLATIONS); do \
+         if test -d $(srcdir)/$$lang ; then \
+               test -d $(distdir)/$$lang \
+                 || mkdir $(distdir)/$$lang \
+                 || exit 1; \
+               cp -p $(srcdir)/$$lang/ERR_*  $(distdir)/$$lang \
+                 || exit 1; \
+         fi; \
+       done
+
+translate:
+       @ if test "$(PO2HTML)" != "" ; then \
+         for lang in $(TRANSLATIONS); do \
+               test -d $$lang && rm -r $$lang; \
+               mkdir $$lang; \
+               cd $$lang; \
+               echo -n "Translate '$$lang' ..."; \
+               for f in `ls -1 ../templates`; do \
+                       $(PO2HTML) --progress=none -i ../$$lang.po -t ../templates/$$f >$$f || exit 1; \
+               done; \
+               echo "done."; \
+               cd ..; \
+         done; \
+       else \
+         echo "WARNING: Translation toolkit was not detected."; \
+         echo "A drop-in bundle of pre-translated files is available from"; \
+         echo "http://www.squid-cache.org/Versions/langpack/"; \
+       fi
+
+all:
+       $(MAKE) translate
index b985c6a3b1c340210d07b0ba6c04c72247f5a0bf..1fc31ff6d2848266c1e840d9922299f0771c965e 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -20,5 +20,4 @@ Pristup nije dozvoljen.
 Sistem za kontrolu pristupa konfigurisan je tako da vam u ovom trenutku pristup nije dozvoljen. 
 Ako smatrate da to nije u redu, molimo da kontaktirate va\9aeg servis provajdera.
 </UL>
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
-
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
index e98d8759902744cb5bb257b35db7e5835d833448..48685d709bdf132679d66f2038e3f8ed43b9739e 100644 (file)
@@ -1,33 +1,32 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>GRE\8aKA: Pristup proxy/cache serveru nije dozvoljen</TITLE>
+<TITLE>GRE\8aKA: Pristup proksi/ke\9a serveru nije dozvoljen</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
 <H1>GRE\8aKA</H1>
-<H2>Pristup proxy/cache serveru nije dozvoljen/H2>
+<H2>Pristup proksi/ke\9a serveru nije dozvoljen</H2>
 <HR noshade size="1px">
 <P>
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Pristup proxy/cache serveru nije dozvoljen
-</STRONG>
+Pristup proksi/ke\9a serveru nije dozvoljen</STRONG>
 </UL>
 </P>
 
 <P>Na \9ealost trenutno vam nije dozvoljeno da zahtevate:
 <PRE>    %U</PRE>
-iz ovog proxy servera pre nego \9ato se ne autentifikujete.
+iz ovog proksi servera pre nego \9ato se ne autentifikujete.
 </P>
 
 <P>
-Da bi to funkcionisalo potreban vam je Netscape verzija 2 i vi\9ae ili 
-Microsoft Internet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
+Da bi to funkcionisalo potreban vam je Netscape verzija 2 ili novija ili 
+Microsoft Intenet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
 Ukoliko budete imali problema oko autentifikacije molimo kontaktirajte 
-<A HREF="mailto:%w%W">proxy administratora</a> ili \9eelite da  
+<A HREF="mailto:%w">proksi administratora</a> ili \9eelite da  
 <A HREF="http://%h/cgi-bin/chpasswd.cgi">promenite</a> svoju poèetnu lozinku.
 </P>
index c5c985cbcffd267c473420a3bf42afe0874b45f7..39fd80154ff19d1bb704cfd36086ba49fe44e2d5 100644 (file)
@@ -1,33 +1,32 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>GRE\8aKA: Pristup proxy/cache server menad\9eeru nije dozvoljen</TITLE>
+<TITLE>GRE\8aKA: Pristup proksi/ke\9a server menad\9eeru nije dozvoljen</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
 <H1>GRE\8aKA</H1>
-<H2>Pristup proxy/cache server menad\9eeru nije dozvoljen/H2>
+<H2>Pristup proksi/ke\9a server menad\9eeru nije dozvoljen</H2>
 <HR noshade size="1px">
 <P>
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Pristup proxy/cache server menad\9eeru nije dozvoljen
-</STRONG>
+Pristup proksi/ke\9a server menad\9eeru nije dozvoljen</STRONG>
 </UL>
 </P>
 <P>Na \9ealost trenutno vam nije dozvoljeno da zahtevate:
 <PRE>    %U</PRE>
-iz ovog cache menad\9eera pre nego \9ato se ne autentifikujete.
+iz ovog ke\9a menad\9eera pre nego \9ato se autentifikujete.
 </P>
 
 <P> Da bi to funkcionisalo potreban vam je Netscape verzija 2 i vi\9ae ili 
-Microsoft Internet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
+Microsoft Intenet Explorer 3.0, ili browser koji podr\9eava HTTP/1.1.
 Ukoliko budete imali problema oko autentifikacije molimo kontaktirajte 
-<A HREF="mailto:%w%W">proxy administratora</a> a ako vi <em>jeste</em> administrator,
-proèitajte dokumentaciju o cache menad\9eeru za Squid i proverite cache log
+<A HREF="mailto:%w">proxy administratora</a> a ako vi <em>jeste</em> administrator,
+proèitajte dokumentaciju o ke\9a menad\9eeru za Squid i proverite ke\9a log
 za detaljnije opise gre\9aaka.</P>
 
 
index 72271c0100ff6b7051f88f3a6049e281d6fed701..71a312ac2941581c53f6533b70f7f7ac5424e252 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -19,13 +19,11 @@ Va
 </UL>
 
 <P>
-Ovaj zahtev nije moga da bude prosleðen izvornom serveru niti bilo kom
-nadreðenom proksi serveru. Najverovatniji uzrok ove gre\9ake je da:
-This request could not be forwarded to the origin server or to any
-parent caches.  The most likely cause for this error is that:
+Ovaj zahtev nije mogao da bude prosleðen izvonom serveru niti bilo kom
+nadreðenom proxy serveru. Najverovatniji uzrok ove gre\9ake je da:
 <UL>
-<LI>Cache administrator ne dozvoljava da ovaj proksi server
-direktno pristupi izvornom serveru, 
+<LI>Ke\9a administrator ne dozvoljava da ovaj proksi server
+direktno pristupi izvonom serveru, 
 <LI>Svi konfigurisani nadreðeni proksi serveri su trenutno nedostupni.
 </UL>
-<P>Va\9a cache administrator je <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
index 6bf2e2fe4703ce52d862fa0648ac939fb3622b02..0761abf6741d189a34456ca934b0096fc836e288 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -28,5 +28,4 @@ Sistem je dao povratnu informaciju:
     Udaljeni raèunar ili mre\9ea nisu operativni. Molimo poku\9aajte kasnije.
 </PRE>
 </P>
-<P>Va\9a cache administrator je <A HREF="mailto:%w%W">%w</A>.
-
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
index eaefaa3a283fd47786c09903d657c44a49b260b2..14765171f4e87005d0e93ebcee7194df8da7d1a5 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -29,8 +29,8 @@ DNS server je vratio informaciju:
 <P>
 \9ato znaèi:
 <PRE>
-   Proksi server nije u stanju da identifikuje ime raèunara koje je upisano u 
+   Proksi server nije u stanju da identifikuje ime raèunara koje se nalazi u 
    adresi (URL). Proverite da li je adresa ispravna.
 </PRE>
 </P>
-<P>Va\9a cache administrator je <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>.
index b78db43c91a48d19779b5edd394813da0ac03d3f..1ddffb8479d9f814dde6bcfd91793ec64d27e9bf 100644 (file)
@@ -1,29 +1,29 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
 </HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
 <HR noshade size="1px">
 <P>
-While trying to retrieve the URL:
+Tokom poku\9aaja da se dovuce strana sa sledecom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-The following error was encountered:
+Dogodila se sledeca gre\9aka:
 <BLOCKQUOTE>
-ESI Processing failed.
+ESI obrada nije uspela.
 </BLOCKQUOTE>
 
 <P>
-The ESI processor returned:
+ESI procesor je vratio:
 <BLOCKQUOTE>
 %Z
 </BLOCKQUOTE>
 
 <P>
-This means that:
+Ovo znaci da:
 <PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
+ Surogat nije uspeo da obradi ESI zahtev. Molimo obavestite webmastera o ovoj gre\9aci
 </PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
+<P>Va\9a webmaster je <A HREF="mailto:%w">%w</A>.</P>
index d803e34d5d8d0686f3e5a6de981781a72857cd9d..7ec1488be73228e962c025abd548659fb18c911f 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -22,9 +22,9 @@ Prosle
 \9ato znaèi:
 <PRE>
   Ovaj proksi server neæe da prosledi va\9a zahtev zato \9ato poku\9aava da
-  po\9atuje sibling odnose. Mo\9eda je klijent na %i proksi koji je pogre\9ano
+  po\9atuje sibling odnose. Mo\9eda je klijent na %i proksi serveru koji je pogre\9ano
   konfigurisan. 
 </PRE>
 </P>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
\ No newline at end of file
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
\ No newline at end of file
index fb8649efbf34ebc7fb357e798dfaea1f91ed67d9..4d19027a0e8cde9d67b0c28b1f92089bce71e738 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -25,4 +25,4 @@ FTP nije omogu
 </PRE>
 </P>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index 8ab43b578226828742b57f00f50dde9512af6318..2522f7fde1d67fb1da70eff6d0b947e49c5ec9cd 100644 (file)
@@ -6,8 +6,7 @@
 <H1>GRE\8aKA</H1>
 <H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuèe</H2>
 <HR noshade size="1px">
-Prilikom poku\9aaja da se dovuèe URL: <A HREF="%U">%U</A> desila
-se gre\9aka u FTP protokolu.
+Desila se gre\9aka u FTP protokolu prilikom dovlaèenja URL-a: <A HREF="%U">%U</A>
 <P>
 <P>
 Squid je poslao sledeæu FTP komandu:
@@ -16,5 +15,5 @@ i onda dobio slede
 <blockquote><strong><pre>%F</pre></strong></blockquote>
 <blockquote><strong><pre>%g</pre></strong></blockquote>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
 
index 24156992fe4fb433a105c2e4635229f03ba38596..9536e3e44b79e725dcb815f690583a69ef96c454 100644 (file)
@@ -16,4 +16,4 @@ i onda dobio slede
 <blockquote><strong><pre>%F</pre></strong></blockquote>
 <blockquote><strong><pre>%g</pre></strong></blockquote>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
index 1dba6d584105146c5bfdbb3d54de1a447e5a1ffe..0d00e4abb9fc2365ad96f3ce3285e34e6931cfb5 100644 (file)
@@ -15,9 +15,8 @@ i onda dobio slede
 <blockquote><strong><pre>%F</pre></strong></blockquote>
 <blockquote><strong><pre>%g</pre></strong></blockquote>
 <P>
-To mo\9ee da bude prouzrokovano \9ato je FTP adresa (URL) sa
+To mo\9ee da bude prouzrokovano time \9ato je FTP adresa (URL) sa
 apsolutnom putanjom (\9ato se ne sla\9ee sa RFC 1738). Ukoliko je to 
-sluèaj, datoteku mo\9eete da naðete na <A HREF="%B">%B</A>.
-
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+sluèaj, fajl mo\9eete da naðete na <A HREF="%B">%B</A>.
 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index 51659d30f1c9da91748b84c41c1de911a850f220..b2d95926c33818f0fc6bf1f74e9f545f8ed81104 100644 (file)
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>FTP PUT uspe\9aan: Datoteka je postavljena</TITLE>
+<TITLE>FTP PUT uspe\9aan: Fajl je prenesen</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
-<H1>Operatcija je okonèana uspe\9ano.</H1>
-<H2>Datoteka je postavljena.</H2>
+<H1>Operacija je okonèana uspe\9ano.</H1>
+<H2>Fajl je prenesen.</H2>
 <HR noshade size="1px">
index c019a194ef39efd8c73a2cdb72102f22d6e9b9e1..a5aca19cb4d6e5bc48a6773f1f4cb10317233298 100644 (file)
@@ -4,13 +4,13 @@
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
 <H1>GRE\8aKA</H1>
-<H2>FTP upload nije uspeo </H2>
+<H2>FTP upload nije uspeo</H2>
 <HR noshade size="1px">
 <P>
 Tokom poku\9aaja da se PRENESE strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-Dok je poku\9aavao da prenese (PUT) sledeæi URL:
+dok je poku\9aavao da prenese (PUT) sledeæi URL:
 <A HREF="%U">%U</A>
 <P>
 Squid je zadao sledeæu komandu:
@@ -28,5 +28,5 @@ da bi dobio odgovor:
 treba da proverite putanju, privilegije, raspolo\9eiv prostor na disku i poku\9aate ponovo.
 </PRE>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
 
index 617ef783a546881a162ea4a68b3a37d9d7e4cc36..6534eec4358633df11ec3fcb762986c6d528a6a7 100644 (file)
@@ -1,8 +1,8 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
-<TITLE>FTP PUT uspe\9aan: Datoteka je osve\9eena</TITLE>
+<TITLE>FTP PUT uspe\9aan: Fajl je osve\9een</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
-<H1>Operatcija je okonèana uspe\9ano.</H1>
-<H2>Datoteka je osve\9eena.</H2>
+<H1>Operacija je okonèana uspe\9ano.</H1>
+<H2>Fajl je osve\9een.</H2>
 <HR noshade size="1px">
index ba4b71aaf873b3cc7f8f93436da77b3e12f1a9be..df49f314a7ab445b0de5b29e29af8a460f5f385a 100644 (file)
@@ -15,6 +15,6 @@ i onda dobio slede
 <blockquote><strong><pre>%F</pre></strong></blockquote>
 <blockquote><strong><pre>%g</pre></strong></blockquote>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
 
 
index 86334e6dc5acdf93de4c66e35f6ada9262aa65c5..fda83bf5de3779363567c9d2fb5b55bd3c6983db 100644 (file)
@@ -1,33 +1,33 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
 </HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
 <HR noshade size="1px">
 <P>
-While trying to retrieve the URL:
+Tokom poku\9aaja da se dovuce strana sa sledecom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-The following error was encountered:
+Dogodila se sledeca gre\9aka:
 <UL>
 <LI>
 <STRONG>
-ICAP protocol error.
+Gre\9aka u ICAP protokolu.
 </STRONG>
 </UL>
 
 <P>
-The system returned:
+Sistem je vratio:
 <PRE><I>    %E</I></PRE>
 
 <P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
+Ovo znaci da:
+Neki aspekti ICAP protokola nisu u redu. Moguci problemi:
 <UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
+<LI>ICAP server je nedostupan.
+<LI>Pogre\9aan odgovor od ICAP servera.
 </UL>
 </P>
 
index 0e9d8724757cde7b6058e90ae040e2cdb15e4025..a0114da6f280703206486fc7e723230a1f9e33f2 100644 (file)
@@ -21,16 +21,16 @@ Neispravan zahtev.
 </UL>
 
 <P>
-Neki aspekt HTTP zahteva nije ispravan. Moguæi problemi:
+Jedan od aspekta HTTP zahteva nije ispravan. Moguæi problemi:
 <UL>
 <LI>Metod zahteva je nepoznat ili nedostaje
 <LI>Nedostaje adresa (URL)
 <LI>Nedostaje  HTTP identifikator (HTTP/1.0)
 <LI>Zahtev je predug
-<LI>Nedostaje du\9eina zahteva (Content-Length) za POST ili PUT zahteva
+<LI>Nedostaje du\9eina zahteva (Content-Length) za POST ili PUT zahtev
 <LI>Nedozvoljeni karakteri u imenu raèunara; donja crta (_) nije dozvoljena
 </UL>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
 
 </UL>
index 960968c4050f59887246c17d68430e3a2a710488..62ac7b15ae99c887791ca8483d5b0c90f96786df 100644 (file)
@@ -1,29 +1,29 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
 <HR noshade size="1px">
 <P>
-While trying to process the request:
+U poku\9aaju da se izvr\9ai zahtev:
 <PRE>
 %R
 </PRE>
 <P>
-The following error was encountered:
+Desila se sledeca gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Invalid Response
+Pogre\9aan odgovor
 </STRONG>
 </UL>
 
 <P>
-The HTTP Response message received from the contacted server
-could not be understood or was otherwise malformed. Please contact
-the site operator. Your cache administrator may be able to provide
-you with more details about the exact nature of the problem if needed.
+HTTP odgovor koji je dobijen od kontaktiranog servera
+ne mo\9ee da se razume ili je na neki nacin pogre\9ano formirana.
+Molimo kontaktirajte operatora sajta. Va\9a ke\9a administrator
+vas mo\9ee informisati o detaljima prirode va\9aeg problema.
 
-<P>Your cache administrator is <A HREF="mailto:%w">%w</A>. 
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>. 
index 599ff174bfd34ac98bc55487d269aab962c7b1f3..b11b275e7bbeed860e843b8fb9da5d01843f8b86 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -18,14 +18,12 @@ Neispravna adresa (URL)
 </STRONG>
 </UL>
 <P>
-Neki aspekt zahtevane adrese (URL) nije ispravan. Moguæi problemi:
+Jedan od aspekata zahtevane adrese (URL) nije ispravan. Moguæi problemi:
 <UL>
-<LI>Pristupni protokol nedostaje ili je neispravan (trebao bi da bude `http://'' ili slièno)
+<LI>Pristupni protokol nedostaje ili je neispravan (trebao bi da bude &quot;http://'' ili slièno)
 <LI>Nedostaje ime raèunara (servera)
 <LI>Nedozvoljeni dvostruki-escape u URL putanji
 <LI>Nedozvoljeni karakteri u imenu raèunara; donja crta (_) nije dozvoljena
 </UL>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
-
-
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
index fe78332112b674cc7cfe25b35cf91c3a08303961..dd7d93dcdb6870d7e5399d30c025438205063ede 100644 (file)
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Dozvoljeno vreme du\9eine konekcije je prekoraèeno.
+Dozvoljeno trajanje konekcije je prekoraèeno.
 </STRONG>
 </UL>
 <P>
 Proksi server je prekinuo konekciju jer je prekoraèila
-dozvoljenu du\9einu trajanja konekcije.
+dozvoljeno trajanje konekcije.
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index bcea8739fd72529275a025942f42fa99af87ac37..8e2361af6bc7a932c4974eb0f87deaab208fae2a 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -20,4 +20,4 @@ Nema Wais relay-a
 <P>
 Za ovaj proksi server nije definisan WAIS relay raèunar! Pitajte administratora.
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
index 7a2abfac49b5f5da6927af9f88e9867973683eb5..1b42e2d14d64dac526ebb8b63bf31b7de1d12734 100644 (file)
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-U proksi arhivi nije naðen validan dokument a specificirane je direktiva <code>only-if-cached</code>.
-</STRONG>
+U ke\9au nije naðen validan dokument a specificirane je direktiva <code>only-if-cached</code>.</STRONG>
 </UL>
 <P>
 Za va\9a zahtev postavljena je <code>only-if-cached</code> proksi direktiva.
 Dokument nije naðen u proksi arhivi, <em>ili</em> se zahteva revalidacija koja
 je zabranjena direktivom <code>only-if-cached</code>.
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index a833a9923ae493998bfb92b2dec11ad849ea6618..316a92dd81f72508ffbefb7d55718acd9d25f504 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -24,7 +24,9 @@ Sistem je dao povratnu informaciju:
 
 <P>
 <PRE>
-Desila se gre\9aka prilikom isèitavanja podataka sa mre\9ee.
+Desila se gre\9aka prilikom èitanja podataka sa mre\9ee.
 Molimo poku\9aajte ponovo.
 </PRE>
 </P>
+
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
\ No newline at end of file
index 4648af386ac6b37adf6b1fab129a89670f8d998a..58097e99bc3bfd8481245b21bc03b3ab226cd198 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -29,3 +29,5 @@ Mre
 Molimo poku\9aajte ponovo.
 </PRE>
 </P>
+
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
\ No newline at end of file
index 0cbbe670e9c8f9630d384ce4d494cfd210538cf3..5fc808b133e355cfdaa4e14a75e30d773a9b1655 100644 (file)
@@ -1,31 +1,31 @@
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
+<TITLE>GRE\8aKA: Tra\9eena adresa (URL) ne mo\9ee da se dovuce</TITLE>
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
+<H1>GRE\8aKA</H1>
+<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuce</H2>
 <HR noshade size="1px">
 <P>
-While trying to retrieve the URL:
+Tokom poku\9aaja da se dovuce strana sa sledecom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-The following error was encountered:
+Dogodila se sledeca gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Failed to establish a secure connection to %I
+Nije uspelo uspostavljanje sigune konekcije sa %I
 </STRONG>
 </UL>
 
 <P>
-The system returned:
+Sistem je vratio:
 <PRE><I>    %E</I></PRE>
 
 <P>
-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.
+Ovaj proksi i udaljeni server nisu uspeli da se dogovore oko sigunosnih
+pode\9aavanja za izvr\9aavanje va\9aeg zahteva. Moguce je da je udaljeni server
+ne podr\9eava sigune konekcije, ili da proksi nije zadovoljan sa pravilima
+sigunosti udaljenog servera.
 
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a administrator je <A HREF="mailto:%w">%w</A>. 
index 7c6cd78ded5af7c5384ea21a3a793adc7d97c964..ea7da1298beec34b2a5a1ae8845ecea8144277a4 100644 (file)
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Ovaj proksi server je u procesu obaranja i ne mo\9ee da
-opslu\9ei zahtev u ovom trenutku. Molimo poku\9aajte ponovo
-uskoro.
+Ovaj proksi server je u procesu iskljuèivanja i ne mo\9ee da
+izvr\9ai zahtev u ovom trenutku. Molimo poku\9aajte ponovo uskoro.
 </STRONG>
 </UL>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>.
index 00b4fcade4890f13e27f07c3423f4b09593d1e4b..d6d1369ed62e2cb3998d5d8a0cc426a82f6c6592 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -30,4 +30,4 @@ Sistem je dao povratnu informaciju:
 </PRE>
 </P>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index 17d9b86437d522461e07d2e8d75ee857b94e1b94..2ead02f9d44b92bce20ebce42b78654c7c22abab 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -20,9 +20,9 @@ Zahtev ili odgovor je prevelik.
 Ukoliko je va\9a zahtev POST ili PUT, onda je telo zahteva (to \9ato
 poku\9aavate da upload-ujete) preveliko. Ako ste uputili GET zahtev,
 onda je telo odgovora (to \9ato poku\9aavate da skinete) preveliko.
-Ove limite postavio je internet servis provajder koji koristi ovaj
+Ove limite postavio je intenet servis provajder koji koristi ovaj
 proksi server. Ako smatrate da je to gre\9aka, molimo stupite u kontakt
 sa administratorom.
 </UL>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index 0484af42fca36a8915b716cc551309191a255dcf..64552cb6b84283f4a84e046a8ebef5fe9aa446d1 100644 (file)
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Nepodr\9eani metod ili protokol zahteva (request)
+Nepodr\9ean metod ili protokol zahteva (request)
 </STRONG>
 </UL>
 
 <P>
-Proksi server ne podr\9eava sve request metode za sve moguæe pristupne protokole.
+Proksi server ne podr\9eava sve metode zahteva za sve moguæe pristupne protokole.
 Na primer ne mo\9eete da uradite POST na Gopher zahtev.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index 2e9be8ccda3f5b56daa5c0174346363a8ccdb91e..038586a2394be70fea6cceee4f4eada061bd3137 100644 (file)
@@ -4,13 +4,13 @@
 <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
 </HEAD><BODY>
 <H1>GRE\8aKA</H1>
-<H2>Tra\9eena adresa (URL) ne mo\9ee da se dovuèe</H2>
+<H2>Tra\9eena adresa (URL) za URN ne mo\9ee da se dovuèe</H2>
 <HR noshade size="1px">
 <P>
-Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
+Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URN):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -20,4 +20,4 @@ Ne mogu da odgonetnem URN
 
 <P>
 Hej, nemoj mnogo da oèekujes od URNova na %T! :)
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index cad41c4115ab0038bea5e672abb0c14f2586fa15..6e8a3a0fac98ee629b0f10e56d2ffb7c91f2432d 100644 (file)
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
-Gre\9aka u pisanju.
+Gre\9aka u upisu.
 </STRONG>
 </UL>
 
@@ -23,5 +23,9 @@ Sistem je dao povratnu informaciju:
 <PRE><I>    %E</I></PRE>
 
 <P>
-Desila se gre\9aka prilikom pisanja po mre\9ei. Molimo poku\9aajte ponovo.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<PRE>
+Desila se gre\9aka prilikom upisa u mre\9ei. Molimo poku\9aajte ponovo.
+</PRE>
+</P>
+
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index 4334dfdde7c0c059b25315370db5693cd95496db..716f943b7f5a33eaca35faf7cce4370e4612f277 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -19,5 +19,5 @@ Odgovor nulte du
 </UL>
 
 <P>
-Squid nije dobio nikakav odgovor na va\9a zahtev.
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+Proksi nije dobio nikakav odgovor na va\9a zahtev.
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w">%w</A>. 
index ba43c8a06bc0575f8d8563f3fa0b290d2be9bffd..2a1941b01c48985b5b568f7236fe829029cfac41 100644 (file)
@@ -1,4 +1,4 @@
-Thank you to Zoran Verovski <Zoran@HEMOFARM.CO.YU> for
-creating these error pages in Serbian!
+Thank you to Zoran Verovski <Zoran@HEMOFARM.CO.YU> for creating these error pages in Serbian!
+Fixed some typos and errors by Dragutin Cirkovic (auto@gromnet.net)
 
 encoding: latin-win1250
index c1fc740e653a2e20c4e0abefce028d0d371f5fbb..1bfe554b70fdc348689fc4b5a2bd2b8495a793cb 100644 (file)
@@ -10,7 +10,7 @@
 Tokom poku\9aaja da se dovuèe strana sa sledeæom adresom (URL):
 <A HREF="%U">%U</A>
 <P>
-dogodila se sledeæa gre\9aka:
+Dogodila se sledeæa gre\9aka:
 <UL>
 <LI>
 <STRONG>
@@ -29,5 +29,5 @@ Sistem je dao povratnu informaciju:
 </PRE>
 </P>
 
-<P>Va\9a cache/proxy administrator je: <A HREF="mailto:%w%W">%w</A>. 
+<P>Va\9a ke\9a/proksi administrator je: <A HREF="mailto:%w%W">%w</A>. 
 
diff --git a/errors/Spanish/ERR_ACCESS_DENIED b/errors/Spanish/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 13d476b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Acceso Denegado.
-</STRONG>
-<P>
-Las reglas de control de acceso impiden que su petici&oacute;n sea
-permitida en este momento. Contacte con su proveedor de servicios
-si cree que esto es incorrecto.
-</P>
-</UL>
diff --git a/errors/Spanish/ERR_CACHE_ACCESS_DENIED b/errors/Spanish/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index 8356b56..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Acceso Denegado al Cach&eacute;</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Acceso Denegado al Cach&eacute;</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Acceso denegado al cach&eacute;.
-</STRONG>
-</UL>
-
-<P>
-Disculpe, Ud. no est&aacute; autorizado a acceder a:
-<PRE>    %U</PRE>
-desde este cach&eacute; hasta que se haya autenticado.
-
-
-<P>
-Ud. necesita utilizar Netscape versi&oacute;n 2.0 o superior, o Microsoft
-Internet Explorer 3.0, o un navegador que cumpla con HTTP/1.1 para que funcione.
-Por favor contacte al <A HREF="mailto:%w">administrador del cach&eacute;</a> si 
-tiene dificultad para autenticarse o <A HREF="http://%h/cgi-bin/chpasswd.cgi">
-cambie</a> su password.
-</P>
diff --git a/errors/Spanish/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Spanish/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index a0f2d76..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: Acceso Denegado al Cach&eacute; Manager</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ERROR</H1>
-<H2>Acceso Denegado al Cache Manager</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Acceso Denegado al Cache Manager.
-</STRONG>
-</UL>
-
-<P>Disculpe, Ud. no est&aacute; autorizado a acceder a:
-<PRE>    %U</PRE>
-desde este cach&eacute; hasta que se haya autenticado.
-
-<P>
-Ud. necesita utilizar Netscape versi&oacute;n 2.0 o superior, o Microsoft
-Internet Explorer 3.0, o un navegador que cumpla con HTTP/1.1 para que funcione.
-Por favor contacte al <A HREF="mailto:%w">administrador del cach&eacute;</a> si
-tiene dificultad para autenticarse, o si Ud. <em>es</em> el administrador,
-lea la documentaci&oacute;n de Squid sobre interfaz del cache manager y 
-chequee en el log de cach&eacute; mensajes de error m&aacute;s detallados.
-</P>
diff --git a/errors/Spanish/ERR_CANNOT_FORWARD b/errors/Spanish/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 14843a8..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Imposibilidad de enviar la petici&oacute;n en este momento.
-</STRONG>
-</UL>
-
-<P>
-La petici&oacute;n no ha podido ser enviada al servidor origen o a alguno
-de los cach&eacute;s padres. Las razones m&aacute;s probables de que haya 
-ocurrido este error son:
-<UL>
-<LI>El administrador de lo cach&eacute; no permite que este
-    cach&eacute; realice conexiones directas a los servidores
-    origen, y
-<LI>Todos los cach&eacute;s configurados como padres son inalcanzables
-    en este momento.
-</UL>
diff --git a/errors/Spanish/ERR_CONNECT_FAIL b/errors/Spanish/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index c7b2edf..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Conexi&oacute;n fallida.
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I>    %E</I></PRE>
-
-<P>
-El equipo remoto o la red pueden estar fuera de servicio.
-Por favor, intente de nuevo la petici&oacute;n.
diff --git a/errors/Spanish/ERR_DNS_FAIL b/errors/Spanish/ERR_DNS_FAIL
deleted file mode 100644 (file)
index c5def77..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<BLOCKQUOTE>
-Incapaz de determinar la direcci&oacute;n IP a partir
-del nombre de la m&aacute;quina:
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-El programa dnsserver ha devuelto el siguiente mensaje:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Esto significa que:
-<PRE>
- El cach&eacute; no ha sido capaz de resolver el nombre de m&aacute;quina
- presente en la URL.
- Compruebe que la direcci&oacute;n sea correcta.
-</PRE>
-
diff --git a/errors/Spanish/ERR_ESI b/errors/Spanish/ERR_ESI
deleted file mode 100644 (file)
index b78db43..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<BLOCKQUOTE>
-ESI Processing failed.
-</BLOCKQUOTE>
-
-<P>
-The ESI processor returned:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-This means that:
-<PRE>
- The surrogate was not able to process the ESI template. Please report this error to the webmaster. 
-</PRE>
-<P>Your webmaster is <A HREF="mailto:%w">%w</A>.</P>
-<P>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.</P>
diff --git a/errors/Spanish/ERR_FORWARDING_DENIED b/errors/Spanish/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 8d508fa..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Reenv&iacute;o denegado.
-</STRONG>
-</UL>
-
-<P>
-Este cach&eacute; no permite reenviar su petici&oacute;n porque trata de
-obligar a mantener una relaci&oacute;n de hermandad.
-Quiz&aacute;s el cliente en %i es un cach&eacute; que ha sido mal configurado.
-</P>
diff --git a/errors/Spanish/ERR_FTP_DISABLED b/errors/Spanish/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 3e80f38..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Servicio FTP deshabilitado
-</STRONG>
-</UL>
-
-<P>
-Este cach&eacute; no proporciona servicio cach&eacute; para el protocolo FTP.
-</P>
diff --git a/errors/Spanish/ERR_FTP_FAILURE b/errors/Spanish/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 09045cf..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Ha ocurrido un error de protocolo FTP
-mientras se intentaba traer el documento con URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envi&oacute; la siguiente orden FTP:
-<BLOCKQUOTE><PRE><STRONG>%f</STRONG></PRE></BLOCKQUOTE>
-y recibi&oacute; la siguiente respuesta:
-<BLOCKQUOTE><PRE><STRONG>%F</STRONG></PRE></BLOCKQUOTE>
-<BLOCKQUOTE><PRE><STRONG>%g</STRONG></PRE></BLOCKQUOTE>
-<P>
diff --git a/errors/Spanish/ERR_FTP_FORBIDDEN b/errors/Spanish/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index f236f62..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Ha ocurrido una falla de autenticaci&oacute;n cuando se
-trataba de conseguir el URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envi&oacute; el siguiente comando FTP:
-<blockquote><pre><strong>%f</strong></pre></blockquote>
-y recibi&oacute; esta respuesta
-<blockquote><pre><strong>%F</strong></pre></blockquote>
-<blockquote><pre><strong>%g</strong></pre></blockquote>
-
-
diff --git a/errors/Spanish/ERR_FTP_NOT_FOUND b/errors/Spanish/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index 7a33112..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-El siguiente URL no pudo ser obtenido:
-<A HREF="%U">%U</A>
-<P>
-Squid envi&oacute; el siguiente comando FTP:
-<blockquote><pre><strong>%f</strong></pre></blockquote>
-y recibi&oacute; esta respuesta
-<blockquote><pre><strong>%F</strong></pre></blockquote>
-<blockquote><pre><strong>%g</strong></pre></blockquote>
-<P>
-Esto puede ser causado por un URL FTP con un camino absoluto (y por
-lo tanto no cumple con RFC 1738). Si esta es la causa, entonces el 
-archivo puede ser obtenido en <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/Spanish/ERR_FTP_PUT_CREATED b/errors/Spanish/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index ac1a5ed..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Exitoso: Archivo Creado</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operaci&oacute;n Exitosa</H1>
-<H2>Archivo creado</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Spanish/ERR_FTP_PUT_ERROR b/errors/Spanish/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index c57fe07..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: falla en envio FTP</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>FTP PUT/envio fallido</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba hacer un PUT del siguiente URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envi&oacute; el siguiente comando FTP:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-y recibi&oacute; esta respuesta
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Esto significa que:
-<PRE>
-Chequee el camino, los permisos, espacio en disco e intente nuevamente.
-</PRE>
-
diff --git a/errors/Spanish/ERR_FTP_PUT_MODIFIED b/errors/Spanish/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index f51f31e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP PUT Exitoso: Archivo actualizado</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operaci&oacute;n Exitosa</H1>
-<H2>Archivo actualizado</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Spanish/ERR_FTP_UNAVAILABLE b/errors/Spanish/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 1fd465e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>EL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-El servidor FTP estaba muy ocupado cuando se intentaba obtener el URL:
-<A HREF="%U">%U</A>
-<P>
-Squid envi&oacute; el siguiente comando FTP:
-<blockquote><pre><strong>%f</strong></pre></blockquote>
-y recibi&oacute; esta respuesta
-<blockquote><pre><strong>%F</strong></pre></blockquote>
-<blockquote><pre><strong>%g</strong></pre></blockquote>
-
-
diff --git a/errors/Spanish/ERR_ICAP_FAILURE b/errors/Spanish/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/Spanish/ERR_INVALID_REQ b/errors/Spanish/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 569f999..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba procesar la petici&oacute;n:
-<PRE>
-%R
-</PRE>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Petici&oacute;n no v&aacute;lida.
-</STRONG>
-</UL>
-
-<P>
-Alg&uacute;n aspecto de la petici&oacute;n HTTP no es v&aacute;lido. 
-Posibles problemas:
-<UL>
-<LI>Falta o es desconocido el m&eacute;todo de la petici&oacute;n (no es 
-    GET ni POST)
-<LI>Falta el URL
-<LI>Falta el identificador HTTP (HTTP/1.0)
-<LI>La petici&oacute;n es demasiado grande.
-<LI>Hay caracteres ilegales en el nombre de m&aacute;quina;
-    el car&aacute;cter subrayado (_) no est&aacute; permitido.
-</UL>
-
-
diff --git a/errors/Spanish/ERR_INVALID_RESP b/errors/Spanish/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 39efff2..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba procesar la petici&oacute;n:
-<PRE>
-%R
-</PRE>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Respuesta no v&aacute;lida.
-</STRONG>
-</UL>
-
-<P>
-El mensaje de Respuesta HTTP recibido del servidor contactado 
-no pudo ser entendido o ten&iacute;a alguna malformaci&oacute;n.
-Por favor contacte al operador del sitio web. Quizas su
-administrador del cach&eacute; pueda darle a Ud. m&aacute;s 
-detalles acerca de la naturaleza exacta del problema en caso 
-de ser necesario.
-<P>Su administrador del cach&eacute; es <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Spanish/ERR_INVALID_URL b/errors/Spanish/ERR_INVALID_URL
deleted file mode 100644 (file)
index a0b9186..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-URL incorrecto.
-</STRONG>
-</UL>
-
-<P>
-Alg&uacute;n aspecto del URL solicitado es incorrecto. Posibles problemas:
-<UL>
-<LI>Falta o es incorrecto el protocolo de acceso (debe ser ``http://'' o 
-    similar)
-<LI>Falta el nombre de la m&aacute;quina
-<LI>Hay un doble-escape ilegal en la ruta de la URL
-<LI>Hay caracteres ilegales en el nombre de m&aacute;quina;
-    el caracter de subrayado (_) no est&aacute; permitido
-</UL>
diff --git a/errors/Spanish/ERR_LIFETIME_EXP b/errors/Spanish/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index e3d3bb2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Ha expirado el tiempo de vida de la conexi&oacute;n
-</STRONG>
-</UL>
-
-<P>
-Squid ha dado por terminada la petici&oacute;n porque se ha excedido
-el tiempo de vida m&aacute;ximo para una conexi&oacute;n.
-</P>
-
diff --git a/errors/Spanish/ERR_NO_RELAY b/errors/Spanish/ERR_NO_RELAY
deleted file mode 100644 (file)
index f5cf085..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-No hay una pasarela para protocolo Wais.
-</STRONG>
-</UL>
-
-<P>
-Este cach&eacute; no tiene definido ninguna pasarela para el protocolo WAIS !!
-&iexcl;Gr&iacute;tele al administrador del cach&eacute; !
-<P> Su administrador del cach&eacute; es <A HREF="mailto:%w>%w</A>.
diff --git a/errors/Spanish/ERR_ONLY_IF_CACHED_MISS b/errors/Spanish/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 355b112..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-No se encontr&oacute; un documento v&aacute;lido en el cach&eacute; y se 
-especific&oacute; la directiva <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-
-Ud. ha enviado una solicitud con la directiva de control del cach&eacute;
-<code>only-if-cached</code>. El documento no fue encontrado en el cach&eacute;,
-<em>o</em> requiere revalidaci&oacute;n prohibida por la directiva
-<code>only-if-cached</code>.
-
-</P>
diff --git a/errors/Spanish/ERR_READ_ERROR b/errors/Spanish/ERR_READ_ERROR
deleted file mode 100644 (file)
index 5db8ca8..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Error de lectura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Ha ocurrido alg&uacute;n problema mientras se le&iacute;an datos de la red.
-Por favor, int&eacute;ntelo de nuevo.
-</P>
diff --git a/errors/Spanish/ERR_READ_TIMEOUT b/errors/Spanish/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index c975a82..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Se acab&oacute; el tiempo m&aacute;ximo para lectura de datos de la red.
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Se acab&oacute; el tiempo m&aacute;ximo de lectura mientras se le&iacute;an
-datos de la red. La red o el servidor pueden estar congestionados. Por 
-favor, int&eacute;ntelo de nuevo
-</P>
diff --git a/errors/Spanish/ERR_SECURE_CONNECT_FAIL b/errors/Spanish/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Spanish/ERR_SHUTTING_DOWN b/errors/Spanish/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 6ec8e4c..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-
-Este cach&eacute; esta siendo desactivado y no puede atender su
-solicitud en este momento. Por favor reintente su solicitud
-nuevamente m&aacute;s tarde.
-
-</UL>
diff --git a/errors/Spanish/ERR_SOCKET_FAILURE b/errors/Spanish/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 1fba448..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Fallo en el puerto (socket)
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid ha sido incapaz de crear un puerto TCP, posiblemente debido
-al exceso de carga. Int&eacute;ntelo de nuevo, por favor.
diff --git a/errors/Spanish/ERR_TOO_BIG b/errors/Spanish/ERR_TOO_BIG
deleted file mode 100644 (file)
index 9404b73..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: La direcci&oacute;n solicitada no puede ser obtenida</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>La direcci&oacute;n solicitada no puede ser obtenida</H2>
-<HR noshade size="1px">
-<P>
-Mientras se descargaba la direcci&oacute;n:
-<A HREF="%U">%U</A>
-<P>
-Se encontr&oacute; el siguiente error:
-<UL>
-<LI>
-<STRONG>
-La direcci&oacute;n solicitada es demasiado larga.
-</STRONG>
-<P>
-Si est&aacute; haciendo una petici&oacute;n POST o PUT, el cuerpo (lo
-que est&aacute; intentando subir) es demasiado grande. Si est&aacute;
-haciendo una petici&oacute;n GET, entonces el cuerpo de la respuesta
-(que est&aacute; tratando de bajar) es demasiado grande. Estos
-l&iacute;mites fueron establecidos por el Proveedor de Servicios de
-Internet que opera este cach&eacute;. Por favor, contacte con &eacute;l
-directamente si cree que esto es un error.
-</UL>
-<P>
-Su administrador del cach&eacute; es <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Spanish/ERR_UNSUP_REQ b/errors/Spanish/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index 656ada7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-M&eacute;todo de la petici&oacute;n y protocolo no soportados.
-</STRONG>
-</UL>
-
-<P>
-Squid no admite todos los m&eacute;todos para todos los protocolos de acceso.
-Por ejemplo, no se puede hacer un POST a un servidor Gopher.
diff --git a/errors/Spanish/ERR_URN_RESOLVE b/errors/Spanish/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index fedf942..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URN solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>No se ha podido obtener una URL para el URN solicitado</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba obtener el URN:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-No se puede resolver el URN
-</STRONG>
-</UL>
-
-<P>
-Hey, no espere mucho de URNs en %T :)
-</P>
diff --git a/errors/Spanish/ERR_WRITE_ERROR b/errors/Spanish/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 45aee15..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Error de escritura
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Se ha producido un error mientras se escrib&iacute;an datos en la red.
-Por favor, int&eacute;ntelo de nuevo.
diff --git a/errors/Spanish/ERR_ZERO_SIZE_OBJECT b/errors/Spanish/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 43a5ca0..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-Respuesta vac&iacute;a (tama&ntilde;o cero)
-</STRONG>
-</UL>
-
-<P>
-Squid no ha recibido ninguna informaci&oacute;n en respuesta a esta 
-petici&oacute;n.
-</P>
diff --git a/errors/Spanish/README b/errors/Spanish/README
deleted file mode 100644 (file)
index 585e184..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-Thanks to Javier Puche <javier.puche@rediris.es>, Roberto Lumbreras
-<rover-squid@lander.es>, Juan Nicolas Ruiz N. <nicolas@ula.ve> and
-Sergio Rua <srua@debian.org> for creating these error pages in Spanish!
diff --git a/errors/Spanish/generic b/errors/Spanish/generic
deleted file mode 100644 (file)
index f5d953e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>El URL solicitado no se ha podido conseguir</H2>
-<HR noshade size="1px">
-<P>
-Mientras se intentaba traer el URL:
-<A HREF="%U">%U</A>
-<P>
-Ha ocurrido el siguiente problema:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-El sistema ha devuelto el siguiente mensaje:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Esto significa que:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
diff --git a/errors/Swedish/ERR_ACCESS_DENIED b/errors/Swedish/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 1276eee..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Tilltr&auml;de Nekas.
-</STRONG>
-<P>
-Tilltr&auml;deskontrollen f&ouml;rhindrar Er beg&auml;ran fr&aring;n
-att till&aring;tas vid den h&auml;r tidpunkten.  V&auml;nligen kontakta Er 
-tj&auml;nsteleverant&ouml;r om Ni finner detta inkorrekt.
-</UL>
-</P>
-
diff --git a/errors/Swedish/ERR_CACHE_ACCESS_DENIED b/errors/Swedish/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index d37a6cb..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Tilltr&auml;de till Cache Nekas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEL</H1>
-<H2>Tilltr&auml;de till Cache Nekas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Tilltr&auml;de till Cache Nekas.
-</STRONG>
-</UL>
-</P>
-
-<P>Ledsen, Ni &auml;r f&ouml;rn&auml;rvarande ej ber&auml;ttigad att beg&auml;ra:
-<PRE>    %U</PRE>
-fr&aring;n denna cache tills det att Ni har autentifierat Er.
-</P>
-
-<P> Ni m&aring;ste anv&auml;nda Netscape version 2.0 eller h&ouml;gre, eller Microsoft Internet
-Explorer 3.0, eller en HTTP/1.1 kompatibel l&auml;sare f&ouml;r att detta skall fungera.
-V&auml;nligen kontakta <A HREF="mailto:%w%W">cacheadministratorn</a> om Ni har sv&aring;righ
-eter
-med att autentifiera Er sj&auml;lv, eller <A HREF="http://%h/cgi-bin/chpasswd.cgi">byt</a> Ert l&ouml;senord.
-</P>
diff --git a/errors/Swedish/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Swedish/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index c9a6c6f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Tilltr&auml;de till Cachehanteraren Nekas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>FEL</H1>
-<H2>Tilltr&auml;de till Cachehanteraren Nekas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Tilltr&auml;de till Cachehanteraren Nekas
-</STRONG>
-</UL>
-</P>
-
-<P>Ledsen, Ni &auml;r f&ouml;rn&auml;rvarande ej ber&auml;ttigad att beg&auml;ra:
-<PRE>    %U</PRE>
-fr&aring;n denna cache tills det att Ni har autentifierat Er.
-</P>
-
-<P> Ni m&aring;ste anv&auml;nda Netscape version 2.0 eller h&ouml;gre, eller Microsoft Internet
-Explorer 3.0, eller en HTTP/1.1 kompatibel l&auml;sare f&ouml;r att detta skall fungera.
-V&auml;nligen kontakta <A HREF="mailto:%w%W">cacheadministratorn</a> om Ni har sv&aring;righeter 
-med att autentifiera Er sj&auml;lv, om Ni <em>&auml;r</em> 
-administratorn, l&auml;s Squid dokumentationen om cache hanterar interfacet och kontrollera 
-cache loggen f&ouml;r mer detaljerade felmeddelanden.</P>
diff --git a/errors/Swedish/ERR_CANNOT_FORWARD b/errors/Swedish/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 46ce665..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Kunde ej vidarebefodra f&ouml;rfr&aring;gan vid detta tillf&auml;lle.
-</STRONG>
-</UL>
-
-<P>
-Denna f&ouml;rfr&aring;gan kunde ej vidarebefodras till ursprunglig server eller till 
-&ouml;verliggande cache-noder.  Den mest sannolika anledningen till detta fel &auml;r:
-<UL>
-<LI>Cacheadministratorn till&aring;ter inte denna cache att g&ouml;ra  
-    direkta anslutningar till ursprungliga servrar, och
-<LI>alla &ouml;verliggande cache-noder kan ej n&aring;s f&ouml;r tillf&auml;llet.
-</UL>
-</P>
diff --git a/errors/Swedish/ERR_CONNECT_FAIL b/errors/Swedish/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index 839cdee..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde ej h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde ej h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Anslutningen Misslyckades
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Beg&auml;rd v&auml;rd eller n&auml;tverk kan vara nere.  V&auml;nligen f&ouml;rs&ouml;k igen.
-</P>
diff --git a/errors/Swedish/ERR_DNS_FAIL b/errors/Swedish/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 0837ff4..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<BLOCKQUOTE>
-Kunde inte f&aring; fram IP-adressen f&ouml;r v&auml;rdnamnet.
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-Namnservern returnerade:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Detta betyder att:
-<PRE>
- Cachen kunde inte l&ouml;sa upp v&auml;rdnamnet angivet i s&ouml;kv&auml;gen. 
- Kontrollera att adressen &auml;r korrekt. 
-</PRE>
-</P>
-
diff --git a/errors/Swedish/ERR_ESI b/errors/Swedish/ERR_ESI
deleted file mode 100644 (file)
index cae2060..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<BLOCKQUOTE>
-ESI bearbetning misslyckades.
-<I>%H</I>
-</BLOCKQUOTE>
-</UL>
-
-<P>
-ESI motorn returnerade:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Detta betyder att:
-<PRE>
- Surrogat servern kunde inte bearbeta ESI mallen. 
- V&auml;nligen kontakta den ansvariga f&ouml;r webbservern ifr&aring;ga.
-</PRE>
-<P>
-Addressen till ansvarig administrat&ouml;r &auml;r <A HREF="mailto:%w">%w</A>. 
-</P>
diff --git a/errors/Swedish/ERR_FORWARDING_DENIED b/errors/Swedish/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 375a497..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Vidarebefodran Nekad.
-</STRONG>
-</UL>
-
-<P>
-Denna cache kommer inte vidarebefodra en beg&auml;ran eftersom den f&ouml;rs&ouml;ker att tvinga sig till en r&auml;ttighet som den inte har.
- Kanske klienten vid %i &auml;r en cache som &auml;r felkonfigurerad.
-</P>
diff --git a/errors/Swedish/ERR_FTP_DISABLED b/errors/Swedish/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 4a62fe2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-FTP &auml;r Avst&auml;ngd
-</STRONG>
-</UL>
-
-<P>
-Denna cache st&ouml;djer inte FTP.
-</P>
diff --git a/errors/Swedish/ERR_FTP_FAILURE b/errors/Swedish/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 4d8eab4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Ett FTP protokollfel intr&auml;ffade
-vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Squid s&auml;nde f&ouml;ljande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Swedish/ERR_FTP_FORBIDDEN b/errors/Swedish/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 2ff4997..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Ett misslyckande vid FTP autentifiering intr&auml;ffade
-vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Squid s&auml;nde f&ouml;ljande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Swedish/ERR_FTP_NOT_FOUND b/errors/Swedish/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index 3d3fede..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-F&ouml;ljande URL kunde inte h&auml;mtas:
-<A HREF="%U">%U</A>
-<P>
-Squid s&auml;nde f&ouml;ljande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Detta kan orsakas av en FTP URL med en absolut s&ouml;kv&auml;g (vilket inte 
-&ouml;verensst&auml;mmer med RFC 1738). Om detta &auml;r orsaken, kan filen 
-&aring;terfinnas vid <A HREF="%B">%B</A>.
-</P>
-
diff --git a/errors/Swedish/ERR_FTP_PUT_CREATED b/errors/Swedish/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index 688988c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP SKICKA lyckades: Filen Skapades</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operationen lyckades</H1>
-<H2>Filein skapades</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Swedish/ERR_FTP_PUT_ERROR b/errors/Swedish/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index e081d10..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: FTP skicka misslyckades</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>FTP SKICKA/&ouml;verf&ouml;ra misslyckades</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att SKICKA f&ouml;ljande URL:
-<A HREF="%U">%U</A>
-<P>
-Squid s&auml;nde f&ouml;ljande FTP kommando:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-och fick till svar
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Prova att:
-<PRE>
-Kontrollera s&ouml;kv&auml;g, r&auml;ttigheter, diskutrymme och f&ouml;rs&ouml;k igen.
-</PRE>
-</P>
-
diff --git a/errors/Swedish/ERR_FTP_PUT_MODIFIED b/errors/Swedish/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 730b0ae..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FTP Skicka Lyckades!: Filen uppdaterades</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Operation var lyckad</H1>
-<H2>Filen uppdaterades</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Swedish/ERR_FTP_UNAVAILABLE b/errors/Swedish/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 5633fd4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-FTP servern var ej tillg&auml;nglig vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Squid s&auml;nde f&ouml;ljande FTP kommando:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-och fick till svar
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-</P>
-
diff --git a/errors/Swedish/ERR_ICAP_FAILURE b/errors/Swedish/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 86334e6..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-ICAP protocol error.
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-This means that:
-Some aspect of the ICAP communication failed. Possible problems:
-<UL>
-<LI>ICAP server is not reachable.
-<LI>Illegal response from ICAP server.
-</UL>
-</P>
-
diff --git a/errors/Swedish/ERR_INVALID_REQ b/errors/Swedish/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 9b86acc..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde ej h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde ej h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att behandla f&ouml;rfr&aring;gan:
-<PRE>
-%R
-</PRE>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Felaktig F&ouml;rfr&aring;gan
-</STRONG>
-</UL>
-
-<P>
-N&aring;gon eller n&aring;gra aspekter av HTTP f&ouml;rfr&aring;gan &auml;r felaktiga.  M&ouml;jliga problem:
-<UL>
-<LI>Avsaknad eller ok&auml;nd method f&ouml;r f&ouml;rfr&aring;gan
-<LI>Avsaknad URL
-<LI>Avsaknad HTTP identifierare (HTTP/1.0)
-<LI>F&ouml;rfr&aring;gan &auml;r f&ouml;r stor
-<LI>Inneh&aring;llsl&auml;ngden saknas f&ouml;r POST(posta) eller PUT(s&auml;tt) f&ouml;rfr&aring;gan
-<LI>Ej till&aring;tet tecken i v&auml;rdnamnet; '_' &auml;r ej till&aring;tna
-</UL>
-</P>
diff --git a/errors/Swedish/ERR_INVALID_RESP b/errors/Swedish/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 629e371..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>Fel: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Felaktigt svarsmeddelande
-</STRONG>
-</UL>
-
-<P>
-HTTP svarsmeddelandet ifr&aring;n den kontaktade servern &auml;r felaktigt och
-kunde inte tolkas. V&auml;nligen kontakta den ansvariga f&ouml;r webbservern ifr&aring;ga.
-Din cacheserver administrat&ouml;r man eventuellt ge dig mera information om
-det specifika problemet med denna sida.
-</P>
-
-<P>Din cacheserver administrat&ouml;r &auml;r <A HREF="mailto:%w">%w</A>. 
-</P>
-
diff --git a/errors/Swedish/ERR_INVALID_URL b/errors/Swedish/ERR_INVALID_URL
deleted file mode 100644 (file)
index bdb1f99..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde ej h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde ej h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Felaktig URL
-</STRONG>
-</UL>
-
-<P>
-N&aring;gon eller n&aring;gra aspekter av beg&auml;rd URL &auml;r inkorrekta.  M&ouml;jliga problem:
-<UL>
-<LI>Avsaknat eller felaktigt tilltr&auml;desprotokoll (ska vara `http://'' eller liknande)
-<LI>Avsaknat v&auml;rdnamn
-<LI>Ej till&aring;ten dubbel-escape i URL-S&ouml;kv&auml;gen
-<LI>Ej till&aring;tna tecken i v&auml;rdnamnet; '_' &auml;r ej till&aring;tna
-</UL>
-</P>
diff --git a/errors/Swedish/ERR_LIFETIME_EXP b/errors/Swedish/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index 60e6076..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Anslutnings levnadstid tog slut
-</STRONG>
-</UL>
-
-<P>
-Squid har terminerat Er beg&auml;ran p&aring; grund av att den har &ouml;verskridikt den till&aring;tna livstiden f&ouml;r en anslutning.
-</P>
diff --git a/errors/Swedish/ERR_NO_RELAY b/errors/Swedish/ERR_NO_RELAY
deleted file mode 100644 (file)
index e5db314..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Igen Wais Relay
-</STRONG>
-</UL>
-
-<P>
-Det finns ingen WAIS Relay v&auml;rd definerad f&ouml;r denna cache!  Skrik p&aring; din administrat&ouml;r.
-</P>
diff --git a/errors/Swedish/ERR_ONLY_IF_CACHED_MISS b/errors/Swedish/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 8fd8c76..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Senaste dokumentet &aring;terfanns inte i cachen och <code>bara-om-i-cache</code>
-direktivet &auml;r satt.
-</STRONG>
-</UL>
-
-<P>
-
-Du har beg&auml;rt ett dokument med <code>bara-om-i-cache</code> cache kontroll 
-direktivet. Dokumentet &aring;terfanns inte i cache databasen, <em>eller</em> det kr&auml;vs en uppdatering av cache databasen, men f&ouml;rhindras av 
-<code>bara-om-i-cache</code> direktivet.
-
-</P>
diff --git a/errors/Swedish/ERR_READ_ERROR b/errors/Swedish/ERR_READ_ERROR
deleted file mode 100644 (file)
index 113b0a5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-L&auml;sfel
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Ett fel intr&auml;ffade vid f&ouml;rs&ouml;k att l&auml;sa data fr&aring;n n&auml;tverket.  V&auml;nligen
-f&ouml;rs&ouml;k igen.
-</P>
diff --git a/errors/Swedish/ERR_READ_TIMEOUT b/errors/Swedish/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index a289610..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-L&auml;sningen fick en timeout
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I>    %E</I></PRE>
-
-<P>
-En timeout intr&auml;ffade i v&auml;ntan p&aring; att f&aring; l&auml;sa data fr&aring;n n&auml;tverket.  Antingen &auml;r servern nere eller ocks&aring; &auml;r n&auml;tverket tungt belastat. V&auml;nligen f&ouml;rs&ouml;k igen.
-</P>
diff --git a/errors/Swedish/ERR_SECURE_CONNECT_FAIL b/errors/Swedish/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Swedish/ERR_SHUTTING_DOWN b/errors/Swedish/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index a723096..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<P>
-Denna cache h&aring;ller p&aring; att st&auml;nga av sig och kan d&auml;rf&ouml;r inte behandla din f&ouml;rfr&aring;gan. V&auml;nligen f&ouml;rs&ouml;k igen lite senare.
-</P>
diff --git a/errors/Swedish/ERR_SOCKET_FAILURE b/errors/Swedish/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index eee8416..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Socket Fel
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid kan inte skapa en TCP socket, gissningsvis p&aring; grund av tung last.
-V&auml;nligen f&ouml;rs&ouml;k igen.
-</P>
diff --git a/errors/Swedish/ERR_TOO_BIG b/errors/Swedish/ERR_TOO_BIG
deleted file mode 100644 (file)
index 4664048..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Den beg&auml;rda URL:en kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Den beg&auml;rda URL:en kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-N&auml;r f&ouml;ljande URL f&ouml;rs&ouml;ktes h&auml;mtas:
-<A HREF="%U">%U</A>
-<P>
-Intr&auml;ffade f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Beg&auml;ran &auml;r f&ouml;r stor.
-</STRONG>
-<P>
-Ifall du utf&ouml;r en POST eller PUT beg&auml;ran, s&aring; &auml;r beg&auml;ran
-(det du f&ouml;rs&ouml;ker ladda upp) f&ouml;r stor. Ifall du utf&ouml;rde
-en GET beg&auml;ran, s&aring; &auml;r svaret (det du f&ouml;rs&ouml;ker ladda ned)
-f&ouml;r stort.   Dessa gr&auml;nser &auml;r inst&auml;llda av den internet
-leverant&ouml;r som handhar den h&auml;r cacheservern. Var v&auml;nlig
-kontakta dem direkt ifall du anser att detta &auml;r ett fel.
-</UL>
-<P>
-Din cacheserver administrat&ouml;r &auml;r <A HREF="mailto:%w%W">%w</A>.
diff --git a/errors/Swedish/ERR_UNSUP_REQ b/errors/Swedish/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index ef1fff2..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Ej st&ouml;d f&ouml;r beg&auml;rd metod och protokoll
-</STRONG>
-</UL>
-
-<P>
-Squid st&ouml;djer inte alla fr&aring;gemetoder f&ouml;r alla protokoll.
-Till exempel, Ni kan inte POST'a en Gopher f&ouml;rfr&aring;gan.
-</P>
-
diff --git a/errors/Swedish/ERR_URN_RESOLVE b/errors/Swedish/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 0c15e61..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URN kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>En URL f&ouml;r beg&auml;rd URN kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URN:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Kan inte l&ouml;sa upp URN namnet
-</STRONG>
-</UL>
-
-<P>
-Men hall&aring;, f&ouml;rv&auml;nta dig inte f&ouml;r mycket fr&aring;n en URNs p&aring; %T :)
-</P>
diff --git a/errors/Swedish/ERR_WRITE_ERROR b/errors/Swedish/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 2df0653..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Skriv Fel
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Ett fel intr&auml;ffade vid f&ouml;rs&ouml;k att skriva till n&auml;tverket. V&auml;nligen f&ouml;rs&ouml;k igen.
-</P>
diff --git a/errors/Swedish/ERR_ZERO_SIZE_OBJECT b/errors/Swedish/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 41a31f2..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>FEL: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-Storleken p&aring; svaret var lika med noll
-</STRONG>
-</UL>
-
-<P>
-Squid tog inte emot n&aring;got data f&ouml;r denna f&ouml;rfr&aring;gan.
-</P>
diff --git a/errors/Swedish/README b/errors/Swedish/README
deleted file mode 100644 (file)
index ee7e805..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-Thank you to Stefan Månsby <stefan@mansby.com> for
-creating these error pages in Swedish!
diff --git a/errors/Swedish/generic b/errors/Swedish/generic
deleted file mode 100644 (file)
index b9d2abb..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD>
-<TITLE>Fel: Beg&auml;rd URL kunde inte h&auml;mtas</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>FEL</H1>
-<H2>Beg&auml;rd URL kunde inte h&auml;mtas</H2>
-<HR noshade size="1px">
-<P>
-Vid f&ouml;rs&ouml;ket att h&auml;mta URL:
-<A HREF="%U">%U</A>
-<P>
-Mottogs f&ouml;ljande fel:
-<UL>
-<LI>
-<STRONG>
-@SHORT_DESCRIPTION@
-</STRONG>
-</UL>
-
-<P>
-Systemet returnerade:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Detta inneb&auml;r att:
-<PRE>
-    @LONG_DESCRIPTION@
-</PRE>
-</P>
-
diff --git a/errors/TRANSLATORS b/errors/TRANSLATORS
new file mode 100644 (file)
index 0000000..fb5a258
--- /dev/null
@@ -0,0 +1,64 @@
+Special thanks go to people who have volunteered their time, effort,
+and ideas to make Squid available as multi-langual software.
+
+       Aecio F. Neto <aecioneto@gmail.com>
+       Alexandre Correa <ajcorrea@gmail.com>
+       Amos Jeffries <squid3@treenet.co.nz>
+       Constantin Rack <constantin.rack@vigos.com>
+       Francesco Chemolli <gkinkie@gmail.com>
+       Robert Forster <Dessa@gmake.de>
+
+via Rosetta Translation Project and Canonical Ltd.
+
+       Brie A. Gordon 
+       Hasbinur 
+       Iker Sagasti Markina <iker@irontec.com>
+       Ricardo Ichizo <n1ghtcr4wler@gmail.com>
+       Tobias 
+
+
+Thanks also to all the original translators for their great
+work on the old squid translations.
+
+Armenian               Arthur Tumanyan <arthurtumanyan@yahoo.com>
+Azerbaijani            Rauf Kuliyev <rauf@kuliyev.com>
+Bulgarian              Evgeny Gechev <etg@setcom.bg>
+Bulgarian              Svetlin Simeonov <simeonov@netplusdb.bg>
+Catalan                        Jordi Bruguera <jordi@dns1.grn.es>
+Czech                  Jakub Nantl <Jakub.Nantl@angel.cz>
+Czech                  Radek Malcic <malcic@sdc.bno.cdrail.cz>
+Danish                 Morten S. Nielsen <mortensn@geocities.com>
+Dutch                  Mark Visser <mark@cal026031.student.utwente.nl>
+Dutch                  Remco van Mook
+Dutch                  Bart Koelman
+Estonian               Toomas Soome <tsoome@ut.ee>
+Finnish                        Panu H_llfors <panupa@iki.fi>
+French                 Frank DENIS -Jedi/Sector One- <j@4u.net>
+German                 Bernd P. Ziller <bziller@ba-stuttgart.de>
+German                 Jens Frank <jf@jf.kki.org>
+German                 Anke S. <as@kki.org>
+Greek                  George Papamichelakis <george@step.gr>
+Hebrew                 "yoav" <yoavb@zavit.net.il>
+Hungarian              Bertold Kolics <bertold@sztaki.hu>
+Italian                        Alessio Bragadini <alessio@dsnet.it>
+Italian                        Marco Mesturino <sw_tools@beatles.cselt.it>
+Japanese               Makoto MATSUSHITA <matusita@ics.es.osaka-u.ac.jp>
+Korean                 Jaeyeon Jung <jjung@cosmos.kaist.ac.kr>
+Lithuanian             "DVM" <dvm382@takas.lt>
+Polish                 Maciej Kozinski <Maciej.Kozinski@boa.uni.torun.pl>
+Portugese              Pedro Lineu Orso <orso@pop.hsbcbamerindus.com.br>
+Romanian               Iusty Pop Daniel <iusty@netcompsj.ro>
+Russian                        Ilia Zadorozhko <falcon@netsy.com>
+Russian                        Andrew L. Davydov <davydov@okbmei.msk.su>
+Serian                 Zoran Verovski <zoran@hemofarm.co.yu>
+Simplify Chinese       Wang DaQing <wdq@bigfoot.com>
+Slovak                 Peter Hanecak <hany@megaloman.sk>
+Spanish                        Javier Puche <javier.puche@rediris.es>
+Spanish                        Roberto Lumbreras <rover-squid@lander.es>
+Spanish                        Juan Nicolas Ruiz N. <nicolas@ula.ve>
+Spanish                        Sergio Rua <srua@debian.org>
+Swedish                        Stefan M_nsby <stefan@mansby.com>
+Traditional Chinese    Erick C. Chang <erick@mail.thu.edu.tw>
+Turkish                        Tural KAPTAN <kaptan@kaptan.ulakbim.gov.tr>
+Ukrainian              <mr.petruccio@gmail.com>
+Ukrainian              Vitaliy Matytsyn <vm@if.bank.gov.ua>
diff --git a/errors/Ukrainian-1251/ERR_ACCESS_DENIED b/errors/Ukrainian-1251/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index 2bdbc7f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Äîñòóï çàáîðîíåíèé.
-</STRONG>
-<P>
-Íàñòðîéêà êîíòðîëþ äîñòóïó íå äîçâîëÿº âèêîíàòè Âàø 
-çàïèò â äàíèé ÷àñ. ßêùî Âè ââàæàºòå öå íåïðàâèëüíèì, òî,
-áóäü-ëàñêà, êîíòàêòóéòå ç Âàøèì ²íòåðíåò ïðîâàéäåðîì.
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-1251/ERR_CACHE_ACCESS_DENIED b/errors/Ukrainian-1251/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index e9cff83..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Äîñòóï äî êåøó çàáîðîíåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Äîñòóï äî êåøó çàáîðîíåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Äîñòóï äî êåøó çàáîðîíåíèé
-</STRONG>
-</UL>
-</P>
-
-<P>Âèáà÷òå, àëå Âè íå ìîæåòå çàïðîñèòè:
-<PRE>    %U</PRE>
-ç öüîãî êåøó äî òèõ ï³ð, ïîêè íå ïðîéäåòå àóòåíòèô³êàö³þ.
-</P>
-
-<P>
-Âàì ïîòð³áíî âèêîðèñòîâóâàòè Netscape âåðñ³¿ 2.0 ÷è âèùå, àáî Microsoft Internet
-Explorer 3.0, àáî HTTP/1.1 ñóì³ñíèé áðîóçåð. Áóäü-ëàñêà, çâ'ÿæ³òüñÿ
-ç <A HREF="mailto:%w">àäì³í³ñòðàòîðîì êåøó</a>, ÿêùî ó Âàñ âèíèêëè òðóäíîù³ 
-ç àóòåíòèô³êàö³ºþ, àáî <A HREF="http://%h/cgi-bin/chpasswd.cgi">çì³í³òü</a> 
-Âàø ïàðîëü ïî çàìîâ÷óâàííþ.
-</P>
diff --git a/errors/Ukrainian-1251/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Ukrainian-1251/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index cf35aab..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Äîñòóï äî êåðóâàííÿ êåøîì çàáîðîíåíèé
-</STRONG>
-</UL>
-</P>
-
-<P>Âèáà÷òå, Âè íå ìîæåòå çàïðîñèòè:
-<PRE>    %U</PRE>
-ç öüîãî êåø ìåíåäæåðà äî òèõ ï³ð, ïîêè íå ïðîéäåòå àóòåíòèô³êàö³þ.
-</P>
-<P>
-Âàì ïîòð³áíî âèêîðèñòîâóâàòè Netscape âåðñ³¿ 2.0 ÷è âèùå, àáî Microsoft Internet
-Explorer 3.0, àáî HTTP/1.1 ñóì³ñíèé áðîóçåð. Áóäü-ëàñêà, çâ'ÿæ³òüñÿ
-ç <A HREF="mailto:%w">àäì³í³ñòðàòîðîì êåøó</a>, ÿêùî ó Âàñ âèíèêëè òðóäíîù³ 
-ç àóòåíòèô³êàö³ºþ, à ÿêùî <em>Âè</em> º àäì³í³ñòðàòîðîì,
-ïðî÷èòàéòå äîêóìåíòàö³þ Squid ïî ³íòåðôåéñó êåðóâàííÿ êåøîì ³ ïåðåâ³ðòå
-æóðíàë êåøó (cache log) íà ïðåäìåò á³ëüø äåòàëüíèõ ïîâ³äîìëåíü ïðî ïîìèëêè.</P>
diff --git a/errors/Ukrainian-1251/ERR_CANNOT_FORWARD b/errors/Ukrainian-1251/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index b497ed5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
- äàíèé ìîìåíò íåìîæëèâî ïåðåñëàòè öåé çàïèò
-</STRONG>
-</UL>
-
-<P>
-Äàíèé çàïèò íå ìîæå áóòè ïåðåñëàíèé äî ñåðâåðà-äæåðåëà, ÷è äî áóäü-ÿêîãî
-ç âèùåñòîÿ÷èõ êåø³â.  Íàéá³ëüø â³ðîã³äíà ïðè÷èíà ïîìèëêè:
-<UL>
-<LI>Àäì³í³ñòðàòîð êåøó çàáîðîíèâ âèêîíóâàòè ïðÿì³ ç'ºäíàííÿ 
-ç ñåðâåðàìè-äæåðåëàìè (origin servers) ³
-<LI>óñ³ âèùåñòîÿ÷³ êåø-ñåðâåðà (parent caches) â äàíèé ìîìåíò íåäîñòóïí³.
-</UL>
-<P>Âàøèì êåø àäì³í³ñòðàòîðîì º <A HREF="mailto:%w">%w</A>. 
-
diff --git a/errors/Ukrainian-1251/ERR_CONNECT_FAIL b/errors/Ukrainian-1251/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index 43d9013..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íå âäàëîñü âñòàíîâèòè ç'ºäíàííÿ
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìëÿº:
-<PRE><I>    %E</I></PRE>
-
-<P>
-³ääàëåí³ õîñò ÷è ìåðåæà íå â³äïîâ³äàþòü. Áóäü-ëàñêà, ïîâòîð³òü ñâ³é çàïèò ùå ðàç.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_DNS_FAIL b/errors/Ukrainian-1251/ERR_DNS_FAIL
deleted file mode 100644 (file)
index e094d08..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<BLOCKQUOTE>
-Íåìîæëèâî âèçíà÷èòè IP àäðåñó âóçëà
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-DNS ñåðâåð ïîâ³äîìëÿº:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Öå îçíà÷àº:
-<PRE>
- Êåøó íå âäàëîñÿ âèçíà÷èòè ³ì'ÿ ñåðâåðà, âêàçàíå â URL.
- Ïåðåâ³ðòå ïðàâèëüí³ñòü íàïèñàííÿ àäðåñó.
-</PRE>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-1251/ERR_ESI b/errors/Ukrainian-1251/ERR_ESI
deleted file mode 100644 (file)
index 7ad1805..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<BLOCKQUOTE>
-Îáðîáêà ESI çàâåðøèëàñü íåâäàëî.
-</BLOCKQUOTE>
-
-<P>
-ESI ïðîöåñîð ïîâ³äîìèâ:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-Öå îçíà÷ຠùî:
-<PRE>
- Çàì³ííèê íå çì³ã îáðîáèòè ESI òåìïëåéò. Áóäü-ëàñêà ïîâ³äîìòå ïðî öþ ïîìèëêó âåáìàéñòðà. 
-</PRE>
-<P>Âàøèì âåáìàéñòðîì º <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Ukrainian-1251/ERR_FORWARDING_DENIED b/errors/Ukrainian-1251/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 54ce021..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïåðåñèëêà çàáîðîíåíà
-</STRONG>
-</UL>
-
-<P>
-Öåé êåø íå ïåðåñèëàòèìå Âàø çàïèò, òîìó ùî â³í íàìàãàºòüñÿ âñòàíîâèòè áðàòí³ â³äíîñèíè (sibling relationship).
-Ìîæëèâî, ê볺íò %i - íåâ³ðíî ñêîíô³ãóðîâàíèé êåø.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-1251/ERR_FTP_DISABLED b/errors/Ukrainian-1251/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 57e0144..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-FTP äîñòóï çàáîðîíåíèé.
-</STRONG>
-</UL>
-
-<P>
-Öåé êåø íå ï³äòðèìóº ïðîòîêîë FTP.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-1251/ERR_FTP_FAILURE b/errors/Ukrainian-1251/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 6a5e576..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL
-âèíèêëà ïîìèëêà ïðîòîêîëó FTP:
-<A HREF="%U">%U</A>
-<P>
-Squid ïîñëàâ íàñòóïíó êîìàíäó FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_FTP_FORBIDDEN b/errors/Ukrainian-1251/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 01f4435..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-Ñòàëàñü íåâäàëà FTP àóòåíòèô³êàö³ÿ
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_FTP_NOT_FOUND b/errors/Ukrainian-1251/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index e288d45..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-Äàíèé URL íå ìîæå áóòè äîñòàâëåíèé:
-<A HREF="%U">%U</A>
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Öå ìîæå áóòè âèêëèêàíî FTP àäðåñîþ ç àáñîëþòíèì øëÿõîì (ÿêèé íå  
-â³äïîâ³äຠñòàíäàðòó RFC 1738). Â òàêîìó âèïàäêó, ôàéë ìîæå áóòè 
-çíàéäåíèé çà àäðåñîþ <A HREF="%B">%B</A>.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_FTP_PUT_CREATED b/errors/Ukrainian-1251/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index 7e180cd..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>Êîìàíäà FTP PUT çàâåðøèëàñü óñï³øíî: Ôàéë ñòâîðåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Îïåðàö³ÿ çàâåðøèëàñü óñï³øíî</H1>
-<H2>Ôàéë ñòâîðåíèé</H2>
-<HR noshade size="1px">
-
diff --git a/errors/Ukrainian-1251/ERR_FTP_PUT_ERROR b/errors/Ukrainian-1251/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index 97e4610..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Êîìàíäà FTP PUT/upload çàâåðøèëàñü íåâäàëî</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>FTP PUT/upload çàâåðøèëàñü íåâäàëî</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè ôàéëà çà àäðåñîþ:
-<A HREF="%U">%U</A>
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Öå îçíà÷ຠùî:
-<PRE>
-Âàì ñë³ä ïåðåâ³ðèòè øëÿõ, ïðàâà äîñòóïó, â³ëüíå ì³ñöå ³ ï³ñëÿ öüîãî ñïðîáóâàòè çíîâó.
-</PRE>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_FTP_PUT_MODIFIED b/errors/Ukrainian-1251/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index ef8286d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>Êîìàíäà FTP PUT çàâåðøèëàñü óñï³øíî: Ôàéë îíîâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Îïåðàö³ÿ çàâåðøèëàñü óñï³øíî.</H1>
-<H2>Ôàéë îíîâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Ukrainian-1251/ERR_FTP_UNAVAILABLE b/errors/Ukrainian-1251/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index b602401..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-FTP ñåðâåð áóâ ïåðåãðóæåíèé
-<P>
-Squid ïîñëàâ íàñòóïíó FTP êîìàíäó:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-³ ïîò³ì îòðèìàâ òàêó â³äïîâ³äü
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-1251/ERR_ICAP_FAILURE b/errors/Ukrainian-1251/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 82b8b63..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà ïðîòîêîëó ICAP.
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Öå ìîæå îçíà÷àòè:
-Äåÿê³ àñïåêòè ICAP ç'ºäíàííÿ íåñïðàâí³. Ìîæëèâ³ ïðîáëåìè:
-<UL>
-<LI>Äîñòóï äî ICAP ñåðâåðó íåìîæëèâèé.
-<LI>Íåâ³ðíà â³äïîâ³äü â³ä ICAP ñåðâåðó.
-</UL>
-</P>
-
diff --git a/errors/Ukrainian-1251/ERR_INVALID_REQ b/errors/Ukrainian-1251/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 028da1d..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåâ³ðíèé çàïèò
-</STRONG>
-</UL>
-
-<P>
-Äåÿê³ àñïåêòè HTTP çàïèòó íåâ³ðí³. Ìîæëèâ³ ïðîáëåìè:
-<UL>
-<LI>³äñóòí³é àáî íåâ³äîìèé ìåòîä çàïèòó (GET, POST)
-<LI>³äñóòí³é URL
-<LI>³äñóòí³é HTTP ³äåíòèô³êàòîð (HTTP/1.0)
-<LI>Çàïèò íàäòî âåëèêèé
-<LI>Íå âêàçàíèé Content-Length äëÿ çàïèò³â POST ÷è PUT
-<LI>Íåäîïóñòèìèé ñèìâîë â ³ìåí³ ñåðâåðà; ï³ä÷åðêóâàííÿ íåäîïóñòèì³
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_INVALID_RESP b/errors/Ukrainian-1251/ERR_INVALID_RESP
deleted file mode 100644 (file)
index c3b9351..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåâ³ðíèé çàïèò
-</STRONG>
-</UL>
-
-<P>
-The HTTP â³äïîâ³äíå ïîâ³äîìëåííÿ, îòðèìàíå â³ä ñåðâåðà
-íå ìîæå áóòè âèçíà÷åíå àáî º íåïðàâèëüíî çôîðìîâàíèì.
-Áóäü-ëàñêà, êîíòàêòóéòå ç àäì³í³ñòðàòîðîì ñàéòó. Âàø àäì³í³ñòðàòîð
-êåøó ìîæå íàäàòè Âàì á³ëüø äåòàëüíó ³íôîðìàö³þ ïðî 
-äàíó ïîìèëêó, ÿêùî öå íåîáõ³äíî.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-1251/ERR_INVALID_URL b/errors/Ukrainian-1251/ERR_INVALID_URL
deleted file mode 100644 (file)
index dcb19b4..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåïðàâèëüíèé URL
-</STRONG>
-</UL>
-
-<P>
-Äåÿê³ àñïåêòè çàïðîøåíîãî URL º íåïðàâèëüíèìè. Ìîæëèâ³ ïðîáëåìè:
-<UL>
-<LI>³äñóòí³é ÷è íåâ³ðíèé ïðîòîêîë äîñòóïó (ïîâèíåí áóòè `http://'' àáî
-ñõîæèé)
-<LI>³äñóòíº ³ì'ÿ ñåðâåðà
-<LI>Íåäîïóñòèìèé ïîäâ³éíèé êåðóþ÷èé ñèìâîë â URL-øëÿõó
-<LI>Íåäîïóñòèìèé ñèìâîë â ³ìåí³ ñåðâåðà; ï³ä÷åðêóâàííÿ íåäîïóñòèì³
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_LIFETIME_EXP b/errors/Ukrainian-1251/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index 87e8cfe..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-×àñ ç'ºäíàííÿ çàê³í÷èâñÿ
-</STRONG>
-</UL>
-
-<P>
-Squid çàâåðøèâ Âàø çàïèò ó çâ'ÿçêó ç ïåðåâèùåííÿì
-ìàêñèìàëüíîãî ÷àñó ç'ºäíàííÿ.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_NO_RELAY b/errors/Ukrainian-1251/ERR_NO_RELAY
deleted file mode 100644 (file)
index cac818c..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Wais Relay íå âèçíà÷åíèé
-</STRONG>
-</UL>
-
-<P>
-Äëÿ öüîãî êåøó íå âèçíà÷åíèé WAIS Relay host!  Çâåðí³òüñÿ äî àäì³í³ñòðàòîðà.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_ONLY_IF_CACHED_MISS b/errors/Ukrainian-1251/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 4bf4cb0..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-³äïîâ³äíèé îá'ºêò íå áóâ çíàéäåíèé â êåø³, â ðåçóëüòàò³ ÷îãî áóëà
-âèçíà÷åíà äèðåêòèâà <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-Âû ïîñëàëè çàïèò ç äèðåêòèâîþ êåø-êîíòðîëþ <code>only-if-cached</code>.
-Îá'ºêò íå áóâ çíàéäåíèé â êåø³, <em>àáî</em> â³í âèìàãຠîíîâëåííÿ,
-ÿêå çàáîðîíåíî <code>only-if-cached</code> äèðåêòèâîþ.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_READ_ERROR b/errors/Ukrainian-1251/ERR_READ_ERROR
deleted file mode 100644 (file)
index 6fea0d5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà ÷èòàííÿ
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I>    %E</I></PRE>
-
-<P>
-ϳä ÷àñ ÷èòàííÿ äàíèõ ç ìåðåæ³ âèíèêëà ïîìèëêà. Áóäü-ëàñêà, ïîâòîð³òü
-Âàø çàïèò.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_READ_TIMEOUT b/errors/Ukrainian-1251/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index 7fb6ea5..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïåðåâèùåíèé ÷àñ î÷³êóâàííÿ â³äïîâ³ä³.
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Ïåðåâèùåíèé ÷àñ î÷³êóâàííÿ â³äïîâ³ä³ ï³ä ÷àñ ÷èòàííÿ äàíèõ ç ìåðåæ³. Ìåðåæà
-÷è ñåðâåð ìîæóòü íå ïðàöþâàòè ÷è áóòè ïåðåãðóæåíèìè. Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-1251/ERR_SECURE_CONNECT_FAIL b/errors/Ukrainian-1251/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Ukrainian-1251/ERR_SHUTTING_DOWN b/errors/Ukrainian-1251/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 35ea961..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<P>
-Öåé êåø â äàíèé ìîìåíò ÷àñó çíàõîäèòüñÿ â ïðîöåñ³ çóïèíêè ³ íå ìîæå îáñëóæèòè
-âàø çàïèò. Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò ÷åðåç äåÿêèé ÷àñ çíîâó.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_SOCKET_FAILURE b/errors/Ukrainian-1251/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 11b1bfc..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà TCP socket.
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid íå ìîæå ñòâîðèòè TCP socket, ñêîð³ø çà âñå ÷åðåç äóæå âèñîêó çàãðóçêó ñåðâåðà.
-Áóäü-ëàñêà, ïîâòîð³òü Âàø çàïèò.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_TOO_BIG b/errors/Ukrainian-1251/ERR_TOO_BIG
deleted file mode 100644 (file)
index 72de80b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Çàïèò ÷è â³äïîâ³äü íàäòî âåëèêà.
-</STRONG>
-
-<P>
-Ó âèïàäêó, ÿêùî Âè çä³éñíþâàëè POST ÷è PUT çàïèò, òîä³ Âàø çàïèò
-(òå, ùî Âè íàìàãàëèñü çàêà÷àòè) º íàäòî âåëèêèì. ßêùî Âè 
-çä³éñíþâàëè GET çàïèò, òîä³ â³äêëèê (òå, ùî Âè íàìàãàëèñü âèêà÷àòè
-) º íàäòî âåëèêèì. Ö³ îáìåæåííÿ áóëè âñòàíîâëåí³
-Âàøèì ²íòåðíåò Ïðîâàéäåðîì, ÿêèé êåðóº êåøîì. Áóäü-ëàñêà,
-ïîâ³äîìòå éîãî, ÿêùî Âè ââàæàºòå äàíå ïîâ³äîìëåííÿ ïîìèëêîþ.
-</UL>
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_UNSUP_REQ b/errors/Ukrainian-1251/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index fe6d66b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ìåòîä ÷è ïðîòîêîë çàïèòó íå ï³äòðèìóþòüñÿ
-</STRONG>
-</UL>
-
-<P>
-Squid íå ï³äòðèìóº âñ³ ìåòîäè çàïèò³â äëÿ óñ³õ ïðîòîêîë³â.
-Íàïðèêëàä, äëÿ ïðîòîêîëó Gopher Âè íå ìîæåòå âèêîíàòè çàïèò POST.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-1251/ERR_URN_RESOLVE b/errors/Ukrainian-1251/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 8e0ec33..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URN íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>URL äëÿ çàïðîøåíîãî URN íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URN:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Íåìîæëèâî âèçíà÷èòè URN <br>
-(Cannot Resolve URN)
-</STRONG>
-</UL>
-
-<P>
-Íå âàðòî áàãàòî ÷îãî î÷³êóâàòè â³ä ö³º¿ òåõíîëî㳿 URNs íà %T :)
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/ERR_WRITE_ERROR b/errors/Ukrainian-1251/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 1ad3f4b..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-Ïîìèëêà çàïèñó
-</STRONG>
-</UL>
-
-<P>
-Ñèñòåìà ïîâ³äîìèëà:
-<PRE><I>    %E</I></PRE>
-
-<P>
-ϳä ÷àñ â³äïðàâëåííÿ ³íôîðìàö³¿ â ìåðåæó âèíèêëà ïîìèëêà. Áóäü-ëàñêà, ïîâòîð³òü
-Âàø çàïèò
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
-
-
-
-
diff --git a/errors/Ukrainian-1251/ERR_ZERO_SIZE_OBJECT b/errors/Ukrainian-1251/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 73ef10b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
-<TITLE>ÏÎÌÈËÊÀ: Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ÏÎÌÈËÊÀ</H1>
-<H2>Çàïðîøåíèé URL íå ìîæå áóòè äîñòàâëåíèé</H2>
-<HR noshade size="1px">
-<P>
-ϳä ÷àñ äîñòàâêè URL:
-<A HREF="%U">%U</A>
-<P>
-Âèíèêëà íàñòóïíà ïîìèëêà:
-<UL>
-<LI>
-<STRONG>
-³äïîâ³äü íóëüîâî¿ äîâæèíè
-</STRONG>
-</UL>
-
-<P>
-Squid íå îòðèìàâ áóäü-ÿêèõ äàíèõ äëÿ öüîãî çàïèòó.
-<P>Âàøèì àäì³í³ñòðàòîðîì êåøó º <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-1251/README b/errors/Ukrainian-1251/README
deleted file mode 100644 (file)
index 8dafd52..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Thank you to
-       Ïåòðî Íåê <mr.petruccio@gmail.com>
-       Vitaliy Matytsyn (main) <vm@if.bank.gov.ua>
-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
deleted file mode 100644 (file)
index 49f382a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-äÏÓÔÕРÚÁÂÏÒÏÎÅÎÉÊ.
-</STRONG>
-<P>
-îÁÓÔÒÏÊËÁ ËÏÎÔÒÏÌÀ ÄÏÓÔÕÐÕ ÎÅ ÄÏÚ×ÏÌѤ ×ÉËÏÎÁÔÉ ÷ÁÛ 
-ÚÁÐÉÔ × ÄÁÎÉÊ ÞÁÓ. ñËÝÏ ÷É ××ÁÖÁ¤ÔÅ ÃÅ ÎÅÐÒÁ×ÉÌØÎÉÍ, ÔÏ,
-ÂÕÄØ-ÌÁÓËÁ, ËÏÎÔÁËÔÕÊÔÅ Ú ÷ÁÛÉÍ ¶ÎÔÅÒÎÅÔ ÐÒÏ×ÁÊÄÅÒÏÍ.
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-koi8-u/ERR_CACHE_ACCESS_DENIED b/errors/Ukrainian-koi8-u/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index 88b76c6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: äÏÓÔÕРÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ðïíéìëá</H1>
-<H2>äÏÓÔÕРÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-äÏÓÔÕРÄÏ ËÅÛÕ ÚÁÂÏÒÏÎÅÎÉÊ
-</STRONG>
-</UL>
-</P>
-
-<P>÷ÉÂÁÞÔÅ, ÁÌÅ ÷É ÎÅ ÍÏÖÅÔÅ ÚÁÐÒÏÓÉÔÉ:
-<PRE>    %U</PRE>
-Ú ÃØÏÇÏ ËÅÛÕ ÄÏ ÔÉȠЦÒ, ÐÏËÉ ÎÅ ÐÒÏÊÄÅÔÅ ÁÕÔÅÎÔÉƦËÁæÀ.
-</P>
-
-<P>
-÷ÁÍ ÐÏÔÒ¦ÂÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Netscape ×ÅÒÓ¦§ 2.0 ÞÉ ×ÉÝÅ, ÁÂÏ Microsoft Internet
-Explorer 3.0, ÁÂÏ HTTP/1.1 ÓÕͦÓÎÉÊ ÂÒÏÕÚÅÒ. âÕÄØ-ÌÁÓËÁ, Ú×'ÑÖ¦ÔØÓÑ
-Ú <A HREF="mailto:%w">ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ</a>, ÑËÝÏ Õ ÷ÁÓ ×ÉÎÉËÌÉ ÔÒÕÄÎÏݦ 
-Ú ÁÕÔÅÎÔÉƦËÁæ¤À, ÁÂÏ <A HREF="http://%h/cgi-bin/chpasswd.cgi">ÚͦΦÔØ</a> 
-÷ÁÛ ÐÁÒÏÌØ ÐÏ ÚÁÍÏ×ÞÕ×ÁÎÎÀ.
-</P>
diff --git a/errors/Ukrainian-koi8-u/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Ukrainian-koi8-u/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index eac1a26..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: äÏÓÔÕРÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ðïíéìëá</H1>
-<H2>äÏÓÔÕРÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-äÏÓÔÕРÄÏ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ÚÁÂÏÒÏÎÅÎÉÊ
-</STRONG>
-</UL>
-</P>
-
-<P>÷ÉÂÁÞÔÅ, ÷É ÎÅ ÍÏÖÅÔÅ ÚÁÐÒÏÓÉÔÉ:
-<PRE>    %U</PRE>
-Ú ÃØÏÇÏ ËÅÛ ÍÅÎÅÄÖÅÒÁ ÄÏ ÔÉȠЦÒ, ÐÏËÉ ÎÅ ÐÒÏÊÄÅÔÅ ÁÕÔÅÎÔÉƦËÁæÀ.
-</P>
-<P>
-÷ÁÍ ÐÏÔÒ¦ÂÎÏ ×ÉËÏÒÉÓÔÏ×Õ×ÁÔÉ Netscape ×ÅÒÓ¦§ 2.0 ÞÉ ×ÉÝÅ, ÁÂÏ Microsoft Internet
-Explorer 3.0, ÁÂÏ HTTP/1.1 ÓÕͦÓÎÉÊ ÂÒÏÕÚÅÒ. âÕÄØ-ÌÁÓËÁ, Ú×'ÑÖ¦ÔØÓÑ
-Ú <A HREF="mailto:%w">ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ</a>, ÑËÝÏ Õ ÷ÁÓ ×ÉÎÉËÌÉ ÔÒÕÄÎÏݦ 
-Ú ÁÕÔÅÎÔÉƦËÁæ¤À, Á ÑËÝÏ <em>÷É</em> ¤ ÁÄͦΦÓÔÒÁÔÏÒÏÍ,
-ÐÒÏÞÉÔÁÊÔÅ ÄÏËÕÍÅÎÔÁæÀ Squid ÐÏ ¦ÎÔÅÒÆÅÊÓÕ ËÅÒÕ×ÁÎÎÑ ËÅÛÏÍ ¦ ÐÅÒÅצÒÔÅ
-ÖÕÒÎÁÌ ËÅÛÕ (cache log) ÎÁ ÐÒÅÄÍÅԠ¦ÌØÛ ÄÅÔÁÌØÎÉÈ ÐÏצÄÏÍÌÅÎØ ÐÒÏ ÐÏÍÉÌËÉ.</P>
diff --git a/errors/Ukrainian-koi8-u/ERR_CANNOT_FORWARD b/errors/Ukrainian-koi8-u/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index 710f492..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-÷ ÄÁÎÉÊ ÍÏÍÅÎÔ ÎÅÍÏÖÌÉ×Ï ÐÅÒÅÓÌÁÔÉ ÃÅÊ ÚÁÐÉÔ
-</STRONG>
-</UL>
-
-<P>
-äÁÎÉÊ ÚÁÐÉÔ ÎÅ ÍÏÖÅ ÂÕÔÉ ÐÅÒÅÓÌÁÎÉÊ ÄÏ ÓÅÒ×ÅÒÁ-ÄÖÅÒÅÌÁ, ÞÉ ÄÏ ÂÕÄØ-ÑËÏÇÏ
-Ú ×ÉÝÅÓÔÏÑÞÉÈ ËÅÛ¦×.  îÁʦÌØ۠צÒÏǦÄÎÁ ÐÒÉÞÉÎÁ ÐÏÍÉÌËÉ:
-<UL>
-<LI>áÄͦΦÓÔÒÁÔÏÒ ËÅÛÕ ÚÁÂÏÒÏÎÉ× ×ÉËÏÎÕ×ÁÔÉ ÐÒÑͦ Ú'¤ÄÎÁÎÎÑ 
-Ú ÓÅÒ×ÅÒÁÍÉ-ÄÖÅÒÅÌÁÍÉ (origin servers) ¦
-<LI>ÕÓ¦ ×ÉÝÅÓÔÏÑÞ¦ ËÅÛ-ÓÅÒ×ÅÒÁ (parent caches) × ÄÁÎÉÊ ÍÏÍÅÎÔ ÎÅÄÏÓÔÕÐΦ.
-</UL>
-<P>÷ÁÛÉÍ ËÅÛ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ¤ <A HREF="mailto:%w">%w</A>. 
-
diff --git a/errors/Ukrainian-koi8-u/ERR_CONNECT_FAIL b/errors/Ukrainian-koi8-u/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index a79d254..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅ ×ÄÁÌÏÓØ ×ÓÔÁÎÏ×ÉÔÉ Ú'¤ÄÎÁÎÎÑ
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÌѤ:
-<PRE><I>    %E</I></PRE>
-
-<P>
-÷¦ÄÄÁÌÅΦ ÈÏÓÔ ÞÉ ÍÅÒÅÖÁ ÎŠצÄÐÏצÄÁÀÔØ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÓצʠÚÁÐÉÔ ÝÅ ÒÁÚ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_DNS_FAIL b/errors/Ukrainian-koi8-u/ERR_DNS_FAIL
deleted file mode 100644 (file)
index 9946e27..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<BLOCKQUOTE>
-îÅÍÏÖÌÉ×Ï ×ÉÚÎÁÞÉÔÉ IP ÁÄÒÅÓÕ ×ÕÚÌÁ
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-DNS ÓÅÒ×ÅÒ ÐÏצÄÏÍÌѤ:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-ãÅ ÏÚÎÁÞÁ¤:
-<PRE>
- ëÅÛÕ ÎÅ ×ÄÁÌÏÓÑ ×ÉÚÎÁÞÉÔÉ ¦Í'Ñ ÓÅÒ×ÅÒÁ, ×ËÁÚÁÎÅ × URL.
- ðÅÒÅצÒÔÅ ÐÒÁ×ÉÌØΦÓÔØ ÎÁÐÉÓÁÎÎÑ ÁÄÒÅÓÕ.
-</PRE>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-koi8-u/ERR_ESI b/errors/Ukrainian-koi8-u/ERR_ESI
deleted file mode 100644 (file)
index 9f0e64b..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<BLOCKQUOTE>
-ïÂÒÏÂËÁ ESI ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ.
-</BLOCKQUOTE>
-
-<P>
-ESI ÐÒÏÃÅÓÏÒ ÐÏצÄÏÍÉ×:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-ãÅ ÏÚÎÁÞÁ¤ ÝÏ:
-<PRE>
- úÁͦÎÎÉË ÎÅ ÚͦǠÏÂÒÏÂÉÔÉ ESI ÔÅÍÐÌÅÊÔ. âÕÄØ-ÌÁÓËÁ ÐÏצÄÏÍÔÅ ÐÒÏ ÃÀ ÐÏÍÉÌËÕ ×ÅÂÍÁÊÓÔÒÁ. 
-</PRE>
-<P>÷ÁÛÉÍ ×ÅÂÍÁÊÓÔÒÏÍ ¤ <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Ukrainian-koi8-u/ERR_FORWARDING_DENIED b/errors/Ukrainian-koi8-u/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index 63b7d25..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÅÒÅÓÉÌËÁ ÚÁÂÏÒÏÎÅÎÁ
-</STRONG>
-</UL>
-
-<P>
-ãÅÊ ËÅÛ ÎÅ ÐÅÒÅÓÉÌÁÔÉÍÅ ÷ÁÛ ÚÁÐÉÔ, ÔÏÍÕ ÝϠצΠÎÁÍÁÇÁ¤ÔØÓÑ ×ÓÔÁÎÏ×ÉÔÉ ÂÒÁÔΦ ×¦ÄÎÏÓÉÎÉ (sibling relationship).
-íÏÖÌÉ×Ï, Ë̦¤ÎÔ %i - ÎÅצÒÎÏ ÓËÏÎƦÇÕÒÏ×ÁÎÉÊ ËÅÛ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_DISABLED b/errors/Ukrainian-koi8-u/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index eaf103e..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-FTP ÄÏÓÔÕРÚÁÂÏÒÏÎÅÎÉÊ.
-</STRONG>
-</UL>
-
-<P>
-ãÅÊ ËÅ۠ΊЦÄÔÒÉÍÕ¤ ÐÒÏÔÏËÏÌ FTP.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_FAILURE b/errors/Ukrainian-koi8-u/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 39d6e98..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL
-×ÉÎÉËÌÁ ÐÏÍÉÌËÁ ÐÒÏÔÏËÏÌÕ FTP:
-<A HREF="%U">%U</A>
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ ËÏÍÁÎÄÕ FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏԦ͠ÏÔÒÉÍÁ× ÔÁËՠצÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_FORBIDDEN b/errors/Ukrainian-koi8-u/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index 404ebcb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-óÔÁÌÁÓØ ÎÅ×ÄÁÌÁ FTP ÁÕÔÅÎÔÉƦËÁæÑ
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏԦ͠ÏÔÒÉÍÁ× ÔÁËՠצÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_NOT_FOUND b/errors/Ukrainian-koi8-u/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index c4d1b09..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-äÁÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ:
-<A HREF="%U">%U</A>
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏԦ͠ÏÔÒÉÍÁ× ÔÁËՠצÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-ãÅ ÍÏÖÅ ÂÕÔÉ ×ÉËÌÉËÁÎÏ FTP ÁÄÒÅÓÏÀ Ú ÁÂÓÏÌÀÔÎÉÍ ÛÌÑÈÏÍ (ÑËÉÊ ÎÅ  
-צÄÐÏצÄÁ¤ ÓÔÁÎÄÁÒÔÕ RFC 1738). ÷ ÔÁËÏÍÕ ×ÉÐÁÄËÕ, ÆÁÊÌ ÍÏÖÅ ÂÕÔÉ 
-ÚÎÁÊÄÅÎÉÊ ÚÁ ÁÄÒÅÓÏÀ <A HREF="%B">%B</A>.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_PUT_CREATED b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index 9ff1f04..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ëÏÍÁÎÄÁ FTP PUT ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ: æÁÊÌ ÓÔ×ÏÒÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ïÐÅÒÁæѠÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ</H1>
-<H2>æÁÊÌ ÓÔ×ÏÒÅÎÉÊ</H2>
-<HR noshade size="1px">
-
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_PUT_ERROR b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index 4cf9a77..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: ëÏÍÁÎÄÁ FTP PUT/upload ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>FTP PUT/upload ÚÁ×ÅÒÛÉÌÁÓØ ÎÅ×ÄÁÌÏ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ ÆÁÊÌÁ ÚÁ ÁÄÒÅÓÏÀ:
-<A HREF="%U">%U</A>
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-¦ ÐÏԦ͠ÏÔÒÉÍÁ× ÔÁËՠצÄÐÏצÄØ
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-ãÅ ÏÚÎÁÞÁ¤ ÝÏ:
-<PRE>
-÷ÁÍ Ó̦ĠÐÅÒÅצÒÉÔÉ ÛÌÑÈ, ÐÒÁ×Á ÄÏÓÔÕÐÕ, ×¦ÌØΊͦÓÃÅ ¦ Ð¦ÓÌÑ ÃØÏÇÏ ÓÐÒÏÂÕ×ÁÔÉ ÚÎÏ×Õ.
-</PRE>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_PUT_MODIFIED b/errors/Ukrainian-koi8-u/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index e0d35b7..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ëÏÍÁÎÄÁ FTP PUT ÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ: æÁÊÌ ÏÎÏ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ïÐÅÒÁæѠÚÁ×ÅÒÛÉÌÁÓØ ÕÓЦÛÎÏ.</H1>
-<H2>æÁÊÌ ÏÎÏ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Ukrainian-koi8-u/ERR_FTP_UNAVAILABLE b/errors/Ukrainian-koi8-u/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 60d6eb0..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-FTP ÓÅÒ×ÅÒ ÂÕ× ÐÅÒÅÇÒÕÖÅÎÉÊ
-<P>
-Squid ÐÏÓÌÁ× ÎÁÓÔÕÐÎÕ FTP ËÏÍÁÎÄÕ:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-¦ ÐÏԦ͠ÏÔÒÉÍÁ× ÔÁËՠצÄÐÏצÄØ
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-koi8-u/ERR_ICAP_FAILURE b/errors/Ukrainian-koi8-u/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index 2871186..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ ÐÒÏÔÏËÏÌÕ ICAP.
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I>    %E</I></PRE>
-
-<P>
-ãÅ ÍÏÖÅ ÏÚÎÁÞÁÔÉ:
-äÅÑ˦ ÁÓÐÅËÔÉ ICAP Ú'¤ÄÎÁÎÎÑ ÎÅÓÐÒÁ×Φ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ:
-<UL>
-<LI>äÏÓÔÕРÄÏ ICAP ÓÅÒ×ÅÒÕ ÎÅÍÏÖÌÉ×ÉÊ.
-<LI>îÅצÒÎÁ ×¦ÄÐÏצÄؠצĠICAP ÓÅÒ×ÅÒÕ.
-</UL>
-</P>
-
diff --git a/errors/Ukrainian-koi8-u/ERR_INVALID_REQ b/errors/Ukrainian-koi8-u/ERR_INVALID_REQ
deleted file mode 100644 (file)
index cd58aaa..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅצÒÎÉÊ ÚÁÐÉÔ
-</STRONG>
-</UL>
-
-<P>
-äÅÑ˦ ÁÓÐÅËÔÉ HTTP ÚÁÐÉÔÕ ÎÅצÒΦ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ:
-<UL>
-<LI>÷¦ÄÓÕÔΦʠÁÂÏ ÎÅצÄÏÍÉÊ ÍÅÔÏÄ ÚÁÐÉÔÕ (GET, POST)
-<LI>÷¦ÄÓÕÔΦʠURL
-<LI>÷¦ÄÓÕÔΦʠHTTP ¦ÄÅÎÔÉƦËÁÔÏÒ (HTTP/1.0)
-<LI>úÁÐÉÔ ÎÁÄÔÏ ×ÅÌÉËÉÊ
-<LI>îÅ ×ËÁÚÁÎÉÊ Content-Length ÄÌÑ ÚÁÐÉԦנPOST ÞÉ PUT
-<LI>îÅÄÏÐÕÓÔÉÍÉÊ ÓÉÍ×ÏÌ × ¦ÍÅΦ ÓÅÒ×ÅÒÁ; Ð¦ÄÞÅÒËÕ×ÁÎÎÑ ÎÅÄÏÐÕÓÔÉͦ
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_INVALID_RESP b/errors/Ukrainian-koi8-u/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 57c08cf..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅצÒÎÉÊ ÚÁÐÉÔ
-</STRONG>
-</UL>
-
-<P>
-The HTTP ×¦ÄÐÏצÄÎÅ ÐÏצÄÏÍÌÅÎÎÑ, ÏÔÒÉÍÁΊצĠÓÅÒ×ÅÒÁ
-ÎÅ ÍÏÖÅ ÂÕÔÉ ×ÉÚÎÁÞÅÎÅ ÁÂÏ ¤ ÎÅÐÒÁ×ÉÌØÎÏ ÚÆÏÒÍÏ×ÁÎÉÍ.
-âÕÄØ-ÌÁÓËÁ, ËÏÎÔÁËÔÕÊÔÅ Ú ÁÄͦΦÓÔÒÁÔÏÒÏÍ ÓÁÊÔÕ. ÷ÁÛ ÁÄͦΦÓÔÒÁÔÏÒ
-ËÅÛÕ ÍÏÖÅ ÎÁÄÁÔÉ ÷Á͠¦ÌØÛ ÄÅÔÁÌØÎÕ ¦ÎÆÏÒÍÁæÀ ÐÒÏ 
-ÄÁÎÕ ÐÏÍÉÌËÕ, ÑËÝÏ ÃÅ ÎÅÏÂȦÄÎÏ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-koi8-u/ERR_INVALID_URL b/errors/Ukrainian-koi8-u/ERR_INVALID_URL
deleted file mode 100644 (file)
index 9980014..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅÐÒÁ×ÉÌØÎÉÊ URL
-</STRONG>
-</UL>
-
-<P>
-äÅÑ˦ ÁÓÐÅËÔÉ ÚÁÐÒÏÛÅÎÏÇÏ URL ¤ ÎÅÐÒÁ×ÉÌØÎÉÍÉ. íÏÖÌÉצ ÐÒÏÂÌÅÍÉ:
-<UL>
-<LI>÷¦ÄÓÕÔΦʠÞÉ ÎÅצÒÎÉÊ ÐÒÏÔÏËÏÌ ÄÏÓÔÕÐÕ (ÐÏ×ÉÎÅΠÂÕÔÉ `http://'' ÁÂÏ
-ÓÈÏÖÉÊ)
-<LI>÷¦ÄÓÕÔΤ ¦Í'Ñ ÓÅÒ×ÅÒÁ
-<LI>îÅÄÏÐÕÓÔÉÍÉÊ ÐÏÄצÊÎÉÊ ËÅÒÕÀÞÉÊ ÓÉÍ×ÏÌ × URL-ÛÌÑÈÕ
-<LI>îÅÄÏÐÕÓÔÉÍÉÊ ÓÉÍ×ÏÌ × ¦ÍÅΦ ÓÅÒ×ÅÒÁ; Ð¦ÄÞÅÒËÕ×ÁÎÎÑ ÎÅÄÏÐÕÓÔÉͦ
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_LIFETIME_EXP b/errors/Ukrainian-koi8-u/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index a4bacf9..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-þÁÓ Ú'¤ÄÎÁÎÎÑ ÚÁ˦ÎÞÉ×ÓÑ
-</STRONG>
-</UL>
-
-<P>
-Squid ÚÁ×ÅÒÛÉ× ÷ÁÛ ÚÁÐÉÔ Õ Ú×'ÑÚËÕ Ú ÐÅÒÅ×ÉÝÅÎÎÑÍ
-ÍÁËÓÉÍÁÌØÎÏÇÏ ÞÁÓÕ Ú'¤ÄÎÁÎÎÑ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_NO_RELAY b/errors/Ukrainian-koi8-u/ERR_NO_RELAY
deleted file mode 100644 (file)
index 603391b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-Wais Relay ÎÅ ×ÉÚÎÁÞÅÎÉÊ
-</STRONG>
-</UL>
-
-<P>
-äÌÑ ÃØÏÇÏ ËÅÛÕ ÎÅ ×ÉÚÎÁÞÅÎÉÊ WAIS Relay host!  ú×ÅÒΦÔØÓÑ ÄÏ ÁÄͦΦÓÔÒÁÔÏÒÁ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_ONLY_IF_CACHED_MISS b/errors/Ukrainian-koi8-u/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index 9bc794a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-÷¦ÄÐÏצÄÎÉÊ ÏÂ'¤ËÔ ÎÅ ÂÕ× ÚÎÁÊÄÅÎÉÊ × ËÅÛ¦, × ÒÅÚÕÌØÔÁÔ¦ ÞÏÇÏ ÂÕÌÁ
-×ÉÚÎÁÞÅÎÁ ÄÉÒÅËÔÉ×Á <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-÷Ù ÐÏÓÌÁÌÉ ÚÁÐÉÔ Ú ÄÉÒÅËÔÉ×ÏÀ ËÅÛ-ËÏÎÔÒÏÌÀ <code>only-if-cached</code>.
-ïÂ'¤ËÔ ÎÅ ÂÕ× ÚÎÁÊÄÅÎÉÊ × ËÅÛ¦, <em>ÁÂÏ</em> ×¦Î ×ÉÍÁÇÁ¤ ÏÎÏ×ÌÅÎÎÑ,
-ÑËÅ ÚÁÂÏÒÏÎÅÎÏ <code>only-if-cached</code> ÄÉÒÅËÔÉ×ÏÀ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_READ_ERROR b/errors/Ukrainian-koi8-u/ERR_READ_ERROR
deleted file mode 100644 (file)
index f70f36f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ ÞÉÔÁÎÎÑ
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I>    %E</I></PRE>
-
-<P>
-ð¦Ä ÞÁÓ ÞÉÔÁÎÎÑ ÄÁÎÉÈ Ú ÍÅÒÅÖ¦ ×ÉÎÉËÌÁ ÐÏÍÉÌËÁ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ
-÷ÁÛ ÚÁÐÉÔ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_READ_TIMEOUT b/errors/Ukrainian-koi8-u/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index d29b06e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÅÒÅ×ÉÝÅÎÉÊ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎѠצÄÐÏצĦ.
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I>    %E</I></PRE>
-
-<P>
-ðÅÒÅ×ÉÝÅÎÉÊ ÞÁÓ ÏÞ¦ËÕ×ÁÎÎѠצÄÐÏצĦ Ð¦Ä ÞÁÓ ÞÉÔÁÎÎÑ ÄÁÎÉÈ Ú ÍÅÒÅÖ¦. íÅÒÅÖÁ
-ÞÉ ÓÅÒ×ÅÒ ÍÏÖÕÔØ ÎÅ ÐÒÁÃÀ×ÁÔÉ ÞÉ ÂÕÔÉ ÐÅÒÅÇÒÕÖÅÎÉÍÉ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-koi8-u/ERR_SECURE_CONNECT_FAIL b/errors/Ukrainian-koi8-u/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Ukrainian-koi8-u/ERR_SHUTTING_DOWN b/errors/Ukrainian-koi8-u/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 3e9461a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<P>
-ãÅÊ ËÅÛ × ÄÁÎÉÊ ÍÏÍÅÎÔ ÞÁÓÕ ÚÎÁÈÏÄÉÔØÓÑ × ÐÒÏÃÅÓ¦ ÚÕÐÉÎËÉ ¦ ÎÅ ÍÏÖÅ ÏÂÓÌÕÖÉÔÉ
-×ÁÛ ÚÁÐÉÔ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ ÞÅÒÅÚ ÄÅÑËÉÊ ÞÁÓ ÚÎÏ×Õ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_SOCKET_FAILURE b/errors/Ukrainian-koi8-u/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index 1777b76..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ TCP socket.
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid ÎÅ ÍÏÖÅ ÓÔ×ÏÒÉÔÉ TCP socket, ÓËÏÒ¦Û ÚÁ ×ÓÅ ÞÅÒÅÚ ÄÕÖÅ ×ÉÓÏËÕ ÚÁÇÒÕÚËÕ ÓÅÒ×ÅÒÁ.
-âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ ÷ÁÛ ÚÁÐÉÔ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_TOO_BIG b/errors/Ukrainian-koi8-u/ERR_TOO_BIG
deleted file mode 100644 (file)
index f4ae4d0..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-úÁÐÉÔ ÞɠצÄÐÏצÄØ ÎÁÄÔÏ ×ÅÌÉËÁ.
-</STRONG>
-
-<P>
-õ ×ÉÐÁÄËÕ, ÑËÝÏ ÷É ÚĦÊÓÎÀ×ÁÌÉ POST ÞÉ PUT ÚÁÐÉÔ, ÔÏĦ ÷ÁÛ ÚÁÐÉÔ
-(ÔÅ, ÝÏ ÷É ÎÁÍÁÇÁÌÉÓØ ÚÁËÁÞÁÔÉ) ¤ ÎÁÄÔÏ ×ÅÌÉËÉÍ. ñËÝÏ ÷É 
-ÚĦÊÓÎÀ×ÁÌÉ GET ÚÁÐÉÔ, ÔÏĦ ×¦ÄËÌÉË (ÔÅ, ÝÏ ÷É ÎÁÍÁÇÁÌÉÓØ ×ÉËÁÞÁÔÉ
-) ¤ ÎÁÄÔÏ ×ÅÌÉËÉÍ. ã¦ ÏÂÍÅÖÅÎÎÑ ÂÕÌÉ ×ÓÔÁÎÏ×ÌÅΦ
-÷ÁÛÉÍ ¶ÎÔÅÒÎÅÔ ðÒÏ×ÁÊÄÅÒÏÍ, ÑËÉÊ ËÅÒÕ¤ ËÅÛÏÍ. âÕÄØ-ÌÁÓËÁ,
-ÐÏצÄÏÍÔÅ ÊÏÇÏ, ÑËÝÏ ÷É ××ÁÖÁ¤ÔÅ ÄÁÎÅ ÐÏצÄÏÍÌÅÎÎÑ ÐÏÍÉÌËÏÀ.
-</UL>
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_UNSUP_REQ b/errors/Ukrainian-koi8-u/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index a618435..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-íÅÔÏÄ ÞÉ ÐÒÏÔÏËÏÌ ÚÁÐÉÔՠΊЦÄÔÒÉÍÕÀÔØÓÑ
-</STRONG>
-</UL>
-
-<P>
-Squid ÎŠЦÄÔÒÉÍÕ¤ ×Ó¦ ÍÅÔÏÄÉ ÚÁÐÉԦנÄÌÑ ÕӦȠÐÒÏÔÏËÏ̦×.
-îÁÐÒÉËÌÁÄ, ÄÌÑ ÐÒÏÔÏËÏÌÕ Gopher ÷É ÎÅ ÍÏÖÅÔÅ ×ÉËÏÎÁÔÉ ÚÁÐÉÔ POST.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-koi8-u/ERR_URN_RESOLVE b/errors/Ukrainian-koi8-u/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 42a6922..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URN ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>URL ÄÌÑ ÚÁÐÒÏÛÅÎÏÇÏ URN ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URN:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-îÅÍÏÖÌÉ×Ï ×ÉÚÎÁÞÉÔÉ URN <br>
-(Cannot Resolve URN)
-</STRONG>
-</UL>
-
-<P>
-îÅ ×ÁÒÔÏ ÂÁÇÁÔÏ ÞÏÇÏ ÏÞ¦ËÕ×ÁÔɠצĠ椧 ÔÅÈÎÏÌÏǦ§ URNs ÎÁ %T :)
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/ERR_WRITE_ERROR b/errors/Ukrainian-koi8-u/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index ebcad88..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-ðÏÍÉÌËÁ ÚÁÐÉÓÕ
-</STRONG>
-</UL>
-
-<P>
-óÉÓÔÅÍÁ ÐÏצÄÏÍÉÌÁ:
-<PRE><I>    %E</I></PRE>
-
-<P>
-ð¦Ä ÞÁӠצÄÐÒÁ×ÌÅÎÎÑ ¦ÎÆÏÒÍÁ槠נÍÅÒÅÖÕ ×ÉÎÉËÌÁ ÐÏÍÉÌËÁ. âÕÄØ-ÌÁÓËÁ, ÐÏ×ÔÏÒ¦ÔØ
-÷ÁÛ ÚÁÐÉÔ
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
-
-
-
-
diff --git a/errors/Ukrainian-koi8-u/ERR_ZERO_SIZE_OBJECT b/errors/Ukrainian-koi8-u/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 2556a63..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-u">
-<TITLE>ðïíéìëá: úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ðïíéìëá</H1>
-<H2>úÁÐÒÏÛÅÎÉÊ URL ÎÅ ÍÏÖÅ ÂÕÔÉ ÄÏÓÔÁ×ÌÅÎÉÊ</H2>
-<HR noshade size="1px">
-<P>
-ð¦Ä ÞÁÓ ÄÏÓÔÁ×ËÉ URL:
-<A HREF="%U">%U</A>
-<P>
-÷ÉÎÉËÌÁ ÎÁÓÔÕÐÎÁ ÐÏÍÉÌËÁ:
-<UL>
-<LI>
-<STRONG>
-÷¦ÄÐÏצÄØ ÎÕÌØÏ×ϧ ÄÏ×ÖÉÎÉ
-</STRONG>
-</UL>
-
-<P>
-Squid ÎÅ ÏÔÒÉÍÁ× ÂÕÄØ-ÑËÉÈ ÄÁÎÉÈ ÄÌÑ ÃØÏÇÏ ÚÁÐÉÔÕ.
-<P>÷ÁÛÉÍ ÁÄͦΦÓÔÒÁÔÏÒÏÍ ËÅÛÕ ¤ <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-koi8-u/README b/errors/Ukrainian-koi8-u/README
deleted file mode 100644 (file)
index 0568e85..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Thank you to
-       ðÅÔÒÏ îÅË <mr.petruccio@gmail.com>
-       Vitaliy Matytsyn (main) <vm@if.bank.gov.ua>
-for creating these error pages in Ukrainian!
diff --git a/errors/Ukrainian-utf8/ERR_ACCESS_DENIED b/errors/Ukrainian-utf8/ERR_ACCESS_DENIED
deleted file mode 100644 (file)
index e113691..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Доступ заборонений.
-</STRONG>
-<P>
-Настройка контролю доступу не дозволяє виконати Ваш 
-запит в даний час. Якщо Ви вважаєте це неправильним, то,
-будь-ласка, контактуйте з Вашим Інтернет провайдером.
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-utf8/ERR_CACHE_ACCESS_DENIED b/errors/Ukrainian-utf8/ERR_CACHE_ACCESS_DENIED
deleted file mode 100644 (file)
index 30f0b8e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Доступ до кешу заборонений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Доступ до кешу заборонений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Доступ до кешу заборонений
-</STRONG>
-</UL>
-</P>
-
-<P>Вибачте, але Ви не можете запросити:
-<PRE>    %U</PRE>
-з цього кешу до тих пір, поки не пройдете аутентифікацію.
-</P>
-
-<P>
-Вам потрібно використовувати Netscape версії 2.0 чи вище, або Microsoft Internet
-Explorer 3.0, або HTTP/1.1 сумісний броузер. Будь-ласка, зв'яжіться
-з <A HREF="mailto:%w">адміністратором кешу</a>, якщо у Вас виникли труднощі 
-з аутентифікацією, або <A HREF="http://%h/cgi-bin/chpasswd.cgi">змініть</a> 
-Ваш пароль по замовчуванню.
-</P>
diff --git a/errors/Ukrainian-utf8/ERR_CACHE_MGR_ACCESS_DENIED b/errors/Ukrainian-utf8/ERR_CACHE_MGR_ACCESS_DENIED
deleted file mode 100644 (file)
index 3195ebd..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Доступ до керування кешом заборонений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD>
-<BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Доступ до керування кешом заборонений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Доступ до керування кешом заборонений
-</STRONG>
-</UL>
-</P>
-
-<P>Вибачте, Ви не можете запросити:
-<PRE>    %U</PRE>
-з цього кеш менеджера до тих пір, поки не пройдете аутентифікацію.
-</P>
-<P>
-Вам потрібно використовувати Netscape версії 2.0 чи вище, або Microsoft Internet
-Explorer 3.0, або HTTP/1.1 сумісний броузер. Будь-ласка, зв'яжіться
-з <A HREF="mailto:%w">адміністратором кешу</a>, якщо у Вас виникли труднощі 
-з аутентифікацією, а якщо <em>Ви</em> є адміністратором,
-прочитайте документацію Squid по інтерфейсу керування кешом і перевірте
-журнал кешу (cache log) на предмет більш детальних повідомлень про помилки.</P>
diff --git a/errors/Ukrainian-utf8/ERR_CANNOT_FORWARD b/errors/Ukrainian-utf8/ERR_CANNOT_FORWARD
deleted file mode 100644 (file)
index b8d3b4d..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-В даний момент неможливо переслати цей запит
-</STRONG>
-</UL>
-
-<P>
-Даний запит не може бути пересланий до сервера-джерела, чи до будь-якого
-з вищестоячих кешів.  Найбільш вірогідна причина помилки:
-<UL>
-<LI>Адміністратор кешу заборонив виконувати прямі з'єднання 
-з серверами-джерелами (origin servers) і
-<LI>усі вищестоячі кеш-сервера (parent caches) в даний момент недоступні.
-</UL>
-<P>Вашим кеш адміністратором є <A HREF="mailto:%w">%w</A>. 
-
diff --git a/errors/Ukrainian-utf8/ERR_CONNECT_FAIL b/errors/Ukrainian-utf8/ERR_CONNECT_FAIL
deleted file mode 100644 (file)
index 9b0abbb..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Не вдалось встановити з'єднання
-</STRONG>
-</UL>
-
-<P>
-Система повідомляє:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Віддалені хост чи мережа не відповідають. Будь-ласка, повторіть свій запит ще раз.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_DNS_FAIL b/errors/Ukrainian-utf8/ERR_DNS_FAIL
deleted file mode 100644 (file)
index f4290aa..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<BLOCKQUOTE>
-Неможливо визначити IP адресу вузла
-<I>%H</I>
-</BLOCKQUOTE>
-
-<P>
-DNS сервер повідомляє:
-<BLOCKQUOTE>
-%z
-</BLOCKQUOTE>
-
-<P>
-Це означає:
-<PRE>
- Кешу не вдалося визначити ім'я сервера, вказане в URL.
- Перевірте правильність написання адресу.
-</PRE>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-utf8/ERR_ESI b/errors/Ukrainian-utf8/ERR_ESI
deleted file mode 100644 (file)
index 74006de..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<BLOCKQUOTE>
-Обробка ESI завершилась невдало.
-</BLOCKQUOTE>
-
-<P>
-ESI процесор повідомив:
-<BLOCKQUOTE>
-%Z
-</BLOCKQUOTE>
-
-<P>
-Це означає що:
-<PRE>
- Замінник не зміг обробити ESI темплейт. Будь-ласка повідомте про цю помилку вебмайстра. 
-</PRE>
-<P>Вашим вебмайстром є <A HREF="mailto:%w">%w</A>. 
diff --git a/errors/Ukrainian-utf8/ERR_FORWARDING_DENIED b/errors/Ukrainian-utf8/ERR_FORWARDING_DENIED
deleted file mode 100644 (file)
index f130954..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Пересилка заборонена
-</STRONG>
-</UL>
-
-<P>
-Цей кеш не пересилатиме Ваш запит, тому що він намагається встановити братні відносини (sibling relationship).
-Можливо, клієнт %i - невірно сконфігурований кеш.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-utf8/ERR_FTP_DISABLED b/errors/Ukrainian-utf8/ERR_FTP_DISABLED
deleted file mode 100644 (file)
index 3232869..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-FTP доступ заборонений.
-</STRONG>
-</UL>
-
-<P>
-Цей кеш не підтримує протокол FTP.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-utf8/ERR_FTP_FAILURE b/errors/Ukrainian-utf8/ERR_FTP_FAILURE
deleted file mode 100644 (file)
index 63568a1..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL
-виникла помилка протоколу FTP:
-<A HREF="%U">%U</A>
-<P>
-Squid послав наступну команду FTP:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_FTP_FORBIDDEN b/errors/Ukrainian-utf8/ERR_FTP_FORBIDDEN
deleted file mode 100644 (file)
index d79a8c6..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-Сталась невдала FTP аутентифікація
-<P>
-Squid послав наступну FTP команду:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_FTP_NOT_FOUND b/errors/Ukrainian-utf8/ERR_FTP_NOT_FOUND
deleted file mode 100644 (file)
index f5488db..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Даний URL не може бути доставлений:
-<A HREF="%U">%U</A>
-<P>
-Squid послав наступну FTP команду:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>
-Це може бути викликано FTP адресою з абсолютним шляхом (який не  
-відповідає стандарту RFC 1738). В такому випадку, файл може бути 
-знайдений за адресою <A HREF="%B">%B</A>.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_FTP_PUT_CREATED b/errors/Ukrainian-utf8/ERR_FTP_PUT_CREATED
deleted file mode 100644 (file)
index 9af5f98..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>Команда FTP PUT завершилась успішно: Файл створений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Операція завершилась успішно</H1>
-<H2>Файл створений</H2>
-<HR noshade size="1px">
-
diff --git a/errors/Ukrainian-utf8/ERR_FTP_PUT_ERROR b/errors/Ukrainian-utf8/ERR_FTP_PUT_ERROR
deleted file mode 100644 (file)
index fc5feec..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Команда FTP PUT/upload завершилась невдало</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>FTP PUT/upload завершилась невдало</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки файла за адресою:
-<A HREF="%U">%U</A>
-<P>
-Squid послав наступну FTP команду:
-<PRE><STRONG>
-        %f
-</STRONG></PRE>
-і потім отримав таку відповідь
-<PRE><STRONG>
-        %F
-</STRONG></PRE>
-<P>
-Це означає що:
-<PRE>
-Вам слід перевірити шлях, права доступу, вільне місце і після цього спробувати знову.
-</PRE>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_FTP_PUT_MODIFIED b/errors/Ukrainian-utf8/ERR_FTP_PUT_MODIFIED
deleted file mode 100644 (file)
index 66e9f6e..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>Команда FTP PUT завершилась успішно: Файл оновлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>Операція завершилась успішно.</H1>
-<H2>Файл оновлений</H2>
-<HR noshade size="1px">
-<P>
-</P>
-
diff --git a/errors/Ukrainian-utf8/ERR_FTP_UNAVAILABLE b/errors/Ukrainian-utf8/ERR_FTP_UNAVAILABLE
deleted file mode 100644 (file)
index 7fc7693..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-FTP сервер був перегружений
-<P>
-Squid послав наступну FTP команду:
-<blockquote><strong><pre>%f</pre></strong></blockquote>
-і потім отримав таку відповідь
-<blockquote><strong><pre>%F</pre></strong></blockquote>
-<blockquote><strong><pre>%g</pre></strong></blockquote>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
diff --git a/errors/Ukrainian-utf8/ERR_ICAP_FAILURE b/errors/Ukrainian-utf8/ERR_ICAP_FAILURE
deleted file mode 100644 (file)
index b93029d..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка протоколу ICAP.
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Це може означати:
-Деякі аспекти ICAP з'єднання несправні. Можливі проблеми:
-<UL>
-<LI>Доступ до ICAP серверу неможливий.
-<LI>Невірна відповідь від ICAP серверу.
-</UL>
-</P>
-
diff --git a/errors/Ukrainian-utf8/ERR_INVALID_REQ b/errors/Ukrainian-utf8/ERR_INVALID_REQ
deleted file mode 100644 (file)
index 10f21d8..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Невірний запит
-</STRONG>
-</UL>
-
-<P>
-Деякі аспекти HTTP запиту невірні. Можливі проблеми:
-<UL>
-<LI>Відсутній або невідомий метод запиту (GET, POST)
-<LI>Відсутній URL
-<LI>Відсутній HTTP ідентифікатор (HTTP/1.0)
-<LI>Запит надто великий
-<LI>Не вказаний Content-Length для запитів POST чи PUT
-<LI>Недопустимий символ в імені сервера; підчеркування недопустимі
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_INVALID_RESP b/errors/Ukrainian-utf8/ERR_INVALID_RESP
deleted file mode 100644 (file)
index 3b65140..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Невірний запит
-</STRONG>
-</UL>
-
-<P>
-The HTTP відповідне повідомлення, отримане від сервера
-не може бути визначене або є неправильно зформованим.
-Будь-ласка, контактуйте з адміністратором сайту. Ваш адміністратор
-кешу може надати Вам більш детальну інформацію про 
-дану помилку, якщо це необхідно.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-utf8/ERR_INVALID_URL b/errors/Ukrainian-utf8/ERR_INVALID_URL
deleted file mode 100644 (file)
index 898c6af..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Неправильний URL
-</STRONG>
-</UL>
-
-<P>
-Деякі аспекти запрошеного URL є неправильними. Можливі проблеми:
-<UL>
-<LI>Відсутній чи невірний протокол доступу (повинен бути `http://'' або
-схожий)
-<LI>Відсутнє ім'я сервера
-<LI>Недопустимий подвійний керуючий символ в URL-шляху
-<LI>Недопустимий символ в імені сервера; підчеркування недопустимі
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_LIFETIME_EXP b/errors/Ukrainian-utf8/ERR_LIFETIME_EXP
deleted file mode 100644 (file)
index df7f880..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Час з'єднання закінчився
-</STRONG>
-</UL>
-
-<P>
-Squid завершив Ваш запит у зв'язку з перевищенням
-максимального часу з'єднання.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_NO_RELAY b/errors/Ukrainian-utf8/ERR_NO_RELAY
deleted file mode 100644 (file)
index 0127520..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Wais Relay не визначений
-</STRONG>
-</UL>
-
-<P>
-Для цього кешу не визначений WAIS Relay host!  Зверніться до адміністратора.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_ONLY_IF_CACHED_MISS b/errors/Ukrainian-utf8/ERR_ONLY_IF_CACHED_MISS
deleted file mode 100644 (file)
index bf14046..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Відповідний об'єкт не був знайдений в кеші, в результаті чого була
-визначена директива <code>only-if-cached</code>.
-</STRONG>
-</UL>
-
-<P>
-Вы послали запит з директивою кеш-контролю <code>only-if-cached</code>.
-Об'єкт не був знайдений в кеші, <em>або</em> він вимагає оновлення,
-яке заборонено <code>only-if-cached</code> директивою.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_READ_ERROR b/errors/Ukrainian-utf8/ERR_READ_ERROR
deleted file mode 100644 (file)
index d761a31..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка читання
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Під час читання даних з мережі виникла помилка. Будь-ласка, повторіть
-Ваш запит.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_READ_TIMEOUT b/errors/Ukrainian-utf8/ERR_READ_TIMEOUT
deleted file mode 100644 (file)
index 2505ffa..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Перевищений час очікування відповіді.
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Перевищений час очікування відповіді під час читання даних з мережі. Мережа
-чи сервер можуть не працювати чи бути перегруженими. Будь-ласка, повторіть Ваш запит.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-utf8/ERR_SECURE_CONNECT_FAIL b/errors/Ukrainian-utf8/ERR_SECURE_CONNECT_FAIL
deleted file mode 100644 (file)
index 0cbbe67..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ERROR</H1>
-<H2>The requested URL could not be retrieved</H2>
-<HR noshade size="1px">
-<P>
-While trying to retrieve the URL:
-<A HREF="%U">%U</A>
-<P>
-The following error was encountered:
-<UL>
-<LI>
-<STRONG>
-Failed to establish a secure connection to %I
-</STRONG>
-</UL>
-
-<P>
-The system returned:
-<PRE><I>    %E</I></PRE>
-
-<P>
-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.
-
-<P>Your cache administrator is <A HREF="mailto:%w%W">%w</A>. 
diff --git a/errors/Ukrainian-utf8/ERR_SHUTTING_DOWN b/errors/Ukrainian-utf8/ERR_SHUTTING_DOWN
deleted file mode 100644 (file)
index 90c9259..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<P>
-Цей кеш в даний момент часу знаходиться в процесі зупинки і не може обслужити
-ваш запит. Будь-ласка, повторіть Ваш запит через деякий час знову.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_SOCKET_FAILURE b/errors/Ukrainian-utf8/ERR_SOCKET_FAILURE
deleted file mode 100644 (file)
index a8dc0f0..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка TCP socket.
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Squid не може створити TCP socket, скоріш за все через дуже високу загрузку сервера.
-Будь-ласка, повторіть Ваш запит.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_TOO_BIG b/errors/Ukrainian-utf8/ERR_TOO_BIG
deleted file mode 100644 (file)
index 0ac5a85..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Запит чи відповідь надто велика.
-</STRONG>
-
-<P>
-У випадку, якщо Ви здійснювали POST чи PUT запит, тоді Ваш запит
-(те, що Ви намагались закачати) є надто великим. Якщо Ви 
-здійснювали GET запит, тоді відклик (те, що Ви намагались викачати
-) є надто великим. Ці обмеження були встановлені
-Вашим Інтернет Провайдером, який керує кешом. Будь-ласка,
-повідомте його, якщо Ви вважаєте дане повідомлення помилкою.
-</UL>
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_UNSUP_REQ b/errors/Ukrainian-utf8/ERR_UNSUP_REQ
deleted file mode 100644 (file)
index d63df4d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Метод чи протокол запиту не підтримуються
-</STRONG>
-</UL>
-
-<P>
-Squid не підтримує всі методи запитів для усіх протоколів.
-Наприклад, для протоколу Gopher Ви не можете виконати запит POST.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
\ No newline at end of file
diff --git a/errors/Ukrainian-utf8/ERR_URN_RESOLVE b/errors/Ukrainian-utf8/ERR_URN_RESOLVE
deleted file mode 100644 (file)
index 43acf32..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URN не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>URL для запрошеного URN не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URN:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Неможливо визначити URN <br>
-(Cannot Resolve URN)
-</STRONG>
-</UL>
-
-<P>
-Не варто багато чого очікувати від цієї технології URNs на %T :)
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/ERR_WRITE_ERROR b/errors/Ukrainian-utf8/ERR_WRITE_ERROR
deleted file mode 100644 (file)
index 5e88d5c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Помилка запису
-</STRONG>
-</UL>
-
-<P>
-Система повідомила:
-<PRE><I>    %E</I></PRE>
-
-<P>
-Під час відправлення інформації в мережу виникла помилка. Будь-ласка, повторіть
-Ваш запит
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
-
-
-
-
diff --git a/errors/Ukrainian-utf8/ERR_ZERO_SIZE_OBJECT b/errors/Ukrainian-utf8/ERR_ZERO_SIZE_OBJECT
deleted file mode 100644 (file)
index 118ed2d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<TITLE>ПОМИЛКА: Запрошений URL не може бути доставлений</TITLE>
-<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
-</HEAD><BODY>
-<H1>ПОМИЛКА</H1>
-<H2>Запрошений URL не може бути доставлений</H2>
-<HR noshade size="1px">
-<P>
-Під час доставки URL:
-<A HREF="%U">%U</A>
-<P>
-Виникла наступна помилка:
-<UL>
-<LI>
-<STRONG>
-Відповідь нульової довжини
-</STRONG>
-</UL>
-
-<P>
-Squid не отримав будь-яких даних для цього запиту.
-<P>Вашим адміністратором кешу є <A HREF="mailto:%w">%w</A>.
diff --git a/errors/Ukrainian-utf8/README b/errors/Ukrainian-utf8/README
deleted file mode 100644 (file)
index c8c92cb..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-Thank you to
-       Петро Нек <mr.petruccio@gmail.com>
-       Vitaliy Matytsyn (main) <vm@if.bank.gov.ua>
-for creating these error pages in Ukrainian!
diff --git a/errors/ca.po b/errors/ca.po
new file mode 100644 (file)
index 0000000..b65a372
--- /dev/null
@@ -0,0 +1,643 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-17 19:57+1200\n"
+"Last-Translator: Jordi Bruguera <jordi@dns1.grn.es>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Hi ha hagut un exc&eacute;s en el temps de lectura de dades de la xarxa.Hi "
+"ha congesti&oacute; o indisposici&oacute; del servidor i/o la xarxa.Intenteu-"
+"ho d'aqui a una estona."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "No es pot mostrar la URN que heu sol.licitat"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Acc&eacute;s no autoritzat."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"La configuració del control d'acc&eacute;s impedeix realitzar aquesta "
+"operaci&oacute;. Contacteu amb el vostre prove&iuml;dor de servei si creieu "
+"que es tracta d'un error."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"S'ha produ&iuml;t un error en l'autentificaci&oacute; FTP mentre s'intentava "
+"llegir la URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"S'ha produ&iuml;t un error FTP mentre s'intentava llegir la URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"S'ha produ&iuml;t un error quan es llegien les dades de la xarxa.  Repetiu "
+"la petici&oacute;"
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"S'ha produ&iuml;t un error mentre s'intentava escriure a la xarxa.  "
+"Reintenteu-ho en breus instants."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Acc&eacute;s denegat a la cache"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Acc&eacute;s denegat a l'administraci&oacute; de la cache."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "No s'ha pogut resoldre la URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "La connexi&oacute; ha excedit el temps m&agrave;xim"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Falta el camp <q>Content-Length</q>."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Acc&eacute;s denegat a la cache"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Acc&eacute;s denegat a l'administraci&oacute; de la cache"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: Ha fallat l'enviament del fitxer FTP"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: No es pot mostrar la URL que heu sol.licitat"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: No es pot mostrar la URN que heu sol.licitat"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "Comanda FTP PUT executada amb &egrave;xit: Fitxer creat"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "Comanda FTP PUT completada amb &eacute;xit: Fitxer actualitzat"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "Ha fallat la comanda FTP d'enviament de fitxer"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "El protocol FTP est&agrave; deshabilitat."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Fitxer creat"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Fitxer actualitzat"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Reenviament denegat."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Ei :) no esperis massa de les URN a %T !!"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Si esteu intentant descarregar-vos algunfitxer, aques &eacute;s massa gros."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Si esteu fent una petici&oacute; de tipus POST o PUT, llavors el cos de la "
+"petici&oacute; &eacute;s massa llarg (el fitxer que intenteu enviar)."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Car&agrave;cter no perm&egrave;s en el nom del servidor."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "La URL cont&eacute; un doble car&agrave;cter d'escapament."
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL incorrecte."
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Falta l'identificador HTTP (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "no hi ha URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Falta el nom del servidor."
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr "Protocol d'acc&eacute;s absent o incorrecte ( http:// o similar )"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "M&egrave;tode de petici&oacute; desconegut o absent."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No hi ha reenviament de protocol WAIS"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operaci&oacute; completada"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Contacteu ambel vostre <a href=\"mailto:%w%W\">administrador de <i>cache</"
+"i></a> si teniudificultats per a autentificar-vos o <ahref=\"http://%h/cgi-"
+"bin/chpasswd.cgi\">canvieu</a> la vostra contrasenya."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Contacteu ambel vostre <a href=\"mailto:%w%W\">administrador de cache</a>. "
+"Si vosaltres <em>sou</em> l'administrador d'aquesta cache, llegiu-vos la "
+"documentació de l'Squid en l'apartat de l'administrador de la cache."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Error de lectura"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "S'ha excedit el temps de lectura"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La petici&ocute; &eacute;s massa llarga."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Errada de connexi&oacute; de xarxa"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Alguna part de la URL no &eacute;s correcte."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+#, fuzzy
+msgid "Some possible problems are:"
+msgstr "Alguna possibles problemes:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"L'acc&eacute;s a l'objecte %U no est&agrave; perm&egrave;s sense "
+"autentificaci&oacute; pr&egrave;via."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"L'acc&eacute;s a l'objecte %U no est&agrave; perm&egrave;s sense "
+"autentificaci&oacute; pr&egrave;via."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+#, fuzzy
+msgid "Squid did not receive any data for this request."
+msgstr "La <i>cache</i> ha rebut una resposta sense dades, un document buit."
+
+#: templates/ERR_UNSUP_REQ:6
+#, fuzzy
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"La <i>cache</i> no admet tots els tipus de petici&oacute; per a tots els "
+"protocols. Per exemple, no es pot fer una petici&oacute; tipus POST en el "
+"protocol Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+#, fuzzy
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"La <i>cache</i> ha finalitzat la connexi&oacute; perque aquesta haexcedit el "
+"temps m&agrave;xim perm&egrave;s."
+
+#: templates/ERR_SOCKET_FAILURE:7
+#, fuzzy
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"La <i>cache</i> no pot obrir sessions TCP, possiblement degut a un "
+"exc&eacute;s de c&agrave;rrega. Reintenteu d'aqui a una estona."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+#, fuzzy
+msgid "Squid sent the following FTP command:"
+msgstr "La <i>cache</i> ha enviat la comanda FTP:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "El servidor de DNS diu:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"El servidor FTP estava massa ocupat quan intentava mostrar la URL: <a href="
+"\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"El servidor o la xarxa remota no es troben disponibles. Torneu-ho a provar "
+"d'aqui a una estona."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "La petici&oacute; o la resposta s&oacute;n massa llargues."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "No es pot mostrar la URL que heu sol.licitat"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "El sistema diu: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"No hi ha un reenviador de protocol WAIS per a aquesta cache. Comenta-li a "
+"l'administrador."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Aquests l&iacute;mits han estat establerts pel prove&iuml;dor Internet que "
+"opera aquesta cache. Contacta amb ells si creus que es tracta d'un error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Aquesta cache no accepta connexions FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Aquesta <i>cache</i> est&agrave; en proc&eacute;s d'aturada inmediata i no "
+"pot atendre la vostra petici&oacute;.  Reintenteu la petici&oacute; d'aqui a "
+"uns minuts."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Aquesta cache no reenviar&agrave; la vostra petici&oacute; donat que "
+"est&agrave; for&ccedil;ant una connexi&oacute; a una cachegermana.  Potser "
+"que el client %i sigui una cache mal configurada."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+#, fuzzy
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Aix&ograce; vol dir que la cache no ha pogut resoldre el nom del servidor "
+"que heu escrit a la URL.  Comproveu si aquesta adre&ccedil;a &eacute;s "
+"correcta."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Aquest error pot ser causat per una URL del protocol FTP amb un cam&iacute; "
+"absolut (que no compleix amb la RFC 1738).  Si aquesta n'&eacute;s la causa, "
+"trobareu el fitxer desitjat a <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+#, fuzzy
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Aquesta petició no s'ha pogut enviar al servidor d'origen o a una cache "
+"superior. La causa m&eacute;s probable per aquest error &eacute;s "
+"l'administrador de la cache no permet connexions directes amb els servidors "
+"d'origen, o no hi ha cap cache superior disponible."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+"No ha estat possible determinar l'adre&ccedil;a IP del servidor <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "No ha estat possible de reenviar aquesta petici&oacute;."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "M&egrave;tode i protocol no admesos"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"S'ha especificat una directiva <q>only-if-cached</q> i no s'ha trobat un "
+"document v&agrave;lid a la cache."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "Mentre s'intentava la comanda PUT a la URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Error d'escriptura"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Heu fet una petició amb la directiva de control de cache <q>only-if-cached</"
+"q>. El document no s'ha trobat a la cache, o necessitava revalidaci&oacute;, "
+"expressament prohibida per la directiva <q>only-if-cached</q>."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+"L'administrador d'aquesta cache &eacute;s <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+#, fuzzy
+msgid "Zero Sized Reply"
+msgstr "Resposta de longitut ZERO :)"
diff --git a/errors/da.po b/errors/da.po
new file mode 100644 (file)
index 0000000..fbe2789
--- /dev/null
@@ -0,0 +1,629 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-23 18:07+1200\n"
+"Last-Translator: Morten S. Nielsen <mortensn@geocities.com>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"En timeout opstod mens der der blev ventet p&aelig; at l&aelig;se data fra "
+"netv&aelig;rket.  Netv&aelig;rket kan v&aelig;re nede eller forstoppet.  "
+"Pr&oslash;v igen."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "URL for den angivne URN kunne ikke hentes"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Adgang N&aelig;gtet."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Adgangs kontrollen tillader ikke din foresp&oslash;rgsel.  Kontakt din "
+"udbyder nu, hvis du mener dette er en fejl."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"En FTP autenticierings fejl opstod under hentning af f&oslash;gende URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"En FTP protokol fejl opstod under hentning af f&oslash;gende URL: <a href=\"%"
+"U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"En fejl opstod mens der blev l&aelig;st data fra nettet.  Pr&oslash;v igen."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"En fejl opstod mens der blev skrevet data til nettet.  Pr&oslash;v igen."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Adgang N&aelig;gtet."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Administrator Adgang N&aelig;gtet."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Kan Ikke Opl&oslash;se URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Levetiden for forbindelsen udl&oslash;b"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length mangler til POST eller PUT foresp&oslash;rgsler"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FEJL"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FEJL: Cache Adgang N&aelig;gtet"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FEJL: Cache Administrator Adgang N&aelig;gtet"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FEJL: FTP upload fejlede"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FEJL: Den angivne URL kunne ikke hentes"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FEJL: Den angivne URN kunne ikke hentes"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Lykkedes: Fil Oprettet"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Lykkedes: Fil Opdateret"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload fejlede"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP er sl&aring;et fra"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Fil oprettet"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Fil opdateret"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Videresendelse N&aelig;gtet."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hallo, forvent nu ikke for meget af URNs p&aring; %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ugyldig dobbelt-escape i URL sti"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Ugyldig URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Manglende HTTP Identifikator (ved HTTP/1.0)"
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Manglende URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Manglende maskinnavn"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Manglende eller ukendt adgangsprotokol (burde v&aelig;re <q>http://</q> "
+"eller tilsvarende)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Manglende eller ukendt foresp&oslash;rgsels metode."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Ingen WAIS Rel&aelig;"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Handlingen lykkedes"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Kontakt <a href=\"mailto:%w%W\">cache administratoren</a> hvis du har "
+"problemer med at autenticiere dig eller <a href=\"http://%h/cgi-bin/chpasswd."
+"cgi\">skift</a> dit password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Kontakt <a href=\"mailto:%w%W\">cache administratoren</a> hvis du har "
+"problemer med at autenticiere dig eller hvis du <em>er</em> cache "
+"administratoren, l&aelig;s Squid dokumentationen for cache administrator "
+"interfacet og check cache loggen for mere detaljerede fejlmeddelelser."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "L&aelig;se fejl"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Foresp&oslash;rgslen er for stor."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Fejl"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Mulige problemer kan v&aelig;re:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Du har desv&aelig;rre ikke lov til at hente %U fra denne cache f&oslash;rend "
+"du har autenticieret dig selv."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Du har desv&aelig;rre ikke lov til at hente %U fra denne cache f&oslash;rend "
+"du har autenticieret dig selv."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+#, fuzzy
+msgid "Squid did not receive any data for this request."
+msgstr "Proxy'en Squid modtog ingen data for denne foresp&oslash;rgsel."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Proxy'en Squid underst&oslash;tter ikke alle foresp&oslash;rgselsmetoder for "
+"alle adgangs protokoller. For eksempel kan du ikke POST en Gopher "
+"foresp&oslash;rgsel."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Proxy'en Squid har afsluttet foresp&oslash;rgslen fordi den har overskredet "
+"den maksimale levetid for forbindelser (connection timeout)."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Proxy'en Squid sendte f&oslash;lgende FTP kommando:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr ""
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"FTP serveren var optaget da f&oslash;gende URL skulle hentes: <a href=\"%U\">"
+"%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Den f&oslash;gende URL kunne ikke hentes: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"Der kunne ikke opn&aring;s forbindelse til den anden computer. Netv&aelig;"
+"rket eller computeren kan v&aelig;re nede.  Pr&oslash;v eventuelt igen."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Den angivne URL kunne ikke hentes"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Systemet returnerede: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+#, fuzzy
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Der er ikke nogen WAIS Rel&aelig; maskine defineret for denne proxy cache!  "
+"R&aring;b efter administratoren!"
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Denne cache underst&oslash;tter ikke FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Proxy cachen er i gang med at lukke ned og kan derfor ikke betjene din "
+"foresp&oslash;rgsel nu.  Pr&oslash;v venligst igen snart."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Denne cache vil ikke videresende din foresp&oslash;rgsel fordi den pr&oslash;"
+"ver at opretholde et s&oslash;skendeforhold. M&aring;ske er klienten "
+"p&aring; %i en fejlkonfigureret cache."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+#, fuzzy
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Dette betyder at cachen kunne ikke opl&oslash;se det angivne navn i URL'en. "
+"Check at adressen er korrekt."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Dette kan muligvis for&aring;rsages af en FTP URL med en absolut sti "
+"(hvilket ikke er i overensstemmelse med standarden RFC 1738).  Hvis dette er "
+"&aring;rsagen, kan filen findes p&aring; <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Denne foresp&oslash;rgsel kunne ikke videresendes til den oprindelige server "
+"eller en af for&aelig;ldre cache'ene.  Dette skyldes sandsynligvis at cache "
+"administratoren tillader ikke denne cache at udf&oslash;re direkte "
+"forbindelser til servere og alle for&aelig;ldre cache'er kan ikke n&aring;s "
+"for &oslash;jeblikket."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Kunne ikke finde IP nummeret for navnet <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Kunne ikke vidersende foresp&oslash;rgslen."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Uunderst&oslash;ttet Foresp&oslash;rgsels Metode og Protokol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Dokumentet blev ikke fundet i cachen og <q>only-if-cached</q> (kun-hvis-gemt-"
+"i-cachen) direktivet var specificeret."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Under udf&oslash;relse af PUT kommando (sending) p&aring; f&oslash;lgende "
+"URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Skrive Fejl"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Du har sendt en foresp&oslash;rgsel med en <q>only-if-cached</q> cache "
+"kontrol direktiv. Dokumentet blev ikke fundet i cachen, <em>eller</em> det "
+"kr&aelig;ver en bekr&aelig;ftelse af gyldighed som bliver forbudt af <q>only-"
+"if-cached</q> direktivet."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Nul St&oslash;rrelse Svar"
diff --git a/errors/de.po b/errors/de.po
new file mode 100644 (file)
index 0000000..3ae108b
--- /dev/null
@@ -0,0 +1,653 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-13 11:56+1200\n"
+"Last-Translator: Robert Förster <Dessa@gmake.de>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Ungültige Anfrage</b> Fehler erhalten als versucht wurde die Anfrage zu "
+"Bearbeiten:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Ungültige Antwort</b> Fehler erhalten als versucht wurde die Anfrage zu "
+"bearbeiten:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Zeitüberschreitung beim Warten auf Daten des Netzwerks.  Das Netzwerk oder "
+"der Server könnten nicht Verfügbar oder überlastet sein.  Bitte versuchen "
+"sie es erneut."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "Eine URL für den angeforderten URN konnte nicht gefunden werden"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Zugriff verweigert."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Die Anfrage wurde aufgrund mangelnder Zugriffsrechte verweigert.  Bitte "
+"kontaktieren Sie Ihren Dienstanbieter falls sie denken, dass dies ein Fehler "
+"ist."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Die FTP Authentifizierung bei der URL <a href=\"%U\">%U</a> ist "
+"Fehlgeschlagen."
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Ein FTP Protokollfehler ist bei der URL <a href=\"%U\">%U</a> aufgetreten."
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Die Antwort des ICAP Servers war ungültig."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Ein Fehler ist beim Lesen vom Netzwerk aufgetreten.  Bitte wiederholen sie "
+"die Anfrage."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Ein Fehler ist beim Schreiben auf das Netzwerk aufgetreten.  Bitte "
+"wiederholen sie die Anfrage."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Zugriff verweigert."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Zugriff verweigert."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Konnte URN nicht auflösen"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Zeitlimit der Verbindung erreicht"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Verbindung zu %I Fehlgeschlagen."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length fehlt für POST oder PUT Anfragen."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FEHLER"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FEHLER: Cache Zugriff verweigert"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FEHLER: Cache Manager Zugriff verweigert"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FEHLER: FTP Upload fehlgeschlagen"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FEHLER: Die angeforderte URL konnte nicht gefunden werden"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FEHLER: Die angeforderte URN konnte nicht gefunden werden"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI-Verarbeitung fehlgeschlagen."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Erfolgreich: Datei Erstellt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Erfolgreich: Datei aktualisiert"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/Upload fehlgeschlagen"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP ist deaktiviert"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Konnte keine sichere Verbindung zu %I herstellen"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Datei erstellt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Datei aktualisiert"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Weiterleitung verweigert."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Erzeugt am %T von %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, erwarte nicht zuviel von URNs am %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP Protokoll Fehler."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr "Für einen GET-Request ist die angeforderte Resource zu groß."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr "Für einen POST-Request ist die hochzuladene Resource zu groß."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Ungültiges Zeichen im Hostname; Unterstriche sind nicht erlaubt."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ungültiger Doppel-Escape im URL-Pfad"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Ungültige URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Fehlende HTTP-Version (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Fehlende URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Fehlender Hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Fehlendes oder ungültiges Adressprotokoll (Versuchen sie zum "
+"Beispiel<q>http://</q>)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Fehlende oder unbekannte Anfragemethode."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Kein Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation Erfolgreich"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Bitte kontaktieren sie den <a href=\"mailto:%w%W\">Cache Administrator</a> "
+"Falls sie Schwierigkeiten haben sich zu authentifizieren oder <a href="
+"\"http://%h/cgi-bin/chpasswd.cgi\">ändern</a> sie ihr Standardpasswort."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Bitte kontaktieren sie den <a href=\"mailto:%w%W\">Cache Administrator</a> "
+"Falls sie Schwierigkeiten haben sich zu authentifizieren oder, falls "
+"<em>sie</em> der Administrator sind, lesen sie die Squid Dokumentation zum "
+"Thema Cacheverwaltungsoberfläche und prüfen sie das Cachelog für "
+"detaillierte Fehlermeldungen."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Lesefehler"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Zeitüberschreitung beim Lesen"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Anfrage ist zu lang."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socketfehler"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Der Syntax der angeforderten URL ist falsch."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Mögliche Probleme sind:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sie sind momentan nicht berechtigt %U von diesem Cache Manager abzurufen, "
+"bis sie sich authentifiziert haben."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sie sind momentan nicht berechtigt %U von diesem Cache abzurufen, bis sie "
+"sich authentifiziert haben."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid hat keine Daten für diese Anfrage empfangen."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid unterstützt nicht alle Anfragemethoden für alle Protokolle. Sie können "
+"zum Beispiel keine POST Anfrage über das Gopher Protokoll senden."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid hat die Anfrage beendet, da die maximale Verbindungszeit überschritten "
+"wurde."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid kann keinen TCP Socket erstellen, warscheinlich aufgrund von großer "
+"Systemlast. Bitte wiederholen sie die Anfrage."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sendete das folgende FTP Kommando:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "Der DNS-Server meldete:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "Der ESI-Prozessor meldete:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Der FTP Server war zu beschäftigt um die URL: <a href=\"%U\">%U</a> abzurufen"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"Die HTTP Antwortnachricht, die vom Kontaktierten Server empfangen wurde, "
+"wurde nicht verstanden oder ist falsch. Bitte kontaktieren sie den Webmaster."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "Der ICAP Server ist nicht erreichbar."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Die folgende URL konnte nicht gefunden werden: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Der folgende Fehler wurde beim Versuch die URL <a href=\"%U\">%U</a> zu "
+"holen festgestellt:"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Der folgende Fehler wurde beim Versuch die URN <a href=\"%U\">%U</a> zu "
+"holen festgestellt:"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"Der Zielhost oder das Zielnetzwerk ist momentan nicht verfügbar.  Bitte "
+"wiederholen sie die Anfrage."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "Die Anfrage oder Antwort ist zu lang."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Die angeforderte URL konnte nicht gefunden werden"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "Der Server antwortete:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Das System antwortete: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Es ist kein WAIS Relay für diesen Cache definiert!  Sagen sie dies dem "
+"Administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Diese Einschränkungen wurden vom Internetdienstanbieter eingerichtet der "
+"diesen Cache betreibt.  Bitte kontaktieren sie ihn falls sie denken, dass "
+"dies ein Fehler ist."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Dieser Cache unterstützt kein FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Dieser Cache wird momentan heruntergefahren und kann daher die Anfrage nicht "
+"bearbeiten.  Bitte wiederholen sie die Anfrage gleich noch einmal."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Dieser Cache wird ihre Anfrage nicht weiterleiten da er versucht ein "
+"Geschwisterverhältnis zu erzwingen.  Warscheinlich ist der Client auf %i ein "
+"Cache der falsch konfiguriert wurde."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "Das heißt, dass etwas mit der ICAP Kommunikation nicht stimmt."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Das heißt, dass der FTP Server keine Berechtigung oder nicht genug "
+"Plattenplatz zum Speichern der Datei zur Verfügung hat. Überprüfen sie Pfad, "
+"Berechtigungen und Plattenplatz und wiederholen sie die Anfrage."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Das heißt, dass der Cache nicht in der Lage war den Hostnamen aufzulösen der "
+"in der URL gefunden wurde. Überprüfen sie ob die Adresse korrekt ist."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Das heißt, dass der Ersatz nicht in der Lage war das ESI Template zu "
+"verarbeiten. Bitte melden sie diesen Fehler dem Webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Die Ursache kann eine FTP URL mit einem Absoluten Pfad sein (was nicht RFC "
+"1738 konform ist).  Wenn dies der Fall ist, ist die Datei unter <a href=\"%B"
+"\">%B</a> zu finden."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+"Dieser Proxy und der Zielhost waren nicht in der Lage "
+"Sicherheitseinstellungen auszuhandeln die beidseitig akzeptiert werden. Es "
+"ist möglich dass der Zielhost keine sicheren Verbindungen unterstützte oder "
+"der Proxy nicht mit dem Sicherheitszertifikat des Hosts einverstanden ist."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Die Anfrage kann nicht an den Quellserver oder irgendeinen Vergeschalteten "
+"Cache weitergeleitet werden.  Der wahrscheinlichste Grund ist, dass der "
+"Administrator diesem Cache nicht erlaubt direkte Verbindungen zu "
+"Quellservern herzustellen oder alle vorgeschalteten Cache Server momentan "
+"nicht erreichbar sind."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Konnte keine IP Adresse vom Hostnamen <q>%H</q> ermitteln."
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Kann die Anfrage zurzeit nicht weiterleiten."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Anfragemethode und Protokoll nicht unterstützt"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Kein gültiges Dokument wurde im Cache gefunden und <q>only-if-cached</q> "
+"Option wurde angegeben."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Als versucht wurde eine PUT Anfrage an die folgende URL zu senden: <a href="
+"\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Fehler beim Schreiben"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Sie haben eine Anfrage mit der <q>only-if-cached</q> Cache Kontrolloption "
+"getätigt. Das Dokument wurde nicht im Cache gefunden, <em>oder</em> ioder es "
+"forderte eine Aktualisierung an welche durch die <q>only-if-cached</q> "
+"Option unterbunden wurde."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Ihr Cache Administrator ist <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Ihr Cache Administrator ist in der Lage ihnen mehr über das Problem zu "
+"erklären, falls dies Notwendig ist."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Ihr Webmaster ist <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Nullgrößenantwort"
diff --git a/errors/dictionary.pot b/errors/dictionary.pot
new file mode 100644 (file)
index 0000000..6a0d32f
--- /dev/null
@@ -0,0 +1,569 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Translate Toolkit 1.1.1\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr ""
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr ""
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr ""
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr ""
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr ""
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr ""
diff --git a/errors/en-au.po b/errors/en-au.po
new file mode 100644 (file)
index 0000000..0c1d47d
--- /dev/null
@@ -0,0 +1,648 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-07 16:21+1200\n"
+"Last-Translator: Amos Jeffries <squid3@treenet.co.nz>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+"X-Launchpad-Export-Date: 2008-07-31 11:24+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "A URL for the requested URN could not be retrieved"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Access Denied."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "An Illegal response was received from the ICAP server."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Access Denied."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Access Denied."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Cannot Resolve URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Connection Lifetime Expired"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Connection to %I failed."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length missing for POST or PUT requests."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Cache Access Denied"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Cache Manager Access Denied"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: FTP upload failed"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: The requested URL could not be retrieved"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: The requested URN not be retrieved"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI Processing failed."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Successful: File Created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Successful: File updated"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload failed"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is Disabled"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Failed to establish a secure connection to %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "File created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File updated"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Denied."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generated %T by %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, don't expect too much from URNs on %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP protocol error."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Illegal character in hostname; underscores are not allowed."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Illegal double-escape in the URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Missing HTTP Identifier (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Missing URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Missing hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Missing or unknown request method."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation successful"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Read Error"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Read Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Request is too large."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Failure"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Some aspect of the requested URL is incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Some possible problems are:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid did not receive any data for this request."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sent the following FTP command:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "The DNS server returned:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "The ESI processor returned:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "The ICAP server is not reachable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr "The remote host or network may be down.  Please try the request again."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "The request or reply is too large."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "The requested URL could not be retrieved"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "The server responded with:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "The system returned: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "This cache does not support FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "This means that some aspect of the ICAP communication failed."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+"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."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Unable to determine IP address from host name <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Unable to forward this request at this time."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Unsupported Request Method and Protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Write Error"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Zero Sized Reply"
diff --git a/errors/en-gb.po b/errors/en-gb.po
new file mode 100644 (file)
index 0000000..a1d7bc5
--- /dev/null
@@ -0,0 +1,648 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-07 16:23+1200\n"
+"Last-Translator: Amos Jeffries <squid3@treenet.co.nz>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+"X-Launchpad-Export-Date: 2008-07-31 11:24+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "A URL for the requested URN could not be retrieved"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Access Denied."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "An Illegal response was received from the ICAP server."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Access Denied."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Access Denied."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Cannot Resolve URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Connection Lifetime Expired"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Connection to %I failed."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length missing for POST or PUT requests."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Cache Access Denied"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Cache Manager Access Denied"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: FTP upload failed"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: The requested URL could not be retrieved"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: The requested URN not be retrieved"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI Processing failed."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Successful: File Created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Successful: File updated"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload failed"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is Disabled"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Failed to establish a secure connection to %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "File created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File updated"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Denied."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generated %T by %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, don't expect too much from URNs on %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP protocol error."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Illegal character in hostname; underscores are not allowed."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Illegal double-escape in the URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Missing HTTP Identifier (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Missing URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Missing hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Missing or unknown request method."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation successful"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Read Error"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Read Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Request is too large."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Failure"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Some aspect of the requested URL is incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Some possible problems are:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid did not receive any data for this request."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sent the following FTP command:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "The DNS server returned:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "The ESI processor returned:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "The ICAP server is not reachable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr "The remote host or network may be down.  Please try the request again."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "The request or reply is too large."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "The requested URL could not be retrieved"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "The server responded with:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "The system returned: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "This cache does not support FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "This means that some aspect of the ICAP communication failed."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+"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."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Unable to determine IP address from host name <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Unable to forward this request at this time."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Unsupported Request Method and Protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Write Error"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Zero Sized Reply"
diff --git a/errors/en.po b/errors/en.po
new file mode 100644 (file)
index 0000000..ef04e0b
--- /dev/null
@@ -0,0 +1,647 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-07 16:23+1200\n"
+"Last-Translator: Amos Jeffries <squid3@treenet.co.nz>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "A URL for the requested URN could not be retrieved"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Access Denied."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "An Illegal response was received from the ICAP server."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache Access Denied."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager Access Denied."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Cannot Resolve URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Connection Lifetime Expired"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Connection to %I failed."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length missing for POST or PUT requests."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Cache Access Denied"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Cache Manager Access Denied"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: FTP upload failed"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: The requested URL could not be retrieved"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: The requested URN not be retrieved"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI Processing failed."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Successful: File Created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Successful: File updated"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload failed"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is Disabled"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Failed to establish a secure connection to %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "File created"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File updated"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Denied."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generated %T by %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, don't expect too much from URNs on %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "ICAP protocol error."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Illegal character in hostname; underscores are not allowed."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Illegal double-escape in the URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Invalid URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Missing HTTP Identifier (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Missing URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Missing hostname"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Missing or unknown request method."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operation successful"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Read Error"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Read Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Request is too large."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Failure"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Some aspect of the requested URL is incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Some possible problems are:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid did not receive any data for this request."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid sent the following FTP command:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "The DNS server returned:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "The ESI processor returned:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "The ICAP server is not reachable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr "The remote host or network may be down.  Please try the request again."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "The request or reply is too large."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "The requested URL could not be retrieved"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "The server responded with:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "The system returned: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "This cache does not support FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "This means that some aspect of the ICAP communication failed."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+"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."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Unable to determine IP address from host name <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Unable to forward this request at this time."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Unsupported Request Method and Protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Write Error"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Zero Sized Reply"
diff --git a/errors/es.po b/errors/es.po
new file mode 100644 (file)
index 0000000..5a44062
--- /dev/null
@@ -0,0 +1,661 @@
+# Spanish translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-17 00:27+1200\n"
+"Last-Translator: Javier Puche <javier.puche@rediris.es>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Petición Incorrecta</b> se ha encontrado un error mientras se intentaba "
+"procesar la petición:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Respuesta Incorrecta</b> se ha encontrado un error mientras se intentaba "
+"procesar la petición:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Se acab&oacute; el tiempo m&aacute;ximo de lectura mientras se le&iacute;an "
+"datos de la red.  La red o el servidor pueden estar congestionados.  Por "
+"favor, int&eacute;ntelo de nuevo"
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "No se ha podido obtener una URL para el URN solicitado"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Acceso Denegado"
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Las reglas de control de acceso impiden que su petici&oacute;n sea permitida "
+"en este momento.  Contacte con su proveedor de servicios si cree que esto "
+"es incorrecto."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Ha ocurrido una falla de autenticaci&oacute;n cuando se trataba de conseguir "
+"el URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Ha ocurrido un error de protocolo FTP mientras se intentaba traer el "
+"documento con URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Se ha recibido una respuesta ilegal desde el servidor ICAP."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Ha ocurrido alg&uacute;n problema mientras se le&iacute;an datos de la red. "
+" Por favor, int&eacute;ntelo de nuevo."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Se ha producido un error mientras se escrib&iacute;an datos en la red.  Por "
+"favor, int&eacute;ntelo de nuevo."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Acceso Denegado a la Caché"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Acceso Denegado al Cache Manager."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "No se puede resolver el URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Ha expirado el tiempo de vida de la conexi&oacute;n"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Conexión a %I fallida."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Falta Content-Length en las peticiones POST o PUT"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERROR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERROR: Acceso Denegado a la Caché"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERROR: Acceso Denegado al Cach&eacute; Manager"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERROR: falla en envio FTP"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERROR: El URL solicitado no se ha podido conseguir"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERROR: El URN solicitado no se ha podido conseguir"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Exitoso: Archivo Creado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Exitoso: Archivo actualizado"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/envio fallido"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "Servicio FTP deshabilitado"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Archivo creado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Archivo actualizado"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Reenv&iacute;o denegado."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generado %T por %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, no espere mucho de URNs en %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+#, fuzzy
+msgid "ICAP protocol error."
+msgstr "Error de protocolo ICAP"
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Si est&aacute; haciendo una petici&oacute;n GET, entonces que est&aacute; "
+"tratando de bajar es demasiado grande."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Si est&aacute; haciendo una petici&oacute;n POST o PUT, lo que est&aacute; "
+"intentando subir es demasiado grande."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Hay caracteres ilegales en el nombre de m&aacute;quina; el car&aacute;cter "
+"subrayado (_) no est&aacute; permitido."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Hay un doble-escape ilegal en la ruta de la URL"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL Inválida"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Falta el identificador HTTP (HTTP/1.0)"
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "URL Perdido."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Falta el nombre de la m&aacute;quina"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Falta o es incorrecto el protocolo de acceso (debe ser <q>http://</q> o "
+"similar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr ""
+"Falta o es desconocido el m&eacute;todo de la petici&oacute;n (no es GET ni "
+"POST)"
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No hay una pasarela para protocolo Wais."
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operación éxitoso"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Por favor contacte al <a href=\"mailto:%w%W\">administrador del "
+"cach&eacute;</a> si tiene dificultad para autenticarse o <a href=\"http://%h"
+"/cgi-bin/chpasswd.cgi\">cambie</a> su password."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Por favor contacte al <a href=\"mailto:%w%W\">administrador del "
+"cach&eacute;</a> si tiene dificultad para autenticarse, o si Ud. <em>es</em> "
+"el administrador, lea la documentaci&oacute;n de Squid sobre interfaz del "
+"cache manager y chequee en el log de cach&eacute; mensajes de error "
+"m&aacute;s detallados."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Error de Lectura"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+"Se acab&oacute; el tiempo m&aacute;ximo para lectura de datos de la red."
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La petición es demasiado grande."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Fallo en el puerto (socket)"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Alg&uacute;n aspecto del URL solicitado es incorrecto."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Algunos posibles problemas son:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Lo lamento, tu no estás autorizado a solicitar %U de este gestor de caché "
+"hasta que te hayas autenticado."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Lo lamento, tu no estás autorizado a solicitar %U de este caché hasta que te "
+"hayas autenticado."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid no ha recibido ninguna información en respuesta a esta petición."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid no admite todos los m&eacute;todos para todos los protocolos de "
+"acceso. Por ejemplo, no se puede hacer un POST a un servidor Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid ha dado por terminada la petici&oacute;n porque se ha excedido el "
+"tiempo de vida m&aacute;ximo para una conexi&oacute;n."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid no ha sido capaz de crear un socket TCP, probablemente debido a una "
+"carga excesiva. Por favor reintenta tu petición."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid ha enviado el siguiente comando FTP:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "El servidor DNS devolvió:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"El mensaje de Respuesta HTTP recibido del servidor contactado no pudo ser "
+"entendido o ten&iacute;a alguna malformaci&oacute;n. Por favor contacte al "
+"operador del sitio."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "El servidor ICAP no es alcanzable."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "El siguiente URL no pudo ser obtenido: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"El equipo remoto o la red deben estar caídas.  Por favor intenta la petición "
+"de nuevo."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "La petición o la respuesta es demasiado larga."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "El URL solicitado no se ha podido conseguir"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "El servidor ha respondido con:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "El sistema ha devuelto: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Este cach&eacute; no tiene definido ninguna pasarela para el protocolo WAIS "
+"!!  &iexcl;Gr&iacute;tele al administrador del cach&eacute; !"
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Estos l&iacute;mites fueron establecidos por el Proveedor de Servicios de "
+"Internet que opera este cach&eacute;.  Por favor, contacte con &eacute;l "
+"directamente si cree que esto es un error."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Esta caché no soporta FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Esta caché está en proceso de apagarse y no puede servir tu petición en este "
+"momento.  Por favor vuelve a intentar tu petición de nuevo pronto."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Este cach&eacute; no permite reenviar su petici&oacute;n porque trata de "
+"obligar a mantener una relaci&oacute;n de hermandad.  Quiz&aacute;s el "
+"cliente en %i es un cach&eacute; que ha sido mal configurado."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Esto significa que el cach&eacute; no ha sido capaz de resolver el nombre de "
+"m&aacute;quina presente en la URL. Compruebe que la direcci&oacute;n sea "
+"correcta."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Esto puede ser causado por un URL FTP con un camino absoluto (y por lo tanto "
+"no cumple con RFC 1738).  Si esta es la causa, entonces el  archivo puede "
+"ser obtenido en <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"La petici&oacute;n no ha podido ser enviada al servidor origen o a alguno de "
+"los cach&eacute;s padres.  Las razones m&aacute;s probables de que haya "
+"ocurrido este error son el administrador de lo cach&eacute; no permite que "
+"este cach&eacute; realice conexiones directas a los servidores origen, y "
+"todos los cach&eacute;s configurados como padres son inalcanzables en este "
+"momento."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+"Incapaz de determinar la direcci&oacute;n IP a partir del nombre de la "
+"m&aacute;quina <i>%H</i>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Imposibilidad de enviar la petici&oacute;n en este momento."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "M&eacute;todo de la petici&oacute;n y protocolo no soportados."
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"No se encontr&oacute; un documento v&aacute;lido en el cach&eacute; y se "
+"especific&oacute; la directiva <q>only-if-cached</q>."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Mientras se intentaba hacer un PUT del siguiente URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Error de Escritura"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Ud. ha enviado una solicitud con la directiva de control del cach&eacute; <q"
+">only-if-cached</q>. El documento no fue encontrado en el cach&eacute;, "
+"<em>o</em> requiere revalidaci&oacute;n prohibida por la directiva <q>only-"
+"if-cached</q>"
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Su administrador del cach&eacute; es <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Quizas su administrador del cach&eacute; pueda darle a Ud. m&aacute;s "
+"detalles acerca de la naturaleza exacta del problema en caso de ser "
+"necesario."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Respuesta vac&iacute;a (tama&ntilde;o cero)"
diff --git a/errors/fr.po b/errors/fr.po
new file mode 100644 (file)
index 0000000..a364be8
--- /dev/null
@@ -0,0 +1,646 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: squid 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-17 17:39+1200\n"
+"Last-Translator: Frank Denia <j@4u.net>\n"
+"Language-Team: Squid Developers <squid-dev@squid-cache.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Un d&eacute;lai critique s'est &eacute;coul&eacute; en attendant "
+"desdonn&eacute;es du r&eacute;seau. Le r&eacute;seau ou le serveur sontpeut-"
+"&ecirc;tre hors service ou d&eacute;faillants. Veuillez r&eacute;it&eacute;"
+"rer votre requ&ecirc;te."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "Une URL de l'URN n'a pu &ecirc;tre charg&eacute;e"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Acc&egrave;s interdit."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"La configuration du contr&ocirc;le d'acc&egrave;s interdit &agrave; votre "
+"requ&ecirc;te d'&ecirc;treaccept&eacute;e &agrave; cette heure-ci. Veuillez "
+"contacter votreprestataire de service si vous pensez que ceci n'a pas lieu "
+"d'&ecirc;tre."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Une erreur d'authentification sur un FTP a eu lieu.En tentant de charger "
+"l'URL:<a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Une erreur du protocole FTP est survenueen essayant de charger l'URL "
+"suivante:<a href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Une erreur est survenue en essayant d'acc&eacute;der au r&eacute;seau."
+"Veuillez r&eacute;it&eacute;rer votre requ&ecirc;te."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Une erreur s'est produite lors de l'acc&egrave;s au r&eacute;seau. Veuillez "
+"r&eacute;it&eacute;rer votre requ&ecirc;te."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Acc&egrave;s au cache interdit."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Acc&egrave;s au gestionnaire de cache interdit"
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Impossible de r&eacute;soudre l'URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Dur&eacute;e de vie de la connexion d&eacute;pass&eacute;e"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Champ Content-Length absent pour les requ&ecirc;tes POST ou PUT"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERREUR"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERREUR: Acc&egrave;s au cache interdit"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERREUR: Acc&egrave;s au gestionnaire de cache interdit"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERREUR: envoi FTP d&eacute;fectueux"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERREUR: L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERREUR: L'URN suivante n'a pu &ecirc;tre charg&eacute;e"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT r&eacute;ussi: Fichier cr&eacute;&eacute;"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT r&eacute;ussi: Fichier mis &agrave; jour"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/envoi d&eacute;fectueux"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "Le FTP est d&eacute;sactiv&eacute;"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Fichier cr&eacute;&eacute;"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Fichier mis &agrave; jour"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Relais interdit."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "H&eacute;&nbsp;! N'esp&eacute;rez pas trop des URNs de %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Caract&egrave;re ill&eacute;gal dans le nom de la machine, les "
+"soulign&eacute;s (underscores) ne sont pas autoris&eacute;s."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Double &eacute;chappement ill&eacute;gal dans le chemin de l'URL"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL invalide"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Absence d'identifiant HTTP (HTTP/1.0)"
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Absence d'URL"
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Nom de machine absent"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Protocole d'acc&egrave;s absent ou incorrect (il devrait &ecirc;tre de la "
+"forme `http://')"
+
+#: templates/ERR_INVALID_REQ:6
+#, fuzzy
+msgid "Missing or unknown request method."
+msgstr "M&eacute;thode de requ&ecirc;te absente ou inconnue"
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Pas de relais WAIS"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Op&eacute;ration r&eacute;ussie"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+#, fuzzy
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Veuillez contacter l'<a href=\"mailto:%w%W\">administrateur du cache</a>si "
+"vous avez des difficult&eacute;s &agrave; vous authentifier, ou<a href="
+"\"http://%h/cgi-bin/chpasswd.cgi\">changez</a> votre mot de passe."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+#, fuzzy
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Veuillez contacter l'<a href=\"mailto:%w%W\">administrateur du cache</a>si "
+"vous avez des difficult&eacute;s &agrave; vous authentifier ou, si "
+"vous<em>&ecirc;tes</em> l'administrateur, lisez la documentation de Squid "
+"surl'interface du gestionnaire de cache, et v&eacute;rifiez l'historique "
+"ducache pour des messages d'erreur plus d&eacute;taill&eacute;s."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Erreur de lecture"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "D&eacute;lai de lecture d&eacute;pass&eacute;"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La requ&ecirc;te est peut-&ecirc;tre trop volumineuse"
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Erreur de socket"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Quelque chose dans l'URL est incorrect."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Probl&egrave;mes envisageables:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"D&eacute;sol&eacute, vous n'&ecirc;tes pas autoris&eacute; &agrave; "
+"acc&eacute;der &agrave; %U au travers de ce gestionnaire de cache sans vous "
+"&ecirc;tre identifi&eacute;."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"D&eacute;sol&eacute;, vous n'&ecirc;tes actuellement pas autoris&eacute;"
+"&agrave; demander %U &agrave; ce cache tant que vous ne vous &ecirc;tes pas "
+"identifi&eacute;."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid n'a re&ccedil;u aucune donn&eacute;e pour cette requ&ecirc;te."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid ne permet pas toutes les m&eacute;thodes de requ&ecirc;tes pour tous "
+"lesprotocoles. Vous ne pouvez par exemple pas utiliser le protocole POST "
+"dans une requ&ecirc;te Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid a mis fin &agrave; cette requ&ecirc;te car elle a exc&eacute;d&eacute; "
+"ladur&eacute;e de vie maximale."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid n'est pas en mesure de cr&eacute;er une socket TCP, "
+"probablement&agrave; cause d'une charge excessive. Veuillez r&eacute;"
+"it&eacute;rer votrerequ&ecirc;te."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid a envoy&eacute; la commande FTP suivante:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "Le serveur de noms a retourn&eacute;:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Le serveur FTP &eacute;tait trop encombr&eacute; pour charger l'URL: <a href="
+"\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "L'URL suivante n'a pu &ecirc;tre charg&eacute;e: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"La machine distante ou le r&eacute;seau sont peut-&ecirc;tre hors service. "
+"Veuillezr&eacute;it&eacute;rer votre requ&ecirc;te."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "L'URL demand&eacute;e n'a pu &ecirc;tre charg&eacute;e"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Le syst&egrave;me a retourn&eacute;: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Il n'y a pas de machine d&eacute;finie comme relais WAIS sur ce cache&nbsp;!"
+"Adressez-vous &agrave; votre administrateur."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Ce cache ne prend pas en compte le protocole FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Ce cache est en cours de mise hors-service temporaire et il lui est "
+"impossible de satisfaire votre requete actuellement. Veuillez r&eacute;"
+"iterer votre requete ult&eacute;rieurement."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Ce cache ne fera pas suivre votre requ&ecirc;te car il tente de respecter "
+"une relation de voisinage. Le client %i est peut-&ecirc;tre un cache mal "
+"configur&eacute;."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+#, fuzzy
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"En d'autres termes le cache n'a pas &eacute;t&eacute; en mesure de r&eacute;"
+"soudre le nom de machine pr&eacute;sent&eacute; dans l'URL.  V&eacute;rifiez "
+"si l'adresse est correcte."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Ceci pourrait etre caus&eacute; par une URL de FTP avec un chemin absolu (ce "
+"qui n'est pas conforme au RFC 1738) . Si c'est effectivement le cas, alors "
+"le fichier se trouve &agrave; l'adresse <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+#, fuzzy
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Cette requ&ecirc;te n'a pu &ecirc;tre transmise au serveur d'origine ou "
+"&agrave; l'undes caches parents. La cause la plus probable de cette erreur "
+"est L'administrateur du cache a interdit &agrave; ce cache de faire des "
+"connexions directes aux serveurs d'origine, et tous les parents "
+"configur&eacute;s sont actuellement injoignables."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Impossible d'associer une adresse IP &agrave; la machine <i>%H</i>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Impossible de relayer cette requ&ecirc;te en ce moment."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Combinaison de m&eacute;thode et de protocole non g&eacute;r&eacute;e"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Aucun document valide n'a &eacute;t&eacute; trouv&eacute; dans le cache et "
+"la directive<q>only-if-cached</q> a &eacute;t&eacute; sp&eacute;cifi&eacute;"
+"e."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "En essayant d'envoyer (PUT) l'URL suivante: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Erreur d'&eacute;criture"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Vous avez formul&eacute; une requ&ecirc;te avec la directive de contr&ocirc;"
+"le<q>only-if-cached</q>. Le document n'a pas &eacute;t&eacute; trouv&eacute; "
+"dans le cache, <em>ou</em> il n&eacute;cessite une revalidation, interdite "
+"par la directive<q>only-if-cached</q>."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "R&eacute;ponse de taille nulle"
diff --git a/errors/id.po b/errors/id.po
new file mode 100644 (file)
index 0000000..67834ff
--- /dev/null
@@ -0,0 +1,574 @@
+# Indonesian translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-07-28 18:47+0000\n"
+"Last-Translator: Hasbinur <Unknown>\n"
+"Language-Team: Indonesian <id@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Launchpad (build Unknown)\n"
+"X-Launchpad-Export-Date: 2008-07-31 11:24+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Akses Ditolak"
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Akses Cache Ditolak"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr ""
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP tidak aktif"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "File sudah diperbaharui"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr ""
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr ""
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr ""
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr ""
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr ""
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr ""
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr ""
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr ""
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr ""
diff --git a/errors/it.po b/errors/it.po
new file mode 100644 (file)
index 0000000..5511c5f
--- /dev/null
@@ -0,0 +1,673 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-08 21:04+1200\n"
+"Last-Translator: Francesco Chemolli <kinkie@squid-cache.org>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Richiesta invalida</b>. C'è stato un errore mentre si cercava di "
+"elaborare la richiesta:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Risposta non valida</b>. Si è verificato un errore mentre veniva "
+"elaborata la richiesta:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Si è verificato un timeout mentre si attendeva di ricevere dati dalla rete. "
+"La rete o il server potrebbero essere sovraccarichi o indisponibili. Si "
+"prega di ritentare la richiesta tra qualche minuto."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr ""
+"Non è stato possibile ottenere una URL corrispondente alla URN richiesta."
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Accesso negato."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Le configurazioni di controllo dell'accesso impediscono di soddisfare la "
+"richiesta. Si prega di contattare il fornitore del servizio nel caso questo "
+"comportamento sia scorretto."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Le credenziali fornite per l'accesso al server FTP relativo alla URL <a href="
+"\"%U\">%U</a> sono invalide."
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Si è verificato un errore di protocollo FTP durante il dialogo con il server "
+"mentre si accedeva alla URL <a href=\"%U\">%U</a>."
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Il server ICAP ha dato una risposta irregolare (illegal response)."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Si è verificato un errore nella ricezione dei dati dalla rete. Si prega di "
+"ritentare la richiesta."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Si è verificato un errore durante la ricezione dei dati dalla rete. Si prega "
+"di ritentare la richiesta."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Accesso alla cache negato."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "L'accesso al cache manager è negato."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Impossibile risolvere la URN."
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Il timeout di mantenimento della connessione è scaduto."
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "La connessione a %I è fallita."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+"Richiesta non valida: una richiesta di tipo POST oppure PUT non contiene il "
+"campo Content-Length."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERRORE"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERRORE: accesso alla cache negato."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERRORE: l'accesso al Cache Manager è negato."
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERRORE: l'invio del file via FTP è fallito."
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERRORE: non è stato possibile accedere alla URL richiesta"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERRORE: non è stato possibile accedere alla URN richiesta"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "L'elaborazione ESI è fallita."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "L'invio dati (PUT) FTP ha avuto successo: il file è stato creato."
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "L'invio dati (PUT) FTP ha avuto successo: il file è stato aggiornato."
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "L'invio dati (PUT) FTP è fallito."
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "Il protocollo FTP non è disponibile (disabilitato)."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Non è stato possibile stabilire una connessione sicura verso %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Il file è stato creato."
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Il file è stato aggiornato."
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Inoltro negato."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Generato da %h (%s) il %T."
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hey, non ci si deve aspettare granchè dalle URN su %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "Si è verificato un errore nel dialogo ICAP."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Se la richiesta è di tipo GET, ciò che si sta cercando di scaricare è di "
+"dimensioni troppo grandi."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Se la richiesta è di tipo PUT, ciò che si sta cercando di inviare è di "
+"dimensioni troppo grandi."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"C'è un carattere irregolare nel nome host: gli underscore \"_\" non sono "
+"consentiti."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr ""
+"Doppia codifica (\"double-escape\") irregolare nella porzione Path della URL."
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL non valida"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "L'identificativo del protocollo HTTP è mancante (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "URL non specificata."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Nome host non specificato."
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Protocollo di accesso mancante o scorretto nella richiesta (dovrebbe essere "
+"<q>http://</q> o simile)."
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Metodo non specificato nella richiesta, o sconoscito."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Le funzioni di inoltro Wais non sono implementate."
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "L'operazione richiesta è stata portata a termine con successo."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Si prega di contattare il <a href=\"mailto:%w%W\">gestore del vostro proxy</"
+"a> se avete diffcoltà nell'identificarvi per l'accesso al servizio, o di <a "
+"href=\"http://%h/cgi-bin/chpasswd.cgi\">cambiare</a> la vostra password "
+"iniziale."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Si prega di contattare il <a href=\"mailto:%w%W\">gestore del vostro proxy</"
+"a> se avete diffcoltà nell'identificarvi per l'accesso al servizio o, se "
+"<em>siete</em> l'amministratore, di consultare la documentazione di Squid "
+"riguardante l'interfaccia del <em>cache manager</em> e di verificare il log "
+"del servizio alla ricerca informazioni più dettagliate sull'errore."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Errore di lettura."
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Timeout nella lettura."
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "La richiesta è di dimensioni troppo grandi."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "L'operazione di rete (socket) è fallita."
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Qualche aspetto della URL richiesta non è irregolare."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Alcuni dei possibili problemi sono:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Non siete autorizzati a richiedere %U da questo cache manager finchè non vi "
+"sarete identificati con successo."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Non siete autorizzati a richiedere %U da questa cache finchè non vi sarete "
+"identificati con successo."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid non ha ricevuto alcun dato in risposta a questa richiesta."
+
+# The translated text is less generous in details than the original, but IMO clearer to the admin and less confusing to the user.
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr "Il metodo di accesso non è supportato per questo protocollo."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"La richiesta è stata interrotta perchè è stato superato il limite di durata "
+"massimo della connessione."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid non è in grado di aprire un socket TCP, probabilmente a causa del "
+"sovraccarico. Si prega di ritentare la richiesta."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Il comando FTP inviato da Squid era:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "Il processo dnsserver ha risposto:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "Il sistema di gestione delle funzioni ESI ha risposto:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Il FTP server era sovraccarico e non ha consentito di accedere alla URL: <a "
+"href=\"%U\">%U</a>."
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"Il messaggio di risposta HTTP ricevuto dal server non era comprensibile o "
+"era irregolare. Si prega di contattare il gestore del sito per segnalargli "
+"l'errore."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "Il server ICAP non è raggiungibile."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Non è stato possibile accedere alla URL: <a href=\"%U\">%U</a>."
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Mentre si cercava di accedere alla URL <a href=\"%U\">%U</a> si è "
+"manifestato il seguente errore:"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Mentre si cercava di accedere alla URN <a href=\"%U\">%U</a> si è "
+"manifestato il seguente errore:"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"Il server remoto o un tratto di rete necessario a raggiungerlo potrebbero "
+"essere guasti. Si prega di ritentare la richiesta tra qualche minuto."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "La richesta o la risposta è di dimensioni troppo grandi."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Non è stato possibile accedere alla URL richiesta."
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "Il server ha risposto:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Il sistema ha risposto: <i>%E</i>"
+
+# The administrator should be congratulated, rather than being yelled at. Wais is not relevant anymore.
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Non è stato configurato alcun server di relay per il protocollo WAIS su "
+"questa Cache."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Questi limiti sono stati imposti dal provider che gestisce questo Proxy. Se "
+"ritenete che questo sia scorretto si prega di rivolgersi alle strutture di "
+"supporto degli utenti corrette."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Questo Proxy non supporta il protocollo FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Questo Proxy non è in grado di soddisfare la richiesta perchè è in fase di "
+"spegnimento. si prega di riprovare tra qualche minuto."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Questo Proxy non può inoltrare la richiesta: il client di indirizzo %i è "
+"noto al Proxy come <em>sibling</em> ma si comporta come client. Potrebbe "
+"essere configurato in maniera sbagliata?"
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+"Questo significa che qualche aspetto della comunicazione ICAP non è stato "
+"completato regolarmente."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Questo significa che il server FTP potrebbe non avere i permessi o lo spazio "
+"per ricevere il file. Si prega di controllare il percorso, i permessi e lo "
+"spazio su disco e riprovare."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Questo significa che il Proxy non è riuscito a tradurre il nome host nella "
+"URL nel relativo indirizzo. Verificate la correttezza dell'indirizzo e "
+"riprovate."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Questo significa che il surrogate non è stato in grado di processare il "
+"template ESI. Si prega di segnalare l'errore al webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Questo potrebbe essere causato da una URL FTP con un percorso completo, "
+"comportamento questo non conforme allo standard imposto dalla RFC 1738. Se "
+"questo è il caso, il file è disponibile alla URL <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+"Questo Proxy e il server remoto non sono riusciti a negoziare una "
+"connessione cifrata con caratteristiche mutuamente accettabili. È possibile "
+"che il server non supporti le connessioni cifrate, o che il proxy non sia "
+"soddisfatto dalle credenziali di sicurezza proposte dal server."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Non è stato possibile inoltrare la richiesta al server di origine nè ad "
+"alcun proxy di tipo <em>parent</em> noto. La causa più probabile è che "
+"questo proxy sia configurato per non contattare mai direttamente il server "
+"di origine, e che tutti i proxy <em>parent</em> non siano disponibili in "
+"questo momento."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr ""
+"Non è stato possibile risalire all'indirizzo IP corrispondente al nome host "
+"<q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Non è possibile inoltrare la richiesta in questo momento."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Metodo e protocollo della richiesta non sono supportati."
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Non è stato possibile reperire un documento aggiornato nella cache e la "
+"richiesta contiene la direttiva <q>only-if-cached</q>."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Mentre si cercava di effettuare un'operazione di FTP PUT verso la URL <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Errore durante l'operazione di scrittura"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"La richiesta contiene la direttiva di controllo della cache <q>only-if-"
+"cached</q>. Non è stato possibile trovare il relativo documento nella cache, "
+"<em>oppure</em> richiedeva una operazione di verifica, non consentita dalla "
+"direttiva."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "L'amministratore del proxy è <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"L'amministratore del proxy potrebbe essere in grado di fornire ulteriori "
+"dettagli sul tipo di problema."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Il webmaster è <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Risposta di dimensione nulla."
diff --git a/errors/nl.po b/errors/nl.po
new file mode 100644 (file)
index 0000000..7e014c1
--- /dev/null
@@ -0,0 +1,648 @@
+# Dutch translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-08-29 00:49+1200\n"
+"Last-Translator: Mark Visser <mark@cal026031.student.utwente.nl>\n"
+"Language-Team: Dutch <nl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Een timeout kwam voor bij het lezen van data van het netwerk.  Het netwerk "
+"of de server kan niet beschikbaar of overbelast zijn.  Probeer uw verzoek "
+"opnieuw."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "De gevraagde URN kon niet worden opgehaald"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Toegang niet toegestaan."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"U heeft geen toegang tot de URL die u probeerde op te vragen van deze "
+"server.  Neem contact op met uw service provider als u denkt dat dit niet "
+"klopt."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"De FTP authenticatie is mislukt tijdens het opvragen van de URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Er is een FTP protocolfout voorgekomen tijdens het ophalen van de URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Een foutwaarde kwam voor tijdens het lezen van data van het netwerk.  "
+"Probeer uw verzoek opnieuw."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Een foutwaarde kwam voor tijdens het schrijven naar het netwerk.  Probeer uw "
+"verzoek opnieuw."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Cache toegang niet toegestaan."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Cache Manager toegang niet toegestaan."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Kan de URN niet herleiden"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "De levensduur van de verbindings is verstreken"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr ""
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "De Content-Length ontbreekt voor het POST of PUT verzoek."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FOUT"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FOUT: Cache toegang niet toegestaan"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FOUT: Cache Manager toegang niet toegestaan"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FOUT: FTP upload mislukt"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FOUT: De gevraagde URL kon niet worden opgehaald"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FOUT: De gevraagde URN kon niet worden opgehaald"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Succesvol: Bestand aangemaakt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Succesvol: Bestand vernieuwd"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/upload mislukt"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP is uitgeschakeld"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Bestand aangemaakt"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Bestand vernieuwd"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Doorsturen niet toegestaan."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Hmmm, verwacht niet teveel van URNs op %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+#, fuzzy
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Indien u een GET aanvraag stuurde, dan was het antwoord hetgeen U probeert "
+"te ontvangen te groot."
+
+#: templates/ERR_TOO_BIG:6
+#, fuzzy
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Indien U een POST of PUT aanvraag stuurde, dan hetgeen U probeert te "
+"verzenden te groot."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Er staat een ongeldig teken in de hostnaam; Het teken <q>_</q> is niet "
+"toegestaan."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ongeldige <q>double-escape</q> in het URL pad"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Ongeldige URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Ontbrekende HTTP identificatie (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Ontbrekende URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Ontbrekende hostnaam"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Ontbrekend of onjuist toegangsprotocol (moet zijn <q>http://</q> of "
+"vergelijkbaar)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Ontbrekende of onbekende verzoekmethode."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Geen WAIS Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Bewerking succesvol"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Neem contact op met de <a href=\"mailto:%w%W\">cache beheerder</a> als u "
+"problemen heeft om uzelf te identificeren of <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">verander</a> hier uw standaard wachtwoord."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Neem contact op met de <a href=\"mailto:%w%W\">cache beheerder</a> als u "
+"problemen heeft om uzelf te identificeren. Als <em>U</em> de beheerder bent, "
+"lees dan de Squid documentatie over de cache manager interface en lees de "
+"cache log voor meer gedetailleerde foutmeldingen."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Leesfout"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Lees Timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Het verzoek is mogelijk te lang."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Fout"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Een gedeelte van de gevraagde URL is ongeldig."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Mogelijke problemen zijn:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+#, fuzzy
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Sorry, het is u momenteel niet toegestaan om %U op te vragen van deze cache "
+"manager totdat u zichzelf hebt geidentificeerd."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Sorry, het is u niet toegestaan om %U van deze cache op te vragen totdat u "
+"zich geidentificeerd hebt."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid ontving in het geheel geen data op dit verzoek."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid ondersteunt niet alle verzoekmethoden voor alle toegangsprotocollen. U "
+"kunt bijvoorbeeld geen Gopher verzoek POSTen."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid heeft het verzoek afgebroken omdat het de maximale "
+"verbindingslevensduur heeft overschreden."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid is niet in staat een TCP socket aan te maken, waarschijnlijk als "
+"gevolg van een te hoge bezettingsgraad. Probeer uw verzoek opnieuw."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid stuurde de volgende FTP opdracht:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "De dnsserver gaf als antwoord:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr ""
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"De FTP server was te druk bezet tijdens het opvragen van de URL: <a href=\"%U"
+"\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"De door u gezochte server of het netwerk is onbereikbaar.  Probeer het "
+"verzoek opnieuw."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "De aanvraag of het antwoord is te groot."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "De gevraagde URL kon niet worden opgehaald"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Het systeem gaf terug: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Er is geen WAIS Relay host gedefinieerd voor deze Cache!  Neem contact op "
+"met de cachebeheerder."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Deze grootte-beperkingen zijn ingesteld door de beheerder van deze cache.  "
+"Neem contact op met de beheerder van deze cache, wanneer U van mening bent "
+"dat deze beperking onjuist is."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Deze cache ondersteunt geen FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Deze cache is bezig met herstarten en kan daarom momenteel niet aan uw "
+"verzoek voldoen.  Probeer uw verzoek zo nog eens."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Deze cache zal uw verzoek niet doorsturen, omdat het een sibling relatie "
+"tracht te bewerkstelligen.  Wellicht dat de client op %i een fout ingestelde "
+"cache is."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Dit betekent dat de cache niet in staat was om de hostnaam uit de URL te "
+"herleiden. Controleer of de naam klopt."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Dit kan veroorzaakt worden door een FTP URL met een absoluut pad (hetgeen "
+"niet in overeenstemming is met RFC 1738).  Als dit de oorzaak is, dan kan "
+"het bestand gevonden worden op <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Dit verzoek kon niet worden doorgestuurd naar de oorspronkelijke server of "
+"een van de parent caches.  De meest waarschijnlijke reden voor deze fout is "
+"dat de cache beheerder het deze cache niet toestaat met de oorspronkelijke "
+"server te praten, en alle ingestelde parent caches op dit moment "
+"onbereikbaar zijn."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Niet in staat om het IP adres te bepalen van de hostnaam <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Momenteel niet in staat dit verzoek door te sturen."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Niet ondersteunde verzoekmethode of protocol"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Een geldig document werd niet gevonden in de cache, en de <q>only-if-cached</"
+"q> richtlijn was ingesteld."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+#, fuzzy
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Bij een poging om naar de volgende URL te schrijven: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Schrijffout"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"U heeft een verzoek gedaan met een <q>only-if-cached</q> cachebeheer "
+"richtlijn. Het document werd niet gevonden in de cache <em>of</em> er was "
+"een herbevestiging nodig die niet werd toegestaan door de <q>only-if-cached</"
+"q> richtlijn."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "De beheerder van deze cache is <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Leeg object antwoord"
diff --git a/errors/pt-br.po b/errors/pt-br.po
new file mode 100644 (file)
index 0000000..c60801e
--- /dev/null
@@ -0,0 +1,659 @@
+# Brazilian Portuguese translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-23 01:28+1200\n"
+"Last-Translator: Aecio F. Neto <aecioneto@gmail.com>\n"
+"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+"X-Launchpad-Export-Date: 2008-07-27 05:12+0000\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Requisição Inválida</b> erro encontrado ao tentar processar a requisição:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+"<b>Resposta Inválida</b> erro encontrado ao tentar processar a requisição:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Tempo esgotado esperando a leitura de dados pela rede. A rede ou o servidor "
+"pode estar desconectado ou congestionado. Por favor, tente novamente sua "
+"requisição."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "Uma URL para a URN requisitada não pode ser recuperada"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Acesso Negado."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"A configuração do controle de acesso impede que sua requisição seja "
+"permitida neste momento. Por favor, contate seu provedor de serviço se você "
+"acha que isso está incorreto."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Ocorreu uma falha na autenticação do FTP ao tentar recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Um erro no protocolo FTP ocorreu ao tentar recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Uma resposta ilegal foi recebida do servidor ICAP."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Uma condição de erro ocorreu ao ler dados da rede. Por favor, repita sua "
+"requisição."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Ocorreu um erro ao tentar escrever na rede. Por favor, repita sua "
+"requisição."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Acesso negado ao cache."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Acesso negado ao gerenciador de cache."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Não é possível resolver URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Tempo de vida da conexão expirou"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Conexão para %I falhou."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr "Content-Length faltando para requisições POST ou PUT."
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ERRO"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ERRO: Acesso negado ao cache"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "ERRO: Acesso negado ao gerenciador de cache"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ERRO: upload via FTP falhou"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ERRO: A URL requisitada não pode ser recuperada"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ERRO: A URN requisitada não pode ser recuperada"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "O processamento de ESI falhou."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP - PUT bem sucedido: Arquivo Criado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP - PUT bem sucedido: Arquivo Atualizado"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP - PUT/envio falhou"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP está Desabilitado"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Falhou ao estabelecer uma conexão segura com %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Arquivo criado"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Arquivo atualizado"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Encaminhamento Negado."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Gerado %T por %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Olha, não espere muito por URNs em %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "Erro de protocolo ICAP."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Se você está fazendo uma requisição GET, então o item que você está tentando "
+"baixar é muito grande."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Se você está fazendo uma requisição POST ou PUT, então o item que você está "
+"tentando enviar é muito grande."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Caracter ilegal no nome de host; underscores não são permitidos."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Escape duplo ilegal na URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "URL inválida"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Identificador HTTP faltando (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "URL faltando."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Nome do host faltando"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Protocolo de acesso faltando ou incorreto (deveria ser <q>http://</q> ou "
+"semelhante)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Método de requisição faltando ou desconhecido."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Sem Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operação bem sucedida"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Por favor, contate o <a href=\"mailto:%w%W\">administrador do cache</a> se "
+"você está tendo dificuldades em se autenticar ou <a href=\"http://%h/cgi-"
+"bin/chpasswd.cgi\">mude</a> sua senha."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Por favor, contate o <a href=\"mailto:%w%W\">administrador do cache</a> se "
+"você está tendo dificuldades em se autenticar ou, se você <em>é</em> o "
+"administrador, leia a documentação do Squid na interface de gerenciamento de "
+"cache e cheque o log para maiores detalhes sobre mensagens de erro."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Erro de Leitura"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Tempo de leitura esgotado"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Requisição é muito grande."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Falha de socket"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Alguma característica da URL requisitada é incorreta."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Alguns dos possíveis problemas são:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Desculpe. Atualmente, você não tem permissão para requisitar %U deste "
+"gerenciador de cache até que você tenha se autenticado."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Desculpe. Atualmente, você não está permitido a requisitar %U desse cache "
+"até que você tenha se autenticado."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid não recebeu nenhum dado para essa requisição."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid não suporta todos os métodos de requisição para todos os protocolos de "
+"acesso. Por exemplo, você não pode emitir uma requisição POST ao protocolo "
+"Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid terminou a requisição porque foi excedido o tempo de vida máximo da "
+"conexão."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid não pode criar um socket TCP, presumivelmente devido a uma carga "
+"excessiva. Por favor, repita sua requisição."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid enviou o seguinte comando FTP:"
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The DNS server returned:"
+msgstr "O servidor DNS retornou:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "O processador ESI retornou:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"O servidor FTP estava muito ocupado para recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"A mensagem da resposta HTTP recebida do servidor contatado não pode ser "
+"entendida ou estava mal-formada. Por favor, contate o administrador do site."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "O servidor ICAP não é alcançável."
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "A seguinte URL não pôde ser recuperada: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"O seguinte erro foi encontrado ao tentar recuperar a URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"O seguinte erro foi encontrado ao tentar recuperar a URN: <a href=\"%U\">%U</"
+"a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"O host remoto ou a rede pode estar fora do ar. Por favor, faça a requisição "
+"novamente."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "A requisição ou a resposta é muito grande."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "A URL requisitada não pôde ser recuperada"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "O servidor respondeu com:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "O sistema retornou: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Não há nenhum host de WAIS Relay definido para esse Cache!  Contate o "
+"administrador."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Esses limites foram estabelecidos pelo Provedor de Serviço Internet em que "
+"este cache opera. Por favor, contate-os diretamente se você acha que isso é "
+"um erro."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Esse cache não suporta FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Este cache está sendo desligado ou não pode servir sua requisição neste "
+"momento. Por favor, tente novamente sua requisição em breve."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Este cache não encaminhará sua requisição porque está tentando forçar um "
+"relacionamento. Talvez o cliente em %i é um cache que está mal configurado."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "Isto significa que alguma característica da comunicação ICAP falhou."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Isto significa que o servidor FTP não tem permissão ou espaço suficiente "
+"para armazenar o arquivo. Verifique o caminho, permissão, espaço em disco e "
+"tente novamente."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Isto significa que o cache não pode resolver o nome de host contido na URL. "
+"Verifique se o endereço está correto."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Isto significa que o surrogate não pode processar o modelo do ESI. Por "
+"favor, informe este erro ao webmaster."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Isto pode ter sido causado por uma URL de FTP com um caminho absoluto (que "
+"não é conforme com a RFC 1738). Se esta for a causa, então o arquivo pode "
+"ser encontrado em <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+"Este proxy e o host remoto falharam em negociar uma configuração de "
+"segurança aceitável entre si para atender sua requisição. É possível que o "
+"host remoto não suporte conexões seguras ou que o proxy não está satisfeito "
+"com as credenciais de segurança do host."
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Esta requisição não pode ser encaminhada ao servidor de origem or para "
+"nenhum cache superior. A causa mais provável para este erro é que o "
+"administrador do cache não permite que este cache faça conexões diretas aos "
+"servidores de origem e que todos caches superiores estão inalcançáveis no "
+"momento."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Impossível determinar o endereço IP do nome de host <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Impossível encaminhar essa requisição nesse momento."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "O método de Requisição ou o procoloco não é suportado"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Um documento válido não foi encontrado no cache e a diretiva <q>only-if-"
+"cached</q> foi especificada."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr "Ao tentar executar o PUT na seguinte URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Erro ao enviar"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Você enviou uma requisição com a diretiva de controle de cache <q>only-if-"
+"cached</q>. O documento não foi encontrado no cache <em>ou</em> o cache "
+"requer uma revalidação, que é proibida por esta diretiva."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Seu administrador do cache é <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Seu administrador do cache pode providenciar com maiores detalhes a exata "
+"natureza do problema, caso seja necessário."
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Seu webmaster é <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Resposta de tamanho zero"
diff --git a/errors/sv.po b/errors/sv.po
new file mode 100644 (file)
index 0000000..2a1bb18
--- /dev/null
@@ -0,0 +1,665 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2008-09-01 03:03+1300\n"
+"PO-Revision-Date: 2008-09-22 17:26+1200\n"
+"Last-Translator: Stefan M_nsby <stefan@mansby.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Pootle 1.1.0\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr ""
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"En timeout intr&auml;ffade i v&auml;ntan p&aring; att f&aring; l&auml;sa "
+"data fr&aring;n n&auml;tverket.  Antingen &auml;r servern nere eller "
+"ocks&aring; &auml;r n&auml;tverket tungt belastat.  V&auml;nligen "
+"f&ouml;rs&ouml;k igen."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "En URL f&ouml;r beg&auml;rd URN kunde inte h&auml;mtas"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Tilltr&auml;de Nekas."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+"Tilltr&auml;deskontrollen f&ouml;rhindrar Er beg&auml;ran fr&aring;n att "
+"till&aring;tas vid den h&auml;r tidpunkten.  V&auml;nligen kontakta Er "
+"tj&auml;nsteleverant&ouml;r om Ni finner detta inkorrekt."
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Ett misslyckande vid FTP autentifiering intr&auml;ffade vid "
+"f&ouml;rs&ouml;ket att h&auml;mta URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a href=\"%U"
+"\">%U</a>"
+msgstr ""
+"Ett FTP protokollfel intr&auml;ffade vid f&ouml;rs&ouml;ket att h&auml;mta "
+"URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr ""
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Ett fel intr&auml;ffade vid f&ouml;rs&ouml;k att l&auml;sa data fr&aring;n "
+"n&auml;tverket.  V&auml;nligen f&ouml;rs&ouml;k igen."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+"Ett fel intr&auml;ffade vid f&ouml;rs&ouml;k att skriva till n&auml;tverket. "
+" V&auml;nligen f&ouml;rs&ouml;k igen."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Tilltr&auml;de till Cache Nekas."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Tilltr&auml;de till Cachehanteraren Nekas."
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Kan inte l&ouml;sa upp URN namnet"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Anslutnings levnadstid tog slut"
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "Anslutnings att %I misslyckades."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+"Inneh&aring;llsl&auml;ngden saknas f&ouml;r POST(posta) eller PUT(s&auml;tt) "
+"f&ouml;rfr&aring;gan"
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "FEL"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "FEL: Tilltr&auml;de till Cache Nekas"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "FEL: Tilltr&auml;de till Cachehanteraren Nekas"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "FEL: FTP skicka misslyckades"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "FEL: Beg&auml;rd URL kunde inte h&auml;mtas"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "FEL: Beg&auml;rd URN kunde inte h&auml;mtas"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr "ESI bearbetning misslyckades."
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP SKICKA lyckades: Filen Skapades"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP Skicka Lyckades!: Filen uppdaterades"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP SKICKA/&ouml;verf&ouml;ra misslyckades"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP &auml;r Avst&auml;ngd"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Filein skapades"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Filen uppdaterades"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Vidarebefodran Nekad."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr ""
+"Men hall&aring;, f&ouml;rv&auml;nta dig inte f&ouml;r mycket fr&aring;n en "
+"URNs p&aring; %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr ""
+
+#: templates/ERR_TOO_BIG:7
+#, fuzzy
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Ifall du utf&ouml;rde en GET beg&auml;ran, s&aring; &auml;r svaret du "
+"f&ouml;rs&ouml;ker ladda nedf&ouml;r stort."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Ifall du utf&ouml;r en POST eller PUT beg&auml;ran, s&aring; &auml;r "
+"beg&auml;ran du f&ouml;rs&ouml;ker ladda upp f&ouml;r stor."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr ""
+"Ej till&aring;tet tecken i v&auml;rdnamnet; '_' &auml;r ej till&aring;tna."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Ej till&aring;ten dubbel-escape i URL-S&ouml;kv&auml;gen"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Felaktig URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Avsaknad HTTP identifierare (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Avsaknad URL"
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Avsaknat v&auml;rdnamn"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Avsaknat eller felaktigt tilltr&auml;desprotokoll (ska vara <q>http://</q> "
+"eller liknande)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Avsaknad eller ok&auml;nd method f&ouml;r f&ouml;rfr&aring;gan."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "Igen Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Operationen lyckades"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-bin/"
+"chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"V&auml;nligen kontakta <a href=\"mailto:%w%W\">cacheadministratorn</a> om Ni "
+"har sv&aring;righ eter med att autentifiera Er sj&auml;lv, eller <a "
+"href=\"http://%h/cgi-bin/chpasswd.cgi\">byt</a> Ert l&ouml;senord."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"V&auml;nligen kontakta <a href=\"mailto:%w%W\">cacheadministratorn</a> om Ni "
+"har sv&aring;righeter med att autentifiera Er sj&auml;lv, om Ni "
+"<em>&auml;r</em> administratorn, l&auml;s Squid dokumentationen om cache "
+"hanterar interfacet och kontrollera cache loggen f&ouml;r mer detaljerade "
+"felmeddelanden."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "L&auml;sfel"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "L&auml;sningen fick en timeout"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "F&ouml;rfr&aring;gan &auml;r f&ouml;r stor"
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Socket Fel"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr ""
+"N&aring;gon eller n&aring;gra aspekter av beg&auml;rd URL &auml;r "
+"inkorrekta."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+#, fuzzy
+msgid "Some possible problems are:"
+msgstr "M&ouml;jliga problem:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Ledsen, Ni &auml;r f&ouml;rn&auml;rvarande ej ber&auml;ttigad att "
+"beg&auml;ra %U fr&aring;n denna cache tills det att Ni har autentifierat Er."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Ledsen, Ni &auml;r f&ouml;rn&auml;rvarande ej ber&auml;ttigad att "
+"beg&auml;ra %U fr&aring;n denna cache tills det att Ni har autentifierat Er."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr ""
+"Squid tog inte emot n&aring;got data f&ouml;r denna f&ouml;rfr&aring;gan."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid st&ouml;djer inte alla fr&aring;gemetoder f&ouml;r alla protokoll. "
+"Till exempel, Ni kan inte POST'a en Gopher f&ouml;rfr&aring;gan."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid har terminerat Er beg&auml;ran p&aring; grund av att den har "
+"&ouml;verskridikt den till&aring;tna livstiden f&ouml;r en anslutning."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid kan inte skapa en TCP socket, gissningsvis p&aring; grund av tung "
+"last. V&auml;nligen f&ouml;rs&ouml;k igen."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid s&auml;nde f&ouml;ljande FTP kommando:"
+
+#: templates/ERR_DNS_FAIL:6
+#, fuzzy
+msgid "The DNS server returned:"
+msgstr "Namnservern returnerade:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "ESI motorn returnerade:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+#, fuzzy
+msgid "The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"FTP servern var ej tillg&auml;nglig vid f&ouml;rs&ouml;ket att h&auml;mta "
+"URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+#, fuzzy
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+"HTTP svarsmeddelandet ifr&aring;n den kontaktade servern &auml;r felaktigt "
+"och kunde inte tolkas. V&auml;nligen kontakta den ansvariga f&ouml;r "
+"webbservern ifr&aring;ga."
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "F&ouml;ljande URL kunde inte h&auml;mtas: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid "The remote host or network may be down.  Please try the request again."
+msgstr ""
+"Beg&auml;rd v&auml;rd eller n&auml;tverk kan vara nere.  V&auml;nligen "
+"f&ouml;rs&ouml;k igen."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "Beg&auml;ran &auml;r f&ouml;r stor."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Den beg&auml;rda URL:en kunde inte h&auml;mtas"
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr ""
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Systemet returnerade: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Det finns ingen WAIS Relay v&auml;rd definerad f&ouml;r denna cache!  Skrik "
+"p&aring; din administrat&ouml;r."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+"Dessa gr&auml;nser &auml;r inst&auml;llda av den Internet Leverant&ouml;r "
+"som handhar den h&auml;r cacheservern.  Var v&auml;nlig kontakta dem direkt "
+"ifall du anser att detta &auml;r ett fel."
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Denna cache st&ouml;djer inte FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+"Denna cache h&aring;ller p&aring; att st&auml;nga av sig och kan "
+"d&auml;rf&ouml;r inte behandla din f&ouml;rfr&aring;gan.  V&auml;nligen "
+"f&ouml;rs&ouml;k igen lite senare."
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+"Denna cache kommer inte vidarebefodra en beg&auml;ran eftersom den "
+"f&ouml;rs&ouml;ker att tvinga sig till en r&auml;ttighet som den inte har.  "
+"Kanske klienten vid %i &auml;r en cache som &auml;r felkonfigurerad."
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Detta betyder att cachen kunde inte l&ouml;sa upp v&auml;rdnamnet angivet i "
+"s&ouml;kv&auml;gen. Kontrollera att adressen &auml;r korrekt."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+"Detta betyder att surrogat servern kunde inte bearbeta ESI mallen. "
+"V&auml;nligen kontakta den ansvariga f&ouml;r webbservern ifr&aring;ga."
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+"Detta kan orsakas av en FTP URL med en absolut s&ouml;kv&auml;g (vilket inte "
+"&ouml;verensst&auml;mmer med RFC 1738).  Om detta &auml;r orsaken, kan "
+"filen &aring;terfinnas vid <a href=\"%B\">%B</a>."
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+"Denna f&ouml;rfr&aring;gan kunde ej vidarebefodras till ursprunglig server "
+"eller till &ouml;verliggande cache-noder.  Den mest sannolika anledningen "
+"till detta fel &auml;r cacheadministratorn till&aring;ter inte denna cache "
+"att g&ouml;ra direkta anslutningar till ursprungliga servrar, och alla "
+"&ouml;verliggande cache-noder kan ej n&aring;s f&ouml;r tillf&auml;llet."
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Kunde inte f&aring; fram IP-adressen f&ouml;r v&auml;rdnamnet <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr "Kunde ej vidarebefodra f&ouml;rfr&aring;gan vid detta tillf&auml;lle."
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr "Ej st&ouml;d f&ouml;r beg&auml;rd Metod och Protokoll"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+"Senaste dokumentet &aring;terfanns inte i cachen och bara-om-i-cache (<q"
+">only-if-cached</q>) direktivet &auml;r satt."
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+"Vid f&ouml;rs&ouml;ket att SKICKA (PUT) f&ouml;ljande URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Skriv Fel"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+#, fuzzy
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+"Du har beg&auml;rt ett dokument med <q>bara-om-i-cache</q> cache kontroll "
+"direktivet. Dokumentet &aring;terfanns inte i cache databasen, "
+"<em>eller</em> det kr&auml;vs en uppdatering av cache databasen, men "
+"f&ouml;rhindras av <q>bara-om-i-cache</q> direktivet."
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr ""
+"Din cacheserver administrat&ouml;r &auml;r <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+"Din cacheserver administrat&ouml;r man eventuellt ge dig mera information om "
+"det specifika problemet med denna sida."
+
+#: templates/ERR_ESI:8
+#, fuzzy
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr ""
+"Addressen till ansvarig administrat&ouml;r &auml;r <a "
+"href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Storleken p&aring; svaret var lika med noll"
diff --git a/errors/templates/ERR_ACCESS_DENIED b/errors/templates/ERR_ACCESS_DENIED
new file mode 100644 (file)
index 0000000..901f37c
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Access Denied.</b></p>
+</blockquote>
+
+<p>Access control configuration prevents your request from being allowed at this time.  Please contact your service provider if you feel this is incorrect.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>
+<hr>
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_CACHE_ACCESS_DENIED b/errors/templates/ERR_CACHE_ACCESS_DENIED
new file mode 100644 (file)
index 0000000..54415cf
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: Cache Access Denied</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head>
+<body>
+<h1>ERROR</h1>
+<h2>Cache Access Denied.</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Cache Access Denied.</b></p>
+</blockquote>
+
+<p>Sorry, you are not currently allowed to request %U from this cache until you have authenticated yourself.</p>
+
+<p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself or <a href="http://%h/cgi-bin/chpasswd.cgi">change</a> your default password.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_CACHE_MGR_ACCESS_DENIED b/errors/templates/ERR_CACHE_MGR_ACCESS_DENIED
new file mode 100644 (file)
index 0000000..3458b67
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: Cache Manager Access Denied</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>Cache Manager Access Denied.</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Cache Manager Access Denied.</b></p>
+</blockquote>
+
+<p>Sorry, you are not currently allowed to request %U from this cache manager until you have authenticated yourself.</p>
+
+<p>Please contact the <a href="mailto:%w%W">cache administrator</a> if you have difficulties authenticating yourself or, if you <em>are</em> the administrator, read Squid documentation on cache manager interface and check cache log for more detailed error messages.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_CANNOT_FORWARD b/errors/templates/ERR_CANNOT_FORWARD
new file mode 100644 (file)
index 0000000..06dfea2
--- /dev/null
@@ -0,0 +1,24 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head>
+<body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Unable to forward this request at this time.</b></p>
+</blockquote>
+
+<p>This request could not be forwarded to the origin server or to any parent caches.  The most likely cause for this error is that the cache administrator does not allow this cache to make direct connections to origin servers, and all configured parent caches are currently unreachable.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_CONNECT_FAIL b/errors/templates/ERR_CONNECT_FAIL
new file mode 100644 (file)
index 0000000..f10d196
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+<blockquote>
+<p><b>Connection to %I failed.</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>The remote host or network may be down.  Please try the request again.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_DNS_FAIL b/errors/templates/ERR_DNS_FAIL
new file mode 100644 (file)
index 0000000..fc7e093
--- /dev/null
@@ -0,0 +1,27 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Unable to determine IP address from host name <q>%H</q></b></p>
+</blockquote>
+
+<p>The DNS server returned:</p>
+<blockquote>
+<pre>%z</pre>
+</blockquote>
+
+<p>This means that the cache was not able to resolve the hostname presented in the URL. Check if the address is correct.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_ESI b/errors/templates/ERR_ESI
new file mode 100644 (file)
index 0000000..401bd40
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>ESI Processing failed.</b></p>
+</blockquote>
+
+<p>The ESI processor returned:</p>
+<blockquote>
+<pre>%Z</pre>
+</blockquote>
+
+<p>This means that the surrogate was not able to process the ESI template. Please report this error to the webmaster.</p>
+
+<p>Your webmaster is <a href="mailto:%w">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FORWARDING_DENIED b/errors/templates/ERR_FORWARDING_DENIED
new file mode 100644 (file)
index 0000000..2ed04b3
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Forwarding Denied.</b></p>
+</blockquote>
+
+<p>This cache will not forward your request because it is trying to enforce a sibling relationship.  Perhaps the client at %i is a cache which has been misconfigured.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_DISABLED b/errors/templates/ERR_FTP_DISABLED
new file mode 100644 (file)
index 0000000..8dacb6c
--- /dev/null
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>FTP is Disabled</b></p>
+</blockquote>
+
+<p>This cache does not support FTP.</p>
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_FAILURE b/errors/templates/ERR_FTP_FAILURE
new file mode 100644 (file)
index 0000000..562002c
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>An FTP protocol error occurred while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_FORBIDDEN b/errors/templates/ERR_FTP_FORBIDDEN
new file mode 100644 (file)
index 0000000..33154d4
--- /dev/null
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>An FTP authentication failure occurred while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_NOT_FOUND b/errors/templates/ERR_FTP_NOT_FOUND
new file mode 100644 (file)
index 0000000..9048dfe
--- /dev/null
@@ -0,0 +1,30 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following URL could not be retrieved: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>This might be caused by an FTP URL with an absolute path (which does not comply with RFC 1738).  If this is the cause, then the file can be found at <a href="%B">%B</a>.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_PUT_CREATED b/errors/templates/ERR_FTP_PUT_CREATED
new file mode 100644 (file)
index 0000000..0fc4c11
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>FTP PUT Successful: File Created</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1 style="background-color:#00ff00; width:100%">Operation successful</h1>
+<h2>File created</h2>
+<hr>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_PUT_ERROR b/errors/templates/ERR_FTP_PUT_ERROR
new file mode 100644 (file)
index 0000000..ae016f2
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: FTP upload failed</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>FTP PUT/upload failed</h2>
+<hr>
+<p>While trying to PUT the following URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+</blockquote>
+
+<p>This means that the FTP server may not have permission or space to store the file. Check the path, permissions, diskspace and try again.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_PUT_MODIFIED b/errors/templates/ERR_FTP_PUT_MODIFIED
new file mode 100644 (file)
index 0000000..3a4e410
--- /dev/null
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>FTP PUT Successful: File updated</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1 style="background-color:#00ff00; width:100%">Operation successful</h1>
+<h2>File updated</h2>
+<hr>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_FTP_UNAVAILABLE b/errors/templates/ERR_FTP_UNAVAILABLE
new file mode 100644 (file)
index 0000000..fc1a54c
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The FTP server was too busy to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>Squid sent the following FTP command:</p>
+
+<blockquote>
+<pre>%f</pre>
+</blockquote>
+
+<p>The server responded with:</p>
+<blockquote>
+<pre>%F</pre>
+<pre>%g</pre>
+</blockquote>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_ICAP_FAILURE b/errors/templates/ERR_ICAP_FAILURE
new file mode 100644 (file)
index 0000000..259f1c7
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>ICAP protocol error.</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>This means that some aspect of the ICAP communication failed.</p>
+
+<p>Some possible problems are:</p>
+<ul>
+<li><p>The ICAP server is not reachable.</p></li>
+<li><p>An Illegal response was received from the ICAP server.</p></li>
+</ul>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_INVALID_REQ b/errors/templates/ERR_INVALID_REQ
new file mode 100644 (file)
index 0000000..70f700d
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p><b>Invalid Request</b> error was encountered while trying to process the request:</p>
+
+<blockquote>
+<pre>%R</pre>
+</blockquote>
+
+<p>Some possible problems are:</p>
+<ul>
+<li><p>Missing or unknown request method.</p></li>
+<li><p>Missing URL.</p></li>
+<li><p>Missing HTTP Identifier (HTTP/1.0).</p></li>
+<li><p>Request is too large.</p></li>
+<li><p>Content-Length missing for POST or PUT requests.</p></li>
+<li><p>Illegal character in hostname; underscores are not allowed.</p></li>
+</ul>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_INVALID_RESP b/errors/templates/ERR_INVALID_RESP
new file mode 100644 (file)
index 0000000..ffa8f66
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p><b>Invalid Response</b> error was encountered while trying to process the request:</p>
+
+<blockquote>
+<pre>%R</pre>
+</blockquote>
+
+<p>The HTTP Response message received from the contacted server could not be understood or was otherwise malformed. Please contact the site operator.</p>
+
+<p>Your cache administrator may be able to provide you with more details about the exact nature of the problem if needed.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_INVALID_URL b/errors/templates/ERR_INVALID_URL
new file mode 100644 (file)
index 0000000..27a986b
--- /dev/null
@@ -0,0 +1,31 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Invalid URL</b></p>
+</blockquote>
+
+<p>Some aspect of the requested URL is incorrect.</p>
+
+<p>Some possible problems are:</p>
+<ul>
+<li><p>Missing or incorrect access protocol (should be <q>http://</q> or similar)</p></li>
+<li><p>Missing hostname</p></li>
+<li><p>Illegal double-escape in the URL-Path</p></li>
+<li><p>Illegal character in hostname; underscores are not allowed.</p></li>
+</ul>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_LIFETIME_EXP b/errors/templates/ERR_LIFETIME_EXP
new file mode 100644 (file)
index 0000000..7f49de5
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Connection Lifetime Expired</b></p>
+</blockquote>
+
+<p>Squid has terminated the request because it has exceeded the maximum connection lifetime.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_NO_RELAY b/errors/templates/ERR_NO_RELAY
new file mode 100644 (file)
index 0000000..399ee74
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>No Wais Relay</b></p>
+</blockquote>
+
+<p>There is no WAIS Relay host defined for this Cache!  Yell at the administrator.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_ONLY_IF_CACHED_MISS b/errors/templates/ERR_ONLY_IF_CACHED_MISS
new file mode 100644 (file)
index 0000000..7aac50c
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Valid document was not found in the cache and <q>only-if-cached</q> directive was specified.</b></p>
+</blockquote>
+
+<p>You have issued a request with a <q>only-if-cached</q> cache control directive. The document was not found in the cache, <em>or</em> it required revalidation prohibited by the <q>only-if-cached</q> directive.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_READ_ERROR b/errors/templates/ERR_READ_ERROR
new file mode 100644 (file)
index 0000000..a5fd0ca
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Read Error</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>An error condition occurred while reading data from the network.  Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_READ_TIMEOUT b/errors/templates/ERR_READ_TIMEOUT
new file mode 100644 (file)
index 0000000..3f36f83
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Read Timeout</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>A Timeout occurred while waiting to read data from the network.  The network or server may be down or congested.  Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_SECURE_CONNECT_FAIL b/errors/templates/ERR_SECURE_CONNECT_FAIL
new file mode 100644 (file)
index 0000000..eb33c93
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Failed to establish a secure connection to %I</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>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.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_SHUTTING_DOWN b/errors/templates/ERR_SHUTTING_DOWN
new file mode 100644 (file)
index 0000000..a14cdec
--- /dev/null
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p> The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<p>This cache is in the process of shutting down and can not service your request at this time.  Please retry your request again soon.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_SOCKET_FAILURE b/errors/templates/ERR_SOCKET_FAILURE
new file mode 100644 (file)
index 0000000..e4349df
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Socket Failure</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>Squid is unable to create a TCP socket, presumably due to excessive load. Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_TOO_BIG b/errors/templates/ERR_TOO_BIG
new file mode 100644 (file)
index 0000000..ed529d1
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>The request or reply is too large.</b></p>
+</blockquote>
+
+<p>If you are making a POST or PUT request, then the item you are trying to upload is too large.</p>
+<p>If you are making a GET request, then the item you are trying to download is too large.</p>
+<p>These limits have been established by the Internet Service Provider who operates this cache.  Please contact them directly if you feel this is an error.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_UNSUP_REQ b/errors/templates/ERR_UNSUP_REQ
new file mode 100644 (file)
index 0000000..584a63d
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Unsupported Request Method and Protocol</b></p>
+</blockquote>
+
+<p>Squid does not support all request methods for all access protocols. For example, you can not POST a Gopher request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_URN_RESOLVE b/errors/templates/ERR_URN_RESOLVE
new file mode 100644 (file)
index 0000000..4af5fe4
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URN not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>A URL for the requested URN could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URN: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Cannot Resolve URN</b></p>
+</blockquote>
+
+<p>Hey, don't expect too much from URNs on %T :)</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_WRITE_ERROR b/errors/templates/ERR_WRITE_ERROR
new file mode 100644 (file)
index 0000000..bb25895
--- /dev/null
@@ -0,0 +1,25 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Write Error</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>An error condition occurred while writing to the network.  Please retry your request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/ERR_ZERO_SIZE_OBJECT b/errors/templates/ERR_ZERO_SIZE_OBJECT
new file mode 100644 (file)
index 0000000..e86067b
--- /dev/null
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>Zero Sized Reply</b></p>
+</blockquote>
+
+<p>Squid did not receive any data for this request.</p>
+
+<p>Your cache administrator is <a href="mailto:%w%W">%w</a>.</p>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/templates/generic b/errors/templates/generic
new file mode 100644 (file)
index 0000000..26f3691
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<title>ERROR: The requested URL could not be retrieved</title>
+<style type="text/css"><!--BODY{background-color:#ffffff; font-family:verdana,sans-serif}--></style>
+</head><body>
+<h1>ERROR</h1>
+<h2>The requested URL could not be retrieved</h2>
+<hr>
+<p>The following error was encountered while trying to retrieve the URL: <a href="%U">%U</a></p>
+
+<blockquote>
+<p><b>@SHORT_DESCRIPTION@</b></p>
+</blockquote>
+
+<p>The system returned: <i>%E</i></p>
+
+<p>This means:</p>
+<blockquote>
+    <p>@LONG_DESCRIPTION@</p>
+</blockquote>
+
+<br>   
+<hr> 
+<div id="footer">Generated %T by %h (%s)</div>
+</body></html>
diff --git a/errors/uk.po b/errors/uk.po
new file mode 100644 (file)
index 0000000..c3045f6
--- /dev/null
@@ -0,0 +1,614 @@
+# Ukrainian translation for squid
+# Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008
+# This file is distributed under the same license as the squid package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: squid\n"
+"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
+"POT-Creation-Date: 2008-08-06 22:11+1300\n"
+"PO-Revision-Date: 2008-09-24 23:28+0000\n"
+"Last-Translator: FrenzY <frenzy.ivan@gmail.com>\n"
+"Language-Team: Ukrainian <uk@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2008-09-25 11:56+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#: templates/ERR_INVALID_REQ:4
+msgid ""
+"<b>Invalid Request</b> error was encountered while trying to process the "
+"request:"
+msgstr "<b>Хибний Запит</b> під час спроби запиту сталася помилка:"
+
+#: templates/ERR_INVALID_RESP:4
+msgid ""
+"<b>Invalid Response</b> error was encountered while trying to process the "
+"request:"
+msgstr "<b>Хибна Відповідь</b> під час спроби запиту сталася помилка:"
+
+#: templates/ERR_READ_TIMEOUT:7
+msgid ""
+"A Timeout occurred while waiting to read data from the network.  The network "
+"or server may be down or congested.  Please retry your request."
+msgstr ""
+"Час очікування при отриманні даних з мережі перевищено. Мережа чи сервер не "
+"працюють чи перенавантажені. Будь-ласка, спробуйте знову."
+
+#: templates/ERR_URN_RESOLVE:3
+msgid "A URL for the requested URN could not be retrieved"
+msgstr "URL для запитаного URN не може бути отримано"
+
+#: templates/ERR_ACCESS_DENIED:5
+msgid "Access Denied."
+msgstr "Доступ Заборонено."
+
+#: templates/ERR_ACCESS_DENIED:6
+msgid ""
+"Access control configuration prevents your request from being allowed at "
+"this time.  Please contact your service provider if you feel this is "
+"incorrect."
+msgstr ""
+
+#: templates/ERR_FTP_FORBIDDEN:4
+msgid ""
+"An FTP authentication failure occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"FTP аутентифікація, на етапі отримання URL, пройшла невдало: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_FTP_FAILURE:4
+msgid ""
+"An FTP protocol error occurred while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:10
+msgid "An Illegal response was received from the ICAP server."
+msgstr "Всі нелегальні запити були отримані від ICAP сервера."
+
+#: templates/ERR_READ_ERROR:7
+msgid ""
+"An error condition occurred while reading data from the network.  Please "
+"retry your request."
+msgstr ""
+"Під час отримання даних з мережі сталася помилка. Будь-ласка, спробуйте "
+"знову."
+
+#: templates/ERR_WRITE_ERROR:7
+msgid ""
+"An error condition occurred while writing to the network.  Please retry your "
+"request."
+msgstr ""
+
+#: templates/ERR_CACHE_ACCESS_DENIED:3 templates/ERR_CACHE_ACCESS_DENIED:5
+msgid "Cache Access Denied."
+msgstr "Доступ до Кешу Заборонено."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:3
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:5
+msgid "Cache Manager Access Denied."
+msgstr "Доступ до Менеджеру Кешу Заборонено"
+
+#: templates/ERR_URN_RESOLVE:5
+msgid "Cannot Resolve URN"
+msgstr "Неможливо отримати URN"
+
+#: templates/ERR_LIFETIME_EXP:5
+msgid "Connection Lifetime Expired"
+msgstr "Час життя з'єднання перевищено. R.I.P."
+
+#: templates/ERR_CONNECT_FAIL:5
+msgid "Connection to %I failed."
+msgstr "З'єднання з %I втрачене."
+
+#: templates/ERR_INVALID_REQ:10
+msgid "Content-Length missing for POST or PUT requests."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:2 templates/ERR_CACHE_ACCESS_DENIED:2
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:2 templates/ERR_CANNOT_FORWARD:2
+#: templates/ERR_CONNECT_FAIL:2 templates/ERR_DNS_FAIL:2 templates/ERR_ESI:2
+#: templates/ERR_FORWARDING_DENIED:2 templates/ERR_FTP_DISABLED:2
+#: templates/ERR_FTP_FAILURE:2 templates/ERR_FTP_FORBIDDEN:2
+#: templates/ERR_FTP_NOT_FOUND:2 templates/ERR_FTP_PUT_ERROR:2
+#: templates/ERR_FTP_UNAVAILABLE:2 templates/ERR_ICAP_FAILURE:2
+#: templates/ERR_INVALID_REQ:2 templates/ERR_INVALID_RESP:2
+#: templates/ERR_INVALID_URL:2 templates/ERR_LIFETIME_EXP:2
+#: templates/ERR_NO_RELAY:2 templates/ERR_ONLY_IF_CACHED_MISS:2
+#: templates/ERR_READ_ERROR:2 templates/ERR_READ_TIMEOUT:2
+#: templates/ERR_SECURE_CONNECT_FAIL:2 templates/ERR_SHUTTING_DOWN:2
+#: templates/ERR_SOCKET_FAILURE:2 templates/ERR_TOO_BIG:2
+#: templates/ERR_UNSUP_REQ:2 templates/ERR_URN_RESOLVE:2
+#: templates/ERR_WRITE_ERROR:2 templates/ERR_ZERO_SIZE_OBJECT:2
+msgid "ERROR"
+msgstr "ПОМИЛКА"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:1
+msgid "ERROR: Cache Access Denied"
+msgstr "ПОМИЛКА: Доступ до Кешу Заборонено"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:1
+msgid "ERROR: Cache Manager Access Denied"
+msgstr "Доступ до Менеджеру Кешу Заборонено"
+
+#: templates/ERR_FTP_PUT_ERROR:1
+msgid "ERROR: FTP upload failed"
+msgstr "ПОМИЛКА: FTP завантаження невдале"
+
+#: templates/ERR_ACCESS_DENIED:1 templates/ERR_CANNOT_FORWARD:1
+#: templates/ERR_CONNECT_FAIL:1 templates/ERR_DNS_FAIL:1 templates/ERR_ESI:1
+#: templates/ERR_FORWARDING_DENIED:1 templates/ERR_FTP_DISABLED:1
+#: templates/ERR_FTP_FAILURE:1 templates/ERR_FTP_FORBIDDEN:1
+#: templates/ERR_FTP_NOT_FOUND:1 templates/ERR_FTP_UNAVAILABLE:1
+#: templates/ERR_ICAP_FAILURE:1 templates/ERR_INVALID_REQ:1
+#: templates/ERR_INVALID_RESP:1 templates/ERR_INVALID_URL:1
+#: templates/ERR_LIFETIME_EXP:1 templates/ERR_NO_RELAY:1
+#: templates/ERR_ONLY_IF_CACHED_MISS:1 templates/ERR_READ_ERROR:1
+#: templates/ERR_READ_TIMEOUT:1 templates/ERR_SECURE_CONNECT_FAIL:1
+#: templates/ERR_SHUTTING_DOWN:1 templates/ERR_SOCKET_FAILURE:1
+#: templates/ERR_TOO_BIG:1 templates/ERR_UNSUP_REQ:1
+#: templates/ERR_WRITE_ERROR:1 templates/ERR_ZERO_SIZE_OBJECT:1
+msgid "ERROR: The requested URL could not be retrieved"
+msgstr "ПОМИЛКА: Запитаний URL не може бути отриманий"
+
+#: templates/ERR_URN_RESOLVE:1
+msgid "ERROR: The requested URN not be retrieved"
+msgstr "ПОМИЛКА: Запитаний URN не може бути отриманий"
+
+#: templates/ERR_ESI:5
+msgid "ESI Processing failed."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_CREATED:1
+msgid "FTP PUT Successful: File Created"
+msgstr "FTP PUT Вдалий: Файл Створено"
+
+#: templates/ERR_FTP_PUT_MODIFIED:1
+msgid "FTP PUT Successful: File updated"
+msgstr "FTP PUT Вдалий: Файл Оновлено"
+
+#: templates/ERR_FTP_PUT_ERROR:3
+msgid "FTP PUT/upload failed"
+msgstr "FTP PUT/заванатження зазанло краху"
+
+#: templates/ERR_FTP_DISABLED:5
+msgid "FTP is Disabled"
+msgstr "FTP відключено"
+
+#: templates/ERR_SECURE_CONNECT_FAIL:5
+msgid "Failed to establish a secure connection to %I"
+msgstr "Неможливо свторити безпечне з'єднання до %I"
+
+#: templates/ERR_FTP_PUT_CREATED:3
+msgid "File created"
+msgstr "Файл створено"
+
+#: templates/ERR_FTP_PUT_MODIFIED:3
+msgid "File updated"
+msgstr "Файл поновлено"
+
+#: templates/ERR_FORWARDING_DENIED:5
+msgid "Forwarding Denied."
+msgstr "Forwarding Заборонено."
+
+#: templates/ERR_ACCESS_DENIED:8 templates/ERR_CACHE_ACCESS_DENIED:8
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:8 templates/ERR_CANNOT_FORWARD:8
+#: templates/ERR_CONNECT_FAIL:9 templates/ERR_DNS_FAIL:9 templates/ERR_ESI:9
+#: templates/ERR_FORWARDING_DENIED:8 templates/ERR_FTP_DISABLED:8
+#: templates/ERR_FTP_FAILURE:8 templates/ERR_FTP_FORBIDDEN:8
+#: templates/ERR_FTP_NOT_FOUND:9 templates/ERR_FTP_PUT_CREATED:4
+#: templates/ERR_FTP_PUT_ERROR:9 templates/ERR_FTP_PUT_MODIFIED:4
+#: templates/ERR_FTP_UNAVAILABLE:8 templates/ERR_ICAP_FAILURE:11
+#: templates/ERR_INVALID_REQ:13 templates/ERR_INVALID_RESP:8
+#: templates/ERR_INVALID_URL:13 templates/ERR_LIFETIME_EXP:8
+#: templates/ERR_NO_RELAY:8 templates/ERR_ONLY_IF_CACHED_MISS:8
+#: templates/ERR_READ_ERROR:9 templates/ERR_READ_TIMEOUT:9
+#: templates/ERR_SECURE_CONNECT_FAIL:9 templates/ERR_SHUTTING_DOWN:7
+#: templates/ERR_SOCKET_FAILURE:9 templates/ERR_TOO_BIG:10
+#: templates/ERR_UNSUP_REQ:8 templates/ERR_URN_RESOLVE:8
+#: templates/ERR_WRITE_ERROR:9 templates/ERR_ZERO_SIZE_OBJECT:8
+msgid "Generated %T by %h (%s)"
+msgstr "Згенеровано %T за %h (%s)"
+
+#: templates/ERR_URN_RESOLVE:6
+msgid "Hey, don't expect too much from URNs on %T :)"
+msgstr "Ей, чувак, не очікуй забагато від URN'ів на %T :)"
+
+#: templates/ERR_ICAP_FAILURE:5
+msgid "ICAP protocol error."
+msgstr "Помилка протоколу ICAP."
+
+#: templates/ERR_TOO_BIG:7
+msgid ""
+"If you are making a GET request, then the item you are trying to download is "
+"too large."
+msgstr ""
+"Якщо ви створюєте GET запит, тоді інформація яку ви завантажуєте - завелика."
+
+#: templates/ERR_TOO_BIG:6
+msgid ""
+"If you are making a POST or PUT request, then the item you are trying to "
+"upload is too large."
+msgstr ""
+"Якщо ви створюєте POST чи PUT запит, тоді інформація яку ви завантажуєте - "
+"завелика."
+
+#: templates/ERR_INVALID_REQ:11 templates/ERR_INVALID_URL:11
+msgid "Illegal character in hostname; underscores are not allowed."
+msgstr "Заборонений символ в назві хосту; підчеркування недозволені."
+
+#: templates/ERR_INVALID_URL:10
+msgid "Illegal double-escape in the URL-Path"
+msgstr "Заборонений double-escape в URL-Path"
+
+#: templates/ERR_INVALID_URL:5
+msgid "Invalid URL"
+msgstr "Не чинна адреса URL"
+
+#: templates/ERR_INVALID_REQ:8
+msgid "Missing HTTP Identifier (HTTP/1.0)."
+msgstr "Відсутній HTTP Ідентифікатор (HTTP/1.0)."
+
+#: templates/ERR_INVALID_REQ:7
+msgid "Missing URL."
+msgstr "Відсутній URL."
+
+#: templates/ERR_INVALID_URL:9
+msgid "Missing hostname"
+msgstr "Відсутнє ім'я хотсу"
+
+#: templates/ERR_INVALID_URL:8
+msgid ""
+"Missing or incorrect access protocol (should be <q>http://</q> or similar)"
+msgstr ""
+"Відсутній або невірний протокол доступу (повинен бути <q>http://</q> або "
+"якась схожа фігня)"
+
+#: templates/ERR_INVALID_REQ:6
+msgid "Missing or unknown request method."
+msgstr "Відсутній або невідомий природі метод запиту."
+
+#: templates/ERR_NO_RELAY:5
+msgid "No Wais Relay"
+msgstr "No Wais Relay"
+
+#: templates/ERR_FTP_PUT_CREATED:2 templates/ERR_FTP_PUT_MODIFIED:2
+msgid "Operation successful"
+msgstr "Операція пройшла успішно"
+
+#: templates/ERR_CACHE_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or <a href=\"http://%h/cgi-"
+"bin/chpasswd.cgi\">change</a> your default password."
+msgstr ""
+"Будь-ласка, зв'яжіться з <a href=\"mailto:%w%W\">адміністратором кеш-"
+"серверу</a> якщо у вас виникли труднощі під час аутентифікації або <a "
+"href=\"http://%h/cgi-bin/chpasswd.cgi\">змініть</a> ваш пароль по-замовченні."
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:7
+msgid ""
+"Please contact the <a href=\"mailto:%w%W\">cache administrator</a> if you "
+"have difficulties authenticating yourself or, if you <em>are</em> the "
+"administrator, read Squid documentation on cache manager interface and check "
+"cache log for more detailed error messages."
+msgstr ""
+"Будь-ласка, зв'яжіться з <a href=\"mailto:%w%W\">адміністратором кеш-"
+"серверу</a> якщо у вас виникли труднощі під час аутентифікації або, якщо ви "
+"і <em>є</em> цей самий адміністратор, перегляньте документацію по Squid'у і "
+"перевірте кеш-лог для більш детальних повідомлень про помилки."
+
+#: templates/ERR_READ_ERROR:5
+msgid "Read Error"
+msgstr "Помилка Зчитування"
+
+#: templates/ERR_READ_TIMEOUT:5
+msgid "Read Timeout"
+msgstr "Таймаут при Зчитуванні"
+
+#: templates/ERR_INVALID_REQ:9
+msgid "Request is too large."
+msgstr "Запит завеликий."
+
+#: templates/ERR_SOCKET_FAILURE:5
+msgid "Socket Failure"
+msgstr "Помилка Сокету"
+
+#: templates/ERR_INVALID_URL:6
+msgid "Some aspect of the requested URL is incorrect."
+msgstr "Деякі аспекти запитаного URL не правильні."
+
+#: templates/ERR_ICAP_FAILURE:8 templates/ERR_INVALID_REQ:5
+#: templates/ERR_INVALID_URL:7
+msgid "Some possible problems are:"
+msgstr "Деякі можливі проблеми це:"
+
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache manager "
+"until you have authenticated yourself."
+msgstr ""
+"Вибачайте, вам зараз недозволено запитувати %U з цього менеджеру кешу. "
+"Спочатку пройдіть процедуру аутентифікації."
+
+#: templates/ERR_CACHE_ACCESS_DENIED:6
+msgid ""
+"Sorry, you are not currently allowed to request %U from this cache until you "
+"have authenticated yourself."
+msgstr ""
+"Вибачайте, вам зараз недозволено запитувати %U з цього кешу. Спочатку "
+"пройдіть процедуру аутентифікації."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:6
+msgid "Squid did not receive any data for this request."
+msgstr "Squid чомусь не отримав жодних даниз з цього запиту."
+
+#: templates/ERR_UNSUP_REQ:6
+msgid ""
+"Squid does not support all request methods for all access protocols. For "
+"example, you can not POST a Gopher request."
+msgstr ""
+"Squid не підтримує всі методи запитів для всіх наявних протоколів. Як "
+"приклад, ви не можете використати метод POST в запиті протоколу Gopher."
+
+#: templates/ERR_LIFETIME_EXP:6
+msgid ""
+"Squid has terminated the request because it has exceeded the maximum "
+"connection lifetime."
+msgstr ""
+"Squid знищив запит бо він вибрав максимальний ліміт часу з'єднання з мережею."
+
+#: templates/ERR_SOCKET_FAILURE:7
+msgid ""
+"Squid is unable to create a TCP socket, presumably due to excessive load. "
+"Please retry your request."
+msgstr ""
+"Squid не вдається створити TCP сокет, скоріш за все через надмірне "
+"навантаження. Будь-ласка, повторіть запит."
+
+#: templates/ERR_FTP_FAILURE:5 templates/ERR_FTP_FORBIDDEN:5
+#: templates/ERR_FTP_NOT_FOUND:5 templates/ERR_FTP_PUT_ERROR:5
+#: templates/ERR_FTP_UNAVAILABLE:5
+msgid "Squid sent the following FTP command:"
+msgstr "Squid надіслав наступну FTP команду:"
+
+#: templates/ERR_ESI:6
+msgid "The ESI processor returned:"
+msgstr "ESI процесор повернув наступне:"
+
+#: templates/ERR_FTP_UNAVAILABLE:4
+msgid ""
+"The FTP server was too busy to retrieve the URL: <a href=\"%U\">%U</a>"
+msgstr "FTP сервер занадто зайнятий, щоб отримати URL: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_INVALID_RESP:5
+msgid ""
+"The HTTP Response message received from the contacted server could not be "
+"understood or was otherwise malformed. Please contact the site operator."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:9
+msgid "The ICAP server is not reachable."
+msgstr "ICAP сервер чомусь недоступний."
+
+#: templates/ERR_DNS_FAIL:6
+msgid "The dnsserver returned:"
+msgstr "DNS сервер повернув наступне:"
+
+#: templates/ERR_FTP_NOT_FOUND:4
+msgid "The following URL could not be retrieved: <a href=\"%U\">%U</a>"
+msgstr "Поточний URL не може бути отриманий: <a href=\"%U\">%U</a>"
+
+#: templates/ERR_ACCESS_DENIED:4 templates/ERR_CACHE_ACCESS_DENIED:4
+#: templates/ERR_CACHE_MGR_ACCESS_DENIED:4 templates/ERR_CANNOT_FORWARD:4
+#: templates/ERR_CONNECT_FAIL:4 templates/ERR_DNS_FAIL:4 templates/ERR_ESI:4
+#: templates/ERR_FORWARDING_DENIED:4 templates/ERR_FTP_DISABLED:4
+#: templates/ERR_ICAP_FAILURE:4 templates/ERR_INVALID_URL:4
+#: templates/ERR_LIFETIME_EXP:4 templates/ERR_NO_RELAY:4
+#: templates/ERR_ONLY_IF_CACHED_MISS:4 templates/ERR_READ_ERROR:4
+#: templates/ERR_READ_TIMEOUT:4 templates/ERR_SECURE_CONNECT_FAIL:4
+#: templates/ERR_SHUTTING_DOWN:4 templates/ERR_SOCKET_FAILURE:4
+#: templates/ERR_TOO_BIG:4 templates/ERR_UNSUP_REQ:4
+#: templates/ERR_WRITE_ERROR:4 templates/ERR_ZERO_SIZE_OBJECT:4
+msgid ""
+"The following error was encountered while trying to retrieve the URL: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Наступна помилка була отримана під час спроби отримання URL: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_URN_RESOLVE:4
+msgid ""
+"The following error was encountered while trying to retrieve the URN: <a "
+"href=\"%U\">%U</a>"
+msgstr ""
+"Наступна помилка була отримана під час спроби отримання URN: <a "
+"href=\"%U\">%U</a>"
+
+#: templates/ERR_CONNECT_FAIL:7
+msgid ""
+"The remote host or network may be down.  Please try the request again."
+msgstr ""
+"Віддалений сервер чи мережа \"не дихає\". Будь-ласка, спробуйте запит знову."
+
+#: templates/ERR_TOO_BIG:5
+msgid "The request or reply is too large."
+msgstr "Відповідь на запит завелика."
+
+#: templates/ERR_ACCESS_DENIED:3 templates/ERR_CANNOT_FORWARD:3
+#: templates/ERR_CONNECT_FAIL:3 templates/ERR_DNS_FAIL:3 templates/ERR_ESI:3
+#: templates/ERR_FORWARDING_DENIED:3 templates/ERR_FTP_DISABLED:3
+#: templates/ERR_FTP_FAILURE:3 templates/ERR_FTP_FORBIDDEN:3
+#: templates/ERR_FTP_NOT_FOUND:3 templates/ERR_FTP_UNAVAILABLE:3
+#: templates/ERR_ICAP_FAILURE:3 templates/ERR_INVALID_REQ:3
+#: templates/ERR_INVALID_RESP:3 templates/ERR_INVALID_URL:3
+#: templates/ERR_LIFETIME_EXP:3 templates/ERR_NO_RELAY:3
+#: templates/ERR_ONLY_IF_CACHED_MISS:3 templates/ERR_READ_ERROR:3
+#: templates/ERR_READ_TIMEOUT:3 templates/ERR_SECURE_CONNECT_FAIL:3
+#: templates/ERR_SHUTTING_DOWN:3 templates/ERR_SOCKET_FAILURE:3
+#: templates/ERR_TOO_BIG:3 templates/ERR_UNSUP_REQ:3
+#: templates/ERR_WRITE_ERROR:3 templates/ERR_ZERO_SIZE_OBJECT:3
+msgid "The requested URL could not be retrieved"
+msgstr "Запитаний URL не може бути отриманий."
+
+#: templates/ERR_FTP_FAILURE:6 templates/ERR_FTP_FORBIDDEN:6
+#: templates/ERR_FTP_NOT_FOUND:6 templates/ERR_FTP_PUT_ERROR:6
+#: templates/ERR_FTP_UNAVAILABLE:6
+msgid "The server responded with:"
+msgstr "Відповідь сервера була наступною:"
+
+#: templates/ERR_CONNECT_FAIL:6 templates/ERR_ICAP_FAILURE:6
+#: templates/ERR_READ_ERROR:6 templates/ERR_READ_TIMEOUT:6
+#: templates/ERR_SECURE_CONNECT_FAIL:6 templates/ERR_SOCKET_FAILURE:6
+#: templates/ERR_WRITE_ERROR:6
+msgid "The system returned: <i>%E</i>"
+msgstr "Сервер повернув наступне: <i>%E</i>"
+
+#: templates/ERR_NO_RELAY:6
+msgid ""
+"There is no WAIS Relay host defined for this Cache!  Yell at the "
+"administrator."
+msgstr ""
+"Не існує WAIS Relay сервера для цього Кешу! Кличте тунеядця адміністратора."
+
+#: templates/ERR_TOO_BIG:8
+msgid ""
+"These limits have been established by the Internet Service Provider who "
+"operates this cache.  Please contact them directly if you feel this is an "
+"error."
+msgstr ""
+
+#: templates/ERR_FTP_DISABLED:6
+msgid "This cache does not support FTP."
+msgstr "Цей кеш не підтримує FTP."
+
+#: templates/ERR_SHUTTING_DOWN:5
+msgid ""
+"This cache is in the process of shutting down and can not service your "
+"request at this time.  Please retry your request again soon."
+msgstr ""
+
+#: templates/ERR_FORWARDING_DENIED:6
+msgid ""
+"This cache will not forward your request because it is trying to enforce a "
+"sibling relationship.  Perhaps the client at %i is a cache which has been "
+"misconfigured."
+msgstr ""
+
+#: templates/ERR_ICAP_FAILURE:7
+msgid "This means that some aspect of the ICAP communication failed."
+msgstr "Це означає, що деякі частини ICAP комунікації \"впали\"."
+
+#: templates/ERR_FTP_PUT_ERROR:7
+msgid ""
+"This means that the FTP server may not have permission or space to store the "
+"file. Check the path, permissions, diskspace and try again."
+msgstr ""
+"Це означає, що бісовий FTP сервер не має права чи відсутнє вільне місце, щоб "
+"зберегти файл. Перевірте шлях, права, кількість вільного місця і спробуйте "
+"щнову."
+
+#: templates/ERR_DNS_FAIL:7
+msgid ""
+"This means that the cache was not able to resolve the hostname presented in "
+"the URL. Check if the address is correct."
+msgstr ""
+"Це означає, що кеш не зміг з'єднатися з сервером, що вказаний в URL. "
+"Перевірте правильність адреси."
+
+#: templates/ERR_ESI:7
+msgid ""
+"This means that the surrogate was not able to process the ESI template. "
+"Please report this error to the webmaster."
+msgstr ""
+
+#: templates/ERR_FTP_NOT_FOUND:7
+msgid ""
+"This might be caused by an FTP URL with an absolute path (which does not "
+"comply with RFC 1738).  If this is the cause, then the file can be found at "
+"<a href=\"%B\">%B</a>."
+msgstr ""
+
+#: templates/ERR_SECURE_CONNECT_FAIL:7
+msgid ""
+"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."
+msgstr ""
+
+#: templates/ERR_CANNOT_FORWARD:6
+msgid ""
+"This request could not be forwarded to the origin server or to any parent "
+"caches.  The most likely cause for this error is that the cache "
+"administrator does not allow this cache to make direct connections to origin "
+"servers, and all configured parent caches are currently unreachable."
+msgstr ""
+
+#: templates/ERR_DNS_FAIL:5
+msgid "Unable to determine IP address from host name <q>%H</q>"
+msgstr "Неможливо визначити IP адресу з ім'я сервера  <q>%H</q>"
+
+#: templates/ERR_CANNOT_FORWARD:5
+msgid "Unable to forward this request at this time."
+msgstr ""
+
+#: templates/ERR_UNSUP_REQ:5
+msgid "Unsupported Request Method and Protocol"
+msgstr ""
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:5
+msgid ""
+"Valid document was not found in the cache and <q>only-if-cached</q> "
+"directive was specified."
+msgstr ""
+
+#: templates/ERR_FTP_PUT_ERROR:4
+msgid "While trying to PUT the following URL: <a href=\"%U\">%U</a>"
+msgstr ""
+
+#: templates/ERR_WRITE_ERROR:5
+msgid "Write Error"
+msgstr "Помилка Запису"
+
+#: templates/ERR_ONLY_IF_CACHED_MISS:6
+msgid ""
+"You have issued a request with a <q>only-if-cached</q> cache control "
+"directive. The document was not found in the cache, <em>or</em> it required "
+"revalidation prohibited by the <q>only-if-cached</q> directive."
+msgstr ""
+
+#: templates/ERR_ACCESS_DENIED:7 templates/ERR_CANNOT_FORWARD:7
+#: templates/ERR_CONNECT_FAIL:8 templates/ERR_DNS_FAIL:8
+#: templates/ERR_FORWARDING_DENIED:7 templates/ERR_FTP_DISABLED:7
+#: templates/ERR_FTP_FAILURE:7 templates/ERR_FTP_FORBIDDEN:7
+#: templates/ERR_FTP_NOT_FOUND:8 templates/ERR_FTP_PUT_ERROR:8
+#: templates/ERR_FTP_UNAVAILABLE:7 templates/ERR_INVALID_REQ:12
+#: templates/ERR_INVALID_RESP:7 templates/ERR_INVALID_URL:12
+#: templates/ERR_LIFETIME_EXP:7 templates/ERR_NO_RELAY:7
+#: templates/ERR_ONLY_IF_CACHED_MISS:7 templates/ERR_READ_ERROR:8
+#: templates/ERR_READ_TIMEOUT:8 templates/ERR_SECURE_CONNECT_FAIL:8
+#: templates/ERR_SHUTTING_DOWN:6 templates/ERR_SOCKET_FAILURE:8
+#: templates/ERR_TOO_BIG:9 templates/ERR_UNSUP_REQ:7
+#: templates/ERR_URN_RESOLVE:7 templates/ERR_WRITE_ERROR:8
+#: templates/ERR_ZERO_SIZE_OBJECT:7
+msgid "Your cache administrator is <a href=\"mailto:%w%W\">%w</a>."
+msgstr "Ваш адміністратор кешу цей чувак: <a href=\"mailto:%w%W\">%w</a>."
+
+#: templates/ERR_INVALID_RESP:6
+msgid ""
+"Your cache administrator may be able to provide you with more details about "
+"the exact nature of the problem if needed."
+msgstr ""
+
+#: templates/ERR_ESI:8
+msgid "Your webmaster is <a href=\"mailto:%w\">%w</a>."
+msgstr "Ваш вебмастер - <a href=\"mailto:%w\">%w</a>."
+
+#: templates/ERR_ZERO_SIZE_OBJECT:5
+msgid "Zero Sized Reply"
+msgstr "Нульова по Розміру Відповідь (Zero Sized Reply)"
diff --git a/errors/update-pot.sh b/errors/update-pot.sh
new file mode 100755 (executable)
index 0000000..f26dfe5
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh
+#
+# Update the core dictionary file from the basic templates
+# Useful if any template has altered.
+#
+
+# Make sure any existing temp stuff is gone from previous updates...
+rm -r -f ./pot
+rm -f dictionary.pot.new
+rm dictionary.pot
+
+# make a temp directory for all our workings...
+mkdir ./pot
+
+# Generate per-page disctionaries ...
+for f in `ls -1 ./templates/`; do
+       if test "${f}" != "generic" ; then
+               html2po -i ./templates/${f} -P --duplicates=merge -o ./pot/${f}.pot
+       fi
+done
+
+# merge and sort the per-page dictionaries into a single master
+msgcat ./pot/*.pot -s -o dictionary.pot.new &&
+       (
+       cat dictionary.pot.new | 
+       sed s/PACKAGE\ VERSION/squid\ 3\.0/ |
+       sed s/LANGUAGE\ \<LL\@li\.org\>/Squid\ Developers\ \<squid-dev\@squid-cache\.org\>/
+       ) >dictionary.pot
+
+## Update all existing dictionaries with the new content ...
+for f in `ls -1 ./*.po` ; do
+       echo -n "Update: ${f} ... "
+       msgmerge --verbose -s -o ${f}.new ${f} dictionary.pot
+       chown --reference=${f} ${f}.new
+       mv ${f}.new ${f}
+done
+
+# cleanup.
+rm -r -f ./pot
+rm -f dictionary.pot.new
index 5823a49e1f93fd9261a7351255674ee9b5628b38..d30af411381e4091a78ba12be514b094971acf59 100644 (file)
@@ -10,6 +10,9 @@
  * authenticating function.
  */
 
+/* Squid provides a number of portability overrides */
+#include "config.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
index c92520fdd8afac2b611890319b3c9fc736d99fbf..66e9b6c3e91e046190380cdead6d6dbad63bb567 100644 (file)
@@ -296,14 +296,12 @@ RFCNB_Hangup(struct RFCNB_Con *con_Handle)
 void
 RFCNB_Get_Error(char *buffer, int buf_len)
 {
-
     if (RFCNB_saved_errno <= 0) {
-       sprintf(buffer, "%s", RFCNB_Error_Strings[RFCNB_errno]);
+       snprintf(buffer, (buf_len-1) ,"%s", RFCNB_Error_Strings[RFCNB_errno]);
     } else {
-       sprintf(buffer, "%s\n\terrno:%s", RFCNB_Error_Strings[RFCNB_errno],
+       snprintf(buffer, (buf_len-1), "%s\n\terrno:%s", RFCNB_Error_Strings[RFCNB_errno],
            strerror(RFCNB_saved_errno));
     }
-
 }
 
 /* Pick up the last error response and returns as a code                 */
@@ -311,9 +309,7 @@ RFCNB_Get_Error(char *buffer, int buf_len)
 int
 RFCNB_Get_Last_Error(void)
 {
-
     return (RFCNB_errno);
-
 }
 
 /* Pick up saved errno as well */
old mode 100755 (executable)
new mode 100644 (file)
index fe5fa14..fc5d167
@@ -129,6 +129,15 @@ static int retries = 30;
 char *progname = "squid_rad_auth";
 int debug_flag = 0;
 
+#ifdef _SQUID_MSWIN_
+void
+Win32SockCleanup(void)
+{
+    WSACleanup();
+    return;
+}
+#endif /* ifdef _SQUID_MSWIN_ */
+
 /*
  *    Diff two timeval, b - a
  */
@@ -183,12 +192,10 @@ result_recv(u_int32_t host, u_short udp_port, char *buffer, int length)
            totallen, length);
        return -1;
     }
-
     if (auth->id != request_id) {
        /* Duplicate response of an earlier query, ignore */
        return -1;
     }
-
     /* Verify the reply digest */
     memcpy(reply_digest, auth->vector, AUTH_VECTOR_LEN);
     memcpy(auth->vector, vector, AUTH_VECTOR_LEN);
@@ -200,7 +207,6 @@ result_recv(u_int32_t host, u_short udp_port, char *buffer, int length)
        fprintf(stderr, "Warning: Received invalid reply digest from server\n");
        return -1;
     }
-
     if (auth->code != PW_AUTHENTICATION_ACK)
        return 1;
 
@@ -251,9 +257,9 @@ rad_auth_config(const char *cfname)
            crt = sscanf(line, "secret %s", secretkey);
        if (!memcmp(line, "identifier", 10))
            sscanf(line, "identifier %s", identifier);
-       if (!memcmp(line, "service", 7))
+       if (!memcmp(line, "service", 7))
            sscanf(line, "service %s", svc_name);
-       if (!memcmp(line, "port", 4))
+       if (!memcmp(line, "port", 4))
            sscanf(line, "port %s", svc_name);
     }
     if (srv && crt)
@@ -347,7 +353,7 @@ authenticate(int sockfd, const char *username, const char *passwd)
     memcpy(cbc, auth->vector, AUTH_VECTOR_LEN);
     for (j = 0; j < length; j += AUTH_VECTOR_LEN) {
        /* Calculate the MD5 Digest */
-       strcpy((char *)md5buf, secretkey);
+       strcpy((char *) md5buf, secretkey);
        memcpy(md5buf + secretlen, cbc, AUTH_VECTOR_LEN);
        md5_calc(cbc, md5buf, secretlen + AUTH_VECTOR_LEN);
 
@@ -400,7 +406,7 @@ authenticate(int sockfd, const char *username, const char *passwd)
      */
     auth->length = htons(total_length);
 
-    while(retry--) {
+    while (retry--) {
        int time_spent;
        struct timeval sent;
        /*
@@ -433,7 +439,7 @@ authenticate(int sockfd, const char *username, const char *passwd)
            if (rc == 0)
                return 1;
            if (rc == 1)
-               return 0;
+               return 0;
        }
     }
 
@@ -459,7 +465,7 @@ main(int argc, char **argv)
     int c;
 
     while ((c = getopt(argc, argv, "h:p:f:w:i:t:")) != -1) {
-       switch(c) {
+       switch (c) {
        case 'f':
            cfname = optarg;
            break;
@@ -490,21 +496,19 @@ main(int argc, char **argv)
            exit(1);
        }
     }
-
     if (!*server) {
        fprintf(stderr, "%s: Server not specified\n", argv[0]);
        exit(1);
     }
-
     if (!*secretkey) {
        fprintf(stderr, "%s: Shared secret not specified\n", argv[0]);
        exit(1);
     }
-
 #ifdef _SQUID_MSWIN_
     {
        WSADATA wsaData;
        WSAStartup(2, &wsaData);
+       atexit(Win32SockCleanup);
     }
 #endif
     /*
index 938053fdfbbe46da5a8ed3470439d52649b173c0..26e8d574f0c91f23cb47a0a462b269640f1ed55e 100644 (file)
@@ -404,7 +404,7 @@ main(int argc, char **argv)
        fprintf(stderr, "\n" PROGRAM_NAME " version " PROGRAM_VERSION "\n\n");
        fprintf(stderr, "Usage: " PROGRAM_NAME " -b basedn -f filter [options] ldap_server_name\n\n");
        fprintf(stderr, "\t-b basedn (REQUIRED)\tbase dn under where to search for groups\n");
-       fprintf(stderr, "\t-f filter (REQUIRED)\tgroup search filter pattern. %%v = user,\n\t\t\t\t%%a = group\n");
+       fprintf(stderr, "\t-f filter (REQUIRED)\tgroup search filter pattern. %%u = user,\n\t\t\t\t%%v = group\n");
        fprintf(stderr, "\t-B basedn (REQUIRED)\tbase dn under where to search for users\n");
        fprintf(stderr, "\t-F filter (REQUIRED)\tuser search filter pattern. %%s = login\n");
        fprintf(stderr, "\t-s base|one|sub\t\tsearch scope\n");
index 55ae739fbe42c939240b83a3c30934ebbe538b8e..aa0616759a99f861e6ff6ac6b2abe7102d68ff9e 100755 (executable)
@@ -1,8 +1,12 @@
 #!/bin/sh
-if [ -f /usr/include/w32api/windows.h ]; then
-       exit 0
+if [ -f /usr/include/w32api/dsrole.h ]; then
+  if grep -q DsRoleGetPrimaryDomainInformation /usr/include/w32api/dsrole.h; then
+         exit 0
+       fi
 fi
-if [ -f /usr/include/windows.h ]; then
-       exit 0
+if [ -f /usr/include/dsrole.h ]; then
+  if grep -q DsRoleGetPrimaryDomainInformation /usr/include/dsrole.h; then
+         exit 0
+  fi
 fi
 exit 1
old mode 100755 (executable)
new mode 100644 (file)
index a10bc25c92529393fa638807157d09769fd103d2..6163e1201a9c34c9b38ff181d73c1eb4933915e7 100644 (file)
-/* -----------------------------------------------------------------------------\r
- * spnegohelp.c defines RFC 2478 SPNEGO GSS-API mechanism APIs.\r
- *\r
- * Author: Frank Balluffi\r
- *\r
- * Copyright (C) 2002-2003 All rights reserved.\r
- *\r
- *   This program is free software; you can redistribute it and/or modify\r
- *   it under the terms of the GNU General Public License as published by\r
- *   the Free Software Foundation; either version 2 of the License, or\r
- *   (at your option) any later version.\r
- *\r
- *   This program is distributed in the hope that it will be useful,\r
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
- *   GNU General Public License for more details.\r
- *\r
- *   You should have received a copy of the GNU General Public License\r
- *   along with this program; if not, write to the Free Software\r
- *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.\r
- *\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-#include "spnegohelp.h"\r
-#include "spnego.h"\r
-\r
-#include <stdlib.h>\r
-\r
-int makeNegTokenTarg (const unsigned char *  kerberosToken,\r
-                      size_t                 kerberosTokenLength,\r
-                      const unsigned char ** negTokenTarg,\r
-                      size_t *               negTokenTargLength)\r
-{\r
-    SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;\r
-    int                 rc1          = 1;\r
-    int                 rc2          = SPNEGO_E_SUCCESS;\r
-\r
-    /* Check arguments. */\r
-\r
-    if (!kerberosToken ||\r
-        !negTokenTarg  ||\r
-        !negTokenTargLength)\r
-        return 10;\r
-\r
-    /* Does IIS reply with 1.2.840.48018.1.2.2 or 1.2.840.113554.1.2.2? */\r
-\r
-    /* Does IIS always reply with accept_completed? */\r
-\r
-    /* IIS does not include a MIC. */\r
-\r
-    rc2 = spnegoCreateNegTokenTarg (spnego_mech_oid_Kerberos_V5_Legacy,\r
-                                    spnego_negresult_success,\r
-                                    (unsigned char *) kerberosToken,\r
-                                    kerberosTokenLength,\r
-                                    NULL,\r
-                                    0,\r
-                                    &hSpnegoToken);\r
-\r
-    if (rc2 != SPNEGO_E_SUCCESS)\r
-    {\r
-        rc1 = abs(rc2)+100;\r
-        goto cleanup;\r
-    }\r
-\r
-    /* Get NegTokenTarg length. */\r
-\r
-    rc2 = spnegoTokenGetBinary (hSpnegoToken,\r
-                                NULL,\r
-                                (unsigned long*) negTokenTargLength);\r
-\r
-    if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)\r
-    {\r
-        rc1 = abs(rc2)+200;\r
-        goto cleanup;\r
-    }\r
-\r
-    *negTokenTarg = malloc (*negTokenTargLength);\r
-\r
-    if (!*negTokenTarg)\r
-    {\r
-        rc1 = abs(rc2)+300;\r
-        goto cleanup;\r
-    }\r
-\r
-    /* Get NegTokenTarg data. */\r
-\r
-    rc2 = spnegoTokenGetBinary (hSpnegoToken,\r
-                              (unsigned char *) *negTokenTarg,\r
-                              (unsigned long*) negTokenTargLength);\r
-\r
-\r
-    if (rc2 != SPNEGO_E_SUCCESS)\r
-    {\r
-        rc1 = abs(rc2)+400;\r
-        goto error;\r
-    }\r
-\r
-    rc1 = 0;\r
-\r
-    goto cleanup;\r
-\r
-error:\r
-\r
-    if (*negTokenTarg)\r
-    {\r
-        free ((unsigned char *) *negTokenTarg);\r
-        *negTokenTarg = NULL;\r
-        *negTokenTargLength = 0;\r
-    }\r
-\r
-cleanup:\r
-\r
-    if (hSpnegoToken)\r
-        spnegoFreeData (hSpnegoToken);\r
-\r
-    LOG(("makeNegTokenTarg returned %d\n",rc1));\r
-    return rc1;\r
-}\r
-\r
-int parseNegTokenInit (const unsigned char *  negTokenInit,\r
-                       size_t                 negTokenInitLength,\r
-                       const unsigned char ** kerberosToken,\r
-                       size_t *               kerberosTokenLength)\r
-{\r
-    SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;\r
-    int                 pindex       = -1;\r
-    int                 rc1          = 1;\r
-    int                 rc2          = SPNEGO_E_SUCCESS;\r
-    unsigned char       reqFlags     = 0;\r
-    int                 tokenType    = 0;\r
-\r
-    /* Check arguments. */\r
-\r
-    if (!negTokenInit  ||\r
-        !kerberosToken ||\r
-        !kerberosTokenLength)\r
-        return 10;\r
-\r
-    /* Decode SPNEGO token. */\r
-\r
-    rc2 = spnegoInitFromBinary ((unsigned char *) negTokenInit,\r
-                                negTokenInitLength,\r
-                                &hSpnegoToken);\r
-\r
-    if (rc2 != SPNEGO_E_SUCCESS)\r
-    {\r
-        rc1 = abs(rc2)+100;\r
-        goto cleanup;\r
-    }\r
-\r
-    /* Check for negTokenInit choice. */\r
-\r
-    rc2 = spnegoGetTokenType (hSpnegoToken,\r
-                              &tokenType);\r
-\r
-    if (rc2 != SPNEGO_E_SUCCESS)\r
-    {\r
-        rc1 = abs(rc2)+200;\r
-        goto cleanup;\r
-    }\r
-\r
-    if (tokenType != SPNEGO_TOKEN_INIT)\r
-    {\r
-        rc1 = abs(rc2)+300;\r
-        goto cleanup;\r
-    }\r
-\r
-   /*\r
-    Check that first mechType is 1.2.840.113554.1.2.2 or 1.2.840.48018.1.2.2.\r
-    */\r
-\r
-   /*\r
-    IE seems to reply with 1.2.840.48018.1.2.2 and then 1.2.840.113554.1.2.2.\r
-    */\r
-\r
-    rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,\r
-                                     spnego_mech_oid_Kerberos_V5_Legacy,\r
-                                     &pindex);\r
-\r
-    if (rc2 != SPNEGO_E_SUCCESS ||\r
-        pindex != 0)\r
-    {\r
-        rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,\r
-                                         spnego_mech_oid_Kerberos_V5,\r
-                                         &pindex);\r
-\r
-        if (rc2 != SPNEGO_E_SUCCESS ||\r
-            pindex != 0)\r
-        {\r
-            rc1 = abs(rc2)+400;\r
-            goto cleanup;\r
-        }\r
-    }\r
-\r
-    /* Check for no reqFlags. */\r
-\r
-    /* Does IE ever send reqFlags? */\r
-\r
-    rc2 = spnegoGetContextFlags (hSpnegoToken,\r
-                                 &reqFlags);\r
-\r
-    if (rc2 == SPNEGO_E_SUCCESS)\r
-    {\r
-        rc1 = abs(rc2)+500;\r
-        goto cleanup;\r
-    }\r
-\r
-    /* Get mechanism token length. */\r
-\r
-    rc2 = spnegoGetMechToken (hSpnegoToken,\r
-                              NULL,\r
-                              (unsigned long*) kerberosTokenLength);\r
-\r
-    if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)\r
-    {\r
-        rc1 = abs(rc2)+600;\r
-        goto cleanup;\r
-    }\r
-\r
-    *kerberosToken = malloc (*kerberosTokenLength);\r
-\r
-    if (!*kerberosToken)\r
-    {\r
-        rc1 = abs(rc2)+700;\r
-        goto cleanup;\r
-    }\r
-\r
-    /* Get mechanism token data. */\r
-\r
-    rc2 = spnegoGetMechToken (hSpnegoToken,\r
-                              (unsigned char *) *kerberosToken,\r
-                              (unsigned long*) kerberosTokenLength);\r
-\r
-    if (rc2 != SPNEGO_E_SUCCESS)\r
-    {\r
-        rc1 = abs(rc2)+800;\r
-        goto error;\r
-    }\r
-\r
-    /* According to Microsoft, IE does not send a MIC. */\r
-\r
-    rc1 = 0;\r
-\r
-    goto cleanup;\r
-\r
-error:\r
-\r
-    if (*kerberosToken)\r
-    {\r
-        free ((unsigned char *) *kerberosToken);\r
-        *kerberosToken = NULL;\r
-        *kerberosTokenLength = 0;\r
-    }\r
-\r
-cleanup:\r
-\r
-    if (hSpnegoToken)\r
-        spnegoFreeData (hSpnegoToken);\r
-\r
-    LOG(("parseNegTokenInit returned %d\n",rc1));\r
-    return rc1;\r
-}\r
+/* -----------------------------------------------------------------------------
+ * spnegohelp.c defines RFC 2478 SPNEGO GSS-API mechanism APIs.
+ *
+ * Author: Frank Balluffi
+ *
+ * Copyright (C) 2002-2003 All rights reserved.
+ *
+ *   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-1307, USA.
+ *
+ * -----------------------------------------------------------------------------
+ */
+
+#include "spnegohelp.h"
+#include "spnego.h"
+
+#include <stdlib.h>
+
+int makeNegTokenTarg (const unsigned char *  kerberosToken,
+                      size_t                 kerberosTokenLength,
+                      const unsigned char ** negTokenTarg,
+                      size_t *               negTokenTargLength)
+{
+    SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;
+    int                 rc1          = 1;
+    int                 rc2          = SPNEGO_E_SUCCESS;
+
+    /* Check arguments. */
+
+    if (!kerberosToken ||
+        !negTokenTarg  ||
+        !negTokenTargLength)
+        return 10;
+
+    /* Does IIS reply with 1.2.840.48018.1.2.2 or 1.2.840.113554.1.2.2? */
+
+    /* Does IIS always reply with accept_completed? */
+
+    /* IIS does not include a MIC. */
+
+    rc2 = spnegoCreateNegTokenTarg (spnego_mech_oid_Kerberos_V5_Legacy,
+                                    spnego_negresult_success,
+                                    (unsigned char *) kerberosToken,
+                                    kerberosTokenLength,
+                                    NULL,
+                                    0,
+                                    &hSpnegoToken);
+
+    if (rc2 != SPNEGO_E_SUCCESS)
+    {
+        rc1 = abs(rc2)+100;
+        goto cleanup;
+    }
+
+    /* Get NegTokenTarg length. */
+
+    rc2 = spnegoTokenGetBinary (hSpnegoToken,
+                                NULL,
+                                (unsigned long*) negTokenTargLength);
+
+    if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)
+    {
+        rc1 = abs(rc2)+200;
+        goto cleanup;
+    }
+
+    *negTokenTarg = malloc (*negTokenTargLength);
+
+    if (!*negTokenTarg)
+    {
+        rc1 = abs(rc2)+300;
+        goto cleanup;
+    }
+
+    /* Get NegTokenTarg data. */
+
+    rc2 = spnegoTokenGetBinary (hSpnegoToken,
+                              (unsigned char *) *negTokenTarg,
+                              (unsigned long*) negTokenTargLength);
+
+
+    if (rc2 != SPNEGO_E_SUCCESS)
+    {
+        rc1 = abs(rc2)+400;
+        goto error;
+    }
+
+    rc1 = 0;
+
+    goto cleanup;
+
+error:
+
+    if (*negTokenTarg)
+    {
+        free ((unsigned char *) *negTokenTarg);
+        *negTokenTarg = NULL;
+        *negTokenTargLength = 0;
+    }
+
+cleanup:
+
+    if (hSpnegoToken)
+        spnegoFreeData (hSpnegoToken);
+
+    LOG(("makeNegTokenTarg returned %d\n",rc1));
+    return rc1;
+}
+
+int parseNegTokenInit (const unsigned char *  negTokenInit,
+                       size_t                 negTokenInitLength,
+                       const unsigned char ** kerberosToken,
+                       size_t *               kerberosTokenLength)
+{
+    SPNEGO_TOKEN_HANDLE hSpnegoToken = NULL;
+    int                 pindex       = -1;
+    int                 rc1          = 1;
+    int                 rc2          = SPNEGO_E_SUCCESS;
+    unsigned char       reqFlags     = 0;
+    int                 tokenType    = 0;
+
+    /* Check arguments. */
+
+    if (!negTokenInit  ||
+        !kerberosToken ||
+        !kerberosTokenLength)
+        return 10;
+
+    /* Decode SPNEGO token. */
+
+    rc2 = spnegoInitFromBinary ((unsigned char *) negTokenInit,
+                                negTokenInitLength,
+                                &hSpnegoToken);
+
+    if (rc2 != SPNEGO_E_SUCCESS)
+    {
+        rc1 = abs(rc2)+100;
+        goto cleanup;
+    }
+
+    /* Check for negTokenInit choice. */
+
+    rc2 = spnegoGetTokenType (hSpnegoToken,
+                              &tokenType);
+
+    if (rc2 != SPNEGO_E_SUCCESS)
+    {
+        rc1 = abs(rc2)+200;
+        goto cleanup;
+    }
+
+    if (tokenType != SPNEGO_TOKEN_INIT)
+    {
+        rc1 = abs(rc2)+300;
+        goto cleanup;
+    }
+
+   /*
+    Check that first mechType is 1.2.840.113554.1.2.2 or 1.2.840.48018.1.2.2.
+    */
+
+   /*
+    IE seems to reply with 1.2.840.48018.1.2.2 and then 1.2.840.113554.1.2.2.
+    */
+
+    rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,
+                                     spnego_mech_oid_Kerberos_V5_Legacy,
+                                     &pindex);
+
+    if (rc2 != SPNEGO_E_SUCCESS ||
+        pindex != 0)
+    {
+        rc2 = spnegoIsMechTypeAvailable (hSpnegoToken,
+                                         spnego_mech_oid_Kerberos_V5,
+                                         &pindex);
+
+        if (rc2 != SPNEGO_E_SUCCESS ||
+            pindex != 0)
+        {
+            rc1 = abs(rc2)+400;
+            goto cleanup;
+        }
+    }
+
+    /* Check for no reqFlags. */
+
+    /* Does IE ever send reqFlags? */
+
+    rc2 = spnegoGetContextFlags (hSpnegoToken,
+                                 &reqFlags);
+
+    if (rc2 == SPNEGO_E_SUCCESS)
+    {
+        rc1 = abs(rc2)+500;
+        goto cleanup;
+    }
+
+    /* Get mechanism token length. */
+
+    rc2 = spnegoGetMechToken (hSpnegoToken,
+                              NULL,
+                              (unsigned long*) kerberosTokenLength);
+
+    if (rc2 != SPNEGO_E_BUFFER_TOO_SMALL)
+    {
+        rc1 = abs(rc2)+600;
+        goto cleanup;
+    }
+
+    *kerberosToken = malloc (*kerberosTokenLength);
+
+    if (!*kerberosToken)
+    {
+        rc1 = abs(rc2)+700;
+        goto cleanup;
+    }
+
+    /* Get mechanism token data. */
+
+    rc2 = spnegoGetMechToken (hSpnegoToken,
+                              (unsigned char *) *kerberosToken,
+                              (unsigned long*) kerberosTokenLength);
+
+    if (rc2 != SPNEGO_E_SUCCESS)
+    {
+        rc1 = abs(rc2)+800;
+        goto error;
+    }
+
+    /* According to Microsoft, IE does not send a MIC. */
+
+    rc1 = 0;
+
+    goto cleanup;
+
+error:
+
+    if (*kerberosToken)
+    {
+        free ((unsigned char *) *kerberosToken);
+        *kerberosToken = NULL;
+        *kerberosTokenLength = 0;
+    }
+
+cleanup:
+
+    if (hSpnegoToken)
+        spnegoFreeData (hSpnegoToken);
+
+    LOG(("parseNegTokenInit returned %d\n",rc1));
+    return rc1;
+}
index 5bcbabea6464ca209ca793779583f9bf5ed2bad1..20747098afba14d14aab9dbcbaed9ef27e2c36ba 100644 (file)
@@ -1,58 +1,58 @@
-/* -----------------------------------------------------------------------------\r
- * spnegohelp.c declares RFC 2478 SPNEGO GSS-API mechanism APIs.\r
- *\r
- * Author: Frank Balluffi\r
- *\r
- * Copyright (C) 2002-2003. All rights reserved.\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-#ifndef SPNEGOHELP_H\r
-#define SPNEGOHELP_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#include <stddef.h>\r
-\r
-/* -----------------------------------------------------------------------------\r
- * makeNegTokenTarg makes an RFC 2478 SPNEGO NegTokenTarg (token) from an\r
- * RFC 1964 Kerberos GSS-API token.\r
- *\r
- * If makeNegTokenTarg is successful, call free (*negTokenTarg) to free the\r
- * memory allocated by parseNegTokenInit.\r
- *\r
- * Returns 0 if successful, 1 otherwise.\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-int makeNegTokenTarg (const unsigned char *  kerberosToken,\r
-                      size_t                 kerberosTokenLength,\r
-                      const unsigned char ** negTokenTarg,\r
-                      size_t *               negTokenTargLength);\r
-\r
-/* -----------------------------------------------------------------------------\r
- * parseNegTokenInit parses an RFC 2478 SPNEGO NegTokenInit (token) to extract\r
- * an RFC 1964 Kerberos GSS-API token.\r
- *\r
- * If the NegTokenInit does cotain a Kerberos GSS-API token, parseNegTokenInit\r
- * returns an error.\r
- *\r
- * If parseNegTokenInit is successful, call free (*kerberosToken) to\r
- * free the memory allocated by parseNegTokenInit.\r
- *\r
- * Returns 0 if successful, 1 otherwise.\r
- * -----------------------------------------------------------------------------\r
- */\r
-\r
-int parseNegTokenInit (const unsigned char *  negTokenInit,\r
-                       size_t                 negTokenInitLength,\r
-                       const unsigned char ** kerberosToken,\r
-                       size_t *               kerberosTokenLength);\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* SPNEGOHELP_H */\r
+/* -----------------------------------------------------------------------------
+ * spnegohelp.c declares RFC 2478 SPNEGO GSS-API mechanism APIs.
+ *
+ * Author: Frank Balluffi
+ *
+ * Copyright (C) 2002-2003. All rights reserved.
+ * -----------------------------------------------------------------------------
+ */
+
+#ifndef SPNEGOHELP_H
+#define SPNEGOHELP_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+
+/* -----------------------------------------------------------------------------
+ * makeNegTokenTarg makes an RFC 2478 SPNEGO NegTokenTarg (token) from an
+ * RFC 1964 Kerberos GSS-API token.
+ *
+ * If makeNegTokenTarg is successful, call free (*negTokenTarg) to free the
+ * memory allocated by parseNegTokenInit.
+ *
+ * Returns 0 if successful, 1 otherwise.
+ * -----------------------------------------------------------------------------
+ */
+
+int makeNegTokenTarg (const unsigned char *  kerberosToken,
+                      size_t                 kerberosTokenLength,
+                      const unsigned char ** negTokenTarg,
+                      size_t *               negTokenTargLength);
+
+/* -----------------------------------------------------------------------------
+ * parseNegTokenInit parses an RFC 2478 SPNEGO NegTokenInit (token) to extract
+ * an RFC 1964 Kerberos GSS-API token.
+ *
+ * If the NegTokenInit does cotain a Kerberos GSS-API token, parseNegTokenInit
+ * returns an error.
+ *
+ * If parseNegTokenInit is successful, call free (*kerberosToken) to
+ * free the memory allocated by parseNegTokenInit.
+ *
+ * Returns 0 if successful, 1 otherwise.
+ * -----------------------------------------------------------------------------
+ */
+
+int parseNegTokenInit (const unsigned char *  negTokenInit,
+                       size_t                 negTokenInitLength,
+                       const unsigned char ** kerberosToken,
+                       size_t *               kerberosTokenLength);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SPNEGOHELP_H */
index bc2c3f5f54ae97f8e09f38d28cca63cf3ab5466e..2870a13f5602dc8915f7bd593edbfda8a71a4a81 100644 (file)
 #include "spnegohelp.h"
 #endif
 
+// AYJ: must match the definition in src/auth/negotiate/auth_negotiate.cc
+#define MAX_AUTHTOKEN_LEN      32768
+
+// AYJ: match define in include/rfc2181.h
 #ifndef HOST_NAME_MAX
 #define HOST_NAME_MAX 256
 #endif
@@ -177,11 +181,9 @@ int check_gss_err(OM_uint32 major_status, OM_uint32 minor_status, const char* fu
   return(0);
 }
 
-
-
 int main(int argc, char * const argv[])
 {
-  char buf[6400];
+  char buf[MAX_AUTHTOKEN_LEN];
   char *c;
   int length=0;
   static int err=0;
index 6834a17ce7586c61d81caf9236fbc881d7f01335..e30170a846e201fa7b8fe408e0a78a568cde2de0 100644 (file)
@@ -299,9 +299,12 @@ ntlmDecodeAuth(struct ntlm_authenticate *auth, char *buf, size_t size)
     buf += (s - 1);
     *buf++ = '\\';             /* Using \ is more consistent with MS-proxy */
 
-    p = ntlmGetString(&auth->hdr, &auth->user, auth->flags);
+    if( (p = ntlmGetString(&auth->hdr, &auth->user, auth->flags)) == NULL)
+        return 1;
+
     if ((s = strlen(p) + 1) >= size)
        return 1;
+
     while (*p)
        *buf++ = (*p++);        //tolower
 
@@ -429,7 +432,10 @@ main(int argc, char *argv[])
                if (!ntlmDecodeAuth((struct ntlm_authenticate *) decoded, user, 256)) {
                    lc(user);
                    if (strip_domain_enabled) {
-                       strtok_r(user, "\\", &p);
+                       strtok(user, "\\");
+                       p = strtok(NULL, "\\");
+                       if (!p)
+                           p = user;
                        SEND2("AF %s", p);
                        } else {
                    SEND2("AF %s", user);
index 891d0ddb671d4c984dd724e0a053eda3d08092ad..414df0b47028afb1111671062d225997581c6e54 100644 (file)
@@ -15,7 +15,7 @@ die ("Edit $0 to configure a domain!") unless (defined($authdomain));
 
 while(<STDIN>) {
        chop;
-       if (substr($_, 2) eq "YR") {
+       if (substr($_, 0, 2) eq "YR") {
                print "TT ".encode_base64(&make_ntlm_static_challenge);
                next;
        }
@@ -32,11 +32,11 @@ while(<STDIN>) {
        }
        if ($res{type} eq "challenge") { # Huh? WE are the challengers.
                print "BH Squid-helper protocol error: unexpected challenge-request\n";
-               next;           
+               next;
        }
        if ($res{type} eq "authentication") {
                print "AF $res{domain}\\$res{user}\n";
-               next;           
+               next;
        }
        print "BH internal error\n";    # internal error
 }
index d632fe3c0bac1fe39ac64e6bb4159fa373c8e2b4..1aea0c51ba7ee16ca2c1ff085f2fa5465f1f8568 100644 (file)
@@ -1,8 +1,8 @@
-# $Id: Makefile.am,v 1.11 2003/05/21 08:24:26 hno Exp $
+# $Id$
 #
 
-ICON1  =       anthony-binhex.gif
-ICON2  =       anthony-bomb.gif \
+ICONS  =       anthony-binhex.gif \
+               anthony-bomb.gif \
                anthony-box.gif \
                anthony-box2.gif \
                anthony-c.gif \
@@ -30,23 +30,8 @@ ICON2        =       anthony-bomb.gif \
                anthony-xpm.gif
 
 icondir = $(datadir)/icons
-icon_DATA = $(ICON1) $(ICON2)
-EXTRA_DIST = $(ICON1) $(ICON2) icons.shar
+icon_DATA = $(ICONS)
+EXTRA_DIST = $(ICONS)
 DISTCLEANFILES = 
 
-# The magic with ICON1,2 is to have a single dependency
-# for all of the icons.
-$(ICON2): $(ICON1)
-
-$(ICON1):
-       @if [ ! -f "$(srcdir)/$(ICON1)" ]; then \
-           $(SHELL) "$(srcdir)/icons.shar" ; \
-           touch -r "$(srcdir)/icons.shar" *.gif ; \
-       fi
-
-update-icons.shar:
-       shar --no-timestamp $(ICON1) $(ICON2) > $@ 2>/dev/null || \
-       shar $(ICON1) $(ICON2) > $@
-
 ## DEFAULT_ICON_DIR        = $(sysconfdir)/icons
-
diff --git a/icons/anthony-binhex.gif b/icons/anthony-binhex.gif
new file mode 100644 (file)
index 0000000..7c1d05d
Binary files /dev/null and b/icons/anthony-binhex.gif differ
diff --git a/icons/anthony-bomb.gif b/icons/anthony-bomb.gif
new file mode 100644 (file)
index 0000000..b84c96c
Binary files /dev/null and b/icons/anthony-bomb.gif differ
diff --git a/icons/anthony-box.gif b/icons/anthony-box.gif
new file mode 100644 (file)
index 0000000..0bf755f
Binary files /dev/null and b/icons/anthony-box.gif differ
diff --git a/icons/anthony-box2.gif b/icons/anthony-box2.gif
new file mode 100644 (file)
index 0000000..93ca2e4
Binary files /dev/null and b/icons/anthony-box2.gif differ
diff --git a/icons/anthony-c.gif b/icons/anthony-c.gif
new file mode 100644 (file)
index 0000000..87715cf
Binary files /dev/null and b/icons/anthony-c.gif differ
diff --git a/icons/anthony-compressed.gif b/icons/anthony-compressed.gif
new file mode 100644 (file)
index 0000000..b30eb35
Binary files /dev/null and b/icons/anthony-compressed.gif differ
diff --git a/icons/anthony-dir.gif b/icons/anthony-dir.gif
new file mode 100644 (file)
index 0000000..22fe2a2
Binary files /dev/null and b/icons/anthony-dir.gif differ
diff --git a/icons/anthony-dirup.gif b/icons/anthony-dirup.gif
new file mode 100644 (file)
index 0000000..be553b8
Binary files /dev/null and b/icons/anthony-dirup.gif differ
diff --git a/icons/anthony-dvi.gif b/icons/anthony-dvi.gif
new file mode 100644 (file)
index 0000000..163a5d5
Binary files /dev/null and b/icons/anthony-dvi.gif differ
diff --git a/icons/anthony-f.gif b/icons/anthony-f.gif
new file mode 100644 (file)
index 0000000..897966b
Binary files /dev/null and b/icons/anthony-f.gif differ
diff --git a/icons/anthony-image.gif b/icons/anthony-image.gif
new file mode 100644 (file)
index 0000000..1f99ee3
Binary files /dev/null and b/icons/anthony-image.gif differ
diff --git a/icons/anthony-image2.gif b/icons/anthony-image2.gif
new file mode 100644 (file)
index 0000000..9112ba4
Binary files /dev/null and b/icons/anthony-image2.gif differ
diff --git a/icons/anthony-layout.gif b/icons/anthony-layout.gif
new file mode 100644 (file)
index 0000000..07d4b67
Binary files /dev/null and b/icons/anthony-layout.gif differ
diff --git a/icons/anthony-link.gif b/icons/anthony-link.gif
new file mode 100644 (file)
index 0000000..4c7de6a
Binary files /dev/null and b/icons/anthony-link.gif differ
diff --git a/icons/anthony-movie.gif b/icons/anthony-movie.gif
new file mode 100644 (file)
index 0000000..9a1a2bc
Binary files /dev/null and b/icons/anthony-movie.gif differ
diff --git a/icons/anthony-pdf.gif b/icons/anthony-pdf.gif
new file mode 100644 (file)
index 0000000..784fe2a
Binary files /dev/null and b/icons/anthony-pdf.gif differ
diff --git a/icons/anthony-portal.gif b/icons/anthony-portal.gif
new file mode 100644 (file)
index 0000000..65be839
Binary files /dev/null and b/icons/anthony-portal.gif differ
diff --git a/icons/anthony-ps.gif b/icons/anthony-ps.gif
new file mode 100644 (file)
index 0000000..d2cd1f6
Binary files /dev/null and b/icons/anthony-ps.gif differ
diff --git a/icons/anthony-quill.gif b/icons/anthony-quill.gif
new file mode 100644 (file)
index 0000000..391549f
Binary files /dev/null and b/icons/anthony-quill.gif differ
diff --git a/icons/anthony-script.gif b/icons/anthony-script.gif
new file mode 100644 (file)
index 0000000..ce8bc26
Binary files /dev/null and b/icons/anthony-script.gif differ
diff --git a/icons/anthony-sound.gif b/icons/anthony-sound.gif
new file mode 100644 (file)
index 0000000..e1473c6
Binary files /dev/null and b/icons/anthony-sound.gif differ
diff --git a/icons/anthony-tar.gif b/icons/anthony-tar.gif
new file mode 100644 (file)
index 0000000..1545f9b
Binary files /dev/null and b/icons/anthony-tar.gif differ
diff --git a/icons/anthony-tex.gif b/icons/anthony-tex.gif
new file mode 100644 (file)
index 0000000..afcdcd1
Binary files /dev/null and b/icons/anthony-tex.gif differ
diff --git a/icons/anthony-text.gif b/icons/anthony-text.gif
new file mode 100644 (file)
index 0000000..2a31faa
Binary files /dev/null and b/icons/anthony-text.gif differ
diff --git a/icons/anthony-unknown.gif b/icons/anthony-unknown.gif
new file mode 100644 (file)
index 0000000..79f48cd
Binary files /dev/null and b/icons/anthony-unknown.gif differ
diff --git a/icons/anthony-xbm.gif b/icons/anthony-xbm.gif
new file mode 100644 (file)
index 0000000..0fd8fc8
Binary files /dev/null and b/icons/anthony-xbm.gif differ
diff --git a/icons/anthony-xpm.gif b/icons/anthony-xpm.gif
new file mode 100644 (file)
index 0000000..5926892
Binary files /dev/null and b/icons/anthony-xpm.gif differ
diff --git a/icons/icons.shar b/icons/icons.shar
deleted file mode 100644 (file)
index c8cb4fb..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-#!/bin/sh
-# This is a shell archive (produced by GNU sharutils 4.2).
-# To extract the files from this archive, save it to some FILE, remove
-# everything before the `!/bin/sh' line above, then type `sh FILE'.
-#
-# Made on 1997-07-18 22:53 MDT by <wessels@surf>.
-# Source directory was `/usr/people/wessels/Edit/squid-1.2/icons'.
-#
-# Existing files will *not* be overwritten unless `-c' is specified.
-#
-# This shar contains:
-# length mode       name
-# ------ ---------- ------------------------------------------
-#    166 -r--r----- anthony-binhex.gif
-#    192 -r--r----- anthony-bomb.gif
-#    176 -r--r----- anthony-box.gif
-#    168 -r--r----- anthony-box2.gif
-#    160 -r--r----- anthony-c.gif
-#    169 -r--r----- anthony-compressed.gif
-#    137 -r--r----- anthony-dir.gif
-#    147 -r--r----- anthony-dirup.gif
-#    156 -r--r----- anthony-dvi.gif
-#    154 -r--r----- anthony-f.gif
-#    227 -r--r----- anthony-image.gif
-#    204 -r--r----- anthony-image2.gif
-#    194 -r--r----- anthony-layout.gif
-#    124 -r--r----- anthony-link.gif
-#    151 -r--r----- anthony-movie.gif
-#    173 -r--r----- anthony-pdf.gif
-#    172 -r--r----- anthony-portal.gif
-#    162 -r--r----- anthony-ps.gif
-#    166 -r--r----- anthony-quill.gif
-#    155 -r--r----- anthony-script.gif
-#    166 -r--r----- anthony-sound.gif
-#    156 -r--r----- anthony-tar.gif
-#    164 -r--r----- anthony-tex.gif
-#    153 -r--r----- anthony-text.gif
-#    163 -r--r----- anthony-unknown.gif
-#    154 -r--r----- anthony-xbm.gif
-#    168 -r--r----- anthony-xpm.gif
-#
-save_IFS="${IFS}"
-IFS="${IFS}:"
-gettext_dir=FAILED
-locale_dir=FAILED
-first_param="$1"
-for dir in $PATH
-do
-  if test "$gettext_dir" = FAILED && test -f $dir/gettext \
-     && ($dir/gettext --version >/dev/null 2>&1)
-  then
-    set `$dir/gettext --version 2>&1`
-    if test "$3" = GNU
-    then
-      gettext_dir=$dir
-    fi
-  fi
-  if test "$locale_dir" = FAILED && test -f $dir/shar \
-     && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
-  then
-    locale_dir=`$dir/shar --print-text-domain-dir`
-  fi
-done
-IFS="$save_IFS"
-if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
-then
-  echo=echo
-else
-  TEXTDOMAINDIR=$locale_dir
-  export TEXTDOMAINDIR
-  TEXTDOMAIN=sharutils
-  export TEXTDOMAIN
-  echo="$gettext_dir/gettext -s"
-fi
-if mkdir _sh03044; then
-  $echo 'x -' 'creating lock directory'
-else
-  $echo 'failed to create lock directory'
-  exit 1
-fi
-# ============= anthony-binhex.gif ==============
-if test -f 'anthony-binhex.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-binhex.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-binhex.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-binhex.gif
-M1TE&.#EA%``6`,(``````-S<W"]/3____W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-K*+J\];"(0:N=(KX)NN_#%&K<YX55!HD4F%[K8)Z`4-^;
-M/`.ZF5M`"F%(`.2*)H*%:)3T3,%B#A!05GA`J=,VBS9+R(YU^1V,@^1IC<+U
-?JKO9\A6+UI;@:6='U([_T&X2`D2$A4,V$3N*30D`.S9+
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-binhex.gif' ||
-  $echo 'restore of' 'anthony-binhex.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-binhex.gif:' 'MD5 check failed'
-af42e18b16cc7c0d522862c1a3f0f3e8  anthony-binhex.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-binhex.gif'`"
-    test 166 -eq "$shar_count" ||
-    $echo 'anthony-binhex.gif:' 'original size' '166,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-bomb.gif ==============
-if test -f 'anthony-bomb.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-bomb.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-bomb.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-bomb.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3______7`'"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```.%*+J\]M"(0:N=(KYI.\_11`S`,%;<`&[5>5W0!!`"45:`
-MD.\L110=@'`(8(T`!5>EP"P4)1?=;<E\IE1(*2"PM%JR@N:6XNQ1A.$!4\<M
-M0[^%=D%1<E])S3E=[86OZ75].']:?&84`3ET;(9O%HE:7(UWB$.2DQV9%G9A
-,>9YY.A%$HZ1/"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-bomb.gif' ||
-  $echo 'restore of' 'anthony-bomb.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-bomb.gif:' 'MD5 check failed'
-4383bbd438da26abd13003009718aeea  anthony-bomb.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-bomb.gif'`"
-    test 192 -eq "$shar_count" ||
-    $echo 'anthony-bomb.gif:' 'original size' '192,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-box.gif ==============
-if test -f 'anthony-box.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-box.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-box.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-box.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3RZ+5____W"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```-U*+J\]M`(0JN=(KYI.\\1UU4BN(W7!8D48`$"+)\54+@M
-MH.\T81<!5V%(O-%^P&"1"#@.AH$HDNE\1J7+IJ0UZ%YCV:I7@208M[YN=_&C
-IG$4`-;M0>;_69(O]GM=K62TQ(WL=.!V$*(=_`DN-1#$1.Y*3D@\)`#MN
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-box.gif' ||
-  $echo 'restore of' 'anthony-box.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-box.gif:' 'MD5 check failed'
-982cb717724e05c054ba592332976b2a  anthony-box.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-box.gif'`"
-    test 176 -eq "$shar_count" ||
-    $echo 'anthony-box.gif:' 'original size' '176,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-box2.gif ==============
-if test -f 'anthony-box2.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-box2.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-box2.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-box2.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3RZ+5____W"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```-M:+K<_C`:("$HM+);0M9<YVG34(AC!0QFX*:.<*[L*X2G
-MH`@$0=>"VVF8X?E8K*!PB-GU?@,EKFDP0J5#`M6*C`8YO6WOF/P6QN(Q33K6
-A%MO'+SS=!MS@;B<>@,]7^X!;,DR$3#<;`(F*BXP*"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-box2.gif' ||
-  $echo 'restore of' 'anthony-box2.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-box2.gif:' 'MD5 check failed'
-8b578e9789cd27f087838a18b23166c6  anthony-box2.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-box2.gif'`"
-    test 168 -eq "$shar_count" ||
-    $echo 'anthony-box2.gif:' 'original size' '168,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-c.gif ==============
-if test -f 'anthony-c.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-c.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-c.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-c.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-E&+J\])`$0:N=(;YI.\\1)P#D58$;1:[G!7%EJ08`3:<C
-MD%=KC\L=P6`X`/QTP`K1*%$A=4$A$]:+2G$Y:)52Q%HMW6:VQ^).O\$PE5R^
-9BM'*\Y@=]\+5</`T0.S[AS<0;(,K#PD`.W$Y
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-c.gif' ||
-  $echo 'restore of' 'anthony-c.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-c.gif:' 'MD5 check failed'
-47e22190738a27aa4039ff195b3e25fa  anthony-c.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-c.gif'`"
-    test 160 -eq "$shar_count" ||
-    $echo 'anthony-c.gif:' 'original size' '160,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-compressed.gif ==============
-if test -f 'anthony-compressed.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-compressed.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-compressed.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-compressed.gif
-M1TE&.#EA%``6`,(``````+(B(B]/3_]C1____W"`D+^_OP```"'Y!`$```8`
-M+``````4`!8```-N:&K2O3`N00@5,K-*K8Y=YWU*6''D1@`"ZY(=(,\`?!)%
-M7M11,)0W7(XW""A\/]%M9Q@4C\Z!\K2+&@U(9[!2B#ZQWL$V?,T6M^:R=8O+
-BJHM3+@"I-L9Q-5_Y>F=BKQ!]/!J",`(Z.BTI!C0T$@D`.\$V
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-compressed.gif' ||
-  $echo 'restore of' 'anthony-compressed.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-compressed.gif:' 'MD5 check failed'
-13ca8bb5773109a25f5fa4f65e99c62a  anthony-compressed.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-compressed.gif'`"
-    test 169 -eq "$shar_count" ||
-    $echo 'anthony-compressed.gif:' 'original size' '169,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-dir.gif ==============
-if test -f 'anthony-dir.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-dir.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-dir.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-dir.gif
-M1TE&.#EA%``6`,(``````/7>LZ!2+2]/3[^_OP```````````"'Y!`$```0`
-M+``````4`!8```-.2+K<_C#*21FX^$X0NN]`Q'UDIBF`0'IJB09"+,<K'(YU
-M+0Q7GN\]WPJ($[)X12,,J?P0F\<@]`E=2IM`0FK&Y0YXJ*]X3.8-%J9TYIP`
-"`#M7
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-dir.gif' ||
-  $echo 'restore of' 'anthony-dir.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-dir.gif:' 'MD5 check failed'
-30206a4b35a70e342cef25b892bed136  anthony-dir.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-dir.gif'`"
-    test 137 -eq "$shar_count" ||
-    $echo 'anthony-dir.gif:' 'original size' '137,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-dirup.gif ==============
-if test -f 'anthony-dirup.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-dirup.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-dirup.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-dirup.gif
-M1TE&.#EA%``6`,(``````/7>LZ!2+2]/3[^_OP```````````"'Y!`$```0`
-M+``````4`!8```-82+K<_C#*21FX^$X0NN]`Q'UDIBF`0'IJB09"+,<K'(ZU
-MAPO#E>L^6`]7,PF#O\!NF`2QF$I=Z>G#**O(XPA')/&R36WX\R6D9FCTH(=:
-,N]_PWF!AJF?F"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-dirup.gif' ||
-  $echo 'restore of' 'anthony-dirup.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-dirup.gif:' 'MD5 check failed'
-264ae666e8bed6eccdbeba55bb5aa8f5  anthony-dirup.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-dirup.gif'`"
-    test 147 -eq "$shar_count" ||
-    $echo 'anthony-dirup.gif:' 'original size' '147,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-dvi.gif ==============
-if test -f 'anthony-dvi.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-dvi.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-dvi.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-dvi.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-A&+J\])`$0:N=(;X)NN_"%&K<YX55!I46*%*J))@G$-CX
-M)@ST,-,ZBY`R*/*".Y/%"-#Q:,.C[#1<-F5/I5#ZRH*VUU<5K*-]K65S-#RN
-5<MMK))S(GE>X`:-^7[Q%S(!7"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-dvi.gif' ||
-  $echo 'restore of' 'anthony-dvi.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-dvi.gif:' 'MD5 check failed'
-a19a057f846468be9db21a1cabeacaa0  anthony-dvi.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-dvi.gif'`"
-    test 156 -eq "$shar_count" ||
-    $echo 'anthony-dvi.gif:' 'original size' '156,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-f.gif ==============
-if test -f 'anthony-f.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-f.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-f.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-f.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-?&+J\])`$0:N=(;YI.\\1UU4BN%%`FI(7Q*DK&@#S?`JQ
-M!:LW/`[``:"G&@F"0PD*8+0(B<W*4XEC5GR4J2@J3;YVV*.7V]$NP3DSN4M$
-36\6W-9PJUP:"^#S0!G&['PD`.\W*
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-f.gif' ||
-  $echo 'restore of' 'anthony-f.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-f.gif:' 'MD5 check failed'
-30c06990ecae4c7ecae1f405b29871b0  anthony-f.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-f.gif'`"
-    test 154 -eq "$shar_count" ||
-    $echo 'anthony-f.gif:' 'original size' '154,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-image.gif ==============
-if test -f 'anthony-image.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-image.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-image.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-image.gif
-M1TE&.#EA%``6`.,``````!Z0_[(B(KZ^OB]/3RZ+5P``@/]C1____W"`D+^_
-MOP```````````````````"'Y!`$```H`+``````4`!8```20D,A)I[I8$<2[
-MWT1V;5Y)AAE9=BHZ(D<L'P.BVM@VRP("$+_@:Q?K`8Y(P)#8XR2>":4&-BM8
-M"S4$5*J3%3@#:U;+10QBW_"5-(B^!@(!]FK=#`SN:8>^'@3P92Q\"00!?WDW
-M`P17A(:'@1V*$XZ/+RMFE)5Z)7Z9@)8>=P:CI)^;ER6(!%"LK4]`&4FRLU(1
-"`#M7
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-image.gif' ||
-  $echo 'restore of' 'anthony-image.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-image.gif:' 'MD5 check failed'
-78cfc371f01ce9a11534f87ec2c837dd  anthony-image.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-image.gif'`"
-    test 227 -eq "$shar_count" ||
-    $echo 'anthony-image.gif:' 'original size' '227,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-image2.gif ==============
-if test -f 'anthony-image2.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-image2.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-image2.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-image2.gif
-M1TE&.#EA%``6`.,``````!Z0_[(B(B]/3RZ+5P``@/]C1____W"`D+^_OP``
-M`````````````````````"'Y!`$```D`+``````4`!8```1Y<,A)9[HXC<.[
-MWT-V;5Y)AAE9=BHZ=D(L"^KAJH*A[\#0_R].;J<#&(^`X"''-#`14$12LZI&
-MIZW*I"-5#@C@,$'5I7*^XC`7RQJ[OV1VU2H_%.YX_%I9"/C_`05[9G:`@(,J
-8?8J!@8AS=$J/B`-1E990/AE(FYQ3$0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-image2.gif' ||
-  $echo 'restore of' 'anthony-image2.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-image2.gif:' 'MD5 check failed'
-aaba8674a5053db62e10b84b45c9feb3  anthony-image2.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-image2.gif'`"
-    test 204 -eq "$shar_count" ||
-    $echo 'anthony-image2.gif:' 'original size' '204,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-layout.gif ==============
-if test -f 'anthony-layout.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-layout.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-layout.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-layout.gif
-M1TE&.#EA%``6`.,``````(?.ZZ!2+2]/3_]C1______7`'"`D+^_OP``````
-M`````````````````````"'Y!`$```@`+``````4`!8```1O<,A))[H8C<*[
-MWT-V;5Y)AME9<62!CJQA!#3[8>=,!QPP^$"8:U<K`(Y(@'`@:#8]A^A!J6$Y
-MG]`HM57J%J9";Q=<-2;/'3)7G-[VSLEVF"TO<PCF.$=-+_$[>'!U:W1_?7M;
-X.`U*+C%$_&7"12!<1`#O/
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-layout.gif' ||
-  $echo 'restore of' 'anthony-layout.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-layout.gif:' 'MD5 check failed'
-7a0161bcf19320e63671bb5718c2f094  anthony-layout.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-layout.gif'`"
-    test 194 -eq "$shar_count" ||
-    $echo 'anthony-layout.gif:' 'original size' '194,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-link.gif ==============
-if test -f 'anthony-link.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-link.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-link.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-link.gif
-M1TE&.#EA%``6`*$``````"]/3W"`D+^_OR'Y!`$```,`+``````4`!8```)-
-MG(^I*A$B5FKN/6EH=1#KW43+MSVB4H+7`@PI=R9`ZX+8,`-K<!MYOD+0#K]B
-B<"8L*HN'P/*)'`B@T`SUF7%><PQM]=90]A31L=`\+@``.P-K
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-link.gif' ||
-  $echo 'restore of' 'anthony-link.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-link.gif:' 'MD5 check failed'
-dc034c34323a0cef5fcbb7dd10290df4  anthony-link.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-link.gif'`"
-    test 124 -eq "$shar_count" ||
-    $echo 'anthony-link.gif:' 'original size' '124,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-movie.gif ==============
-if test -f 'anthony-movie.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-movie.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-movie.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-movie.gif
-M1TE&.#EA%``6`,(``````+Z^OB]/3____W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-<"+K<6A"$X-H$(E[".Q\2E16,YX'+&`)F!U[JUA*O&"TS
-MS<147F.:WNRG6@R.2.0N6&'`F+Y541%-08?2:XMXHV*M)-DV&Q:.GR1C,KDL
-0-Q?HU9M<$-CO^+P=D@``.V'`
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-movie.gif' ||
-  $echo 'restore of' 'anthony-movie.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-movie.gif:' 'MD5 check failed'
-8d8a692e445c8c195c5c75304b276325  anthony-movie.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-movie.gif'`"
-    test 151 -eq "$shar_count" ||
-    $echo 'anthony-movie.gif:' 'original size' '151,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-pdf.gif ==============
-if test -f 'anthony-pdf.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-pdf.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-pdf.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-pdf.gif
-M1TE&.#EA%``6`,(``````"]/3_\``/___W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-R&+J\];"$0:N=(;YI.\\19PF5"&X=20XB"[6$2@Q`4-_H
-M.*Q`[P.Y&46P&A".1Z"DLRM2D,J)<+BK"`G15(7(-69US:(`BYIVAT1O+LR\
-F?E5,"WFY<CZM6;CQ+G_'.W,M?WAK@X02`4B*BT<V$3^0D4H)`#MV
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-pdf.gif' ||
-  $echo 'restore of' 'anthony-pdf.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-pdf.gif:' 'MD5 check failed'
-7b5afe82b81ce71fde7603add0c6075f  anthony-pdf.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-pdf.gif'`"
-    test 173 -eq "$shar_count" ||
-    $echo 'anthony-pdf.gif:' 'original size' '173,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-portal.gif ==============
-if test -f 'anthony-portal.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-portal.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-portal.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-portal.gif
-M1TE&.#EA%``6`,(``````,V%/[Z^OB]/3______7`'"`D+^_OR'Y!`$```<`
-M+``````4`!8```-Q.+J\]_`,0JN=([YI.\\1UU4BN)&-<D&EX;[`$,\G-1A`
-MKN]Y3=R`@$X`>.%\MT!!""`28$@<LPFH'"4D7$[HI%Q;O.X3$`T.JUXRUJ8]
-E6]7@+?6-%-COXF^%MZ.O1X!Z@(%P@X0;-T:*1C(1?(\Z#PD`.PT.
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-portal.gif' ||
-  $echo 'restore of' 'anthony-portal.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-portal.gif:' 'MD5 check failed'
-b65db2f42d4ae0044ccf2bced749e3e5  anthony-portal.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-portal.gif'`"
-    test 172 -eq "$shar_count" ||
-    $echo 'anthony-portal.gif:' 'original size' '172,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-ps.gif ==============
-if test -f 'anthony-ps.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-ps.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-ps.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-ps.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-G&+J\])`$0:N=(;X)NN_"%&K<YX55!HD"V`)HNE8F#`1W
-MOE7#-[RFG65(&1A[NYZM\^,9`3N/TF5!2EY8*@]Z]9V&ULGTU:QR641B.,U>
-;L]7G-UPHW]+K`C<^?PX<_X!&.!$UA1X/"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-ps.gif' ||
-  $echo 'restore of' 'anthony-ps.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-ps.gif:' 'MD5 check failed'
-ac18ae0d0984eec459878cec544b6d57  anthony-ps.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-ps.gif'`"
-    test 162 -eq "$shar_count" ||
-    $echo 'anthony-ps.gif:' 'original size' '162,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-quill.gif ==============
-if test -f 'anthony-quill.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-quill.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-quill.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-quill.gif
-M1TE&.#EA%``6`,(``````(?.ZR]/3____W"`D+^_OP```````"'Y!`$```4`
-M+``````4`!8```-K*+J\];"(0:N=(KYI.U=`"'!=A84!`4CEA1+JUE(O',HM
-MD,)JS)8Z7L]'J@1Y``JQ<[15EL:=\[GZ#01250<Z:":WU8_T"\;I!*'9$BL@
-?S)3A;OL-EP'<],&23.?F]6%M0H-":!$BB(F(#PD`.R:W
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-quill.gif' ||
-  $echo 'restore of' 'anthony-quill.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-quill.gif:' 'MD5 check failed'
-b95a126efb90d179c885263b71363313  anthony-quill.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-quill.gif'`"
-    test 166 -eq "$shar_count" ||
-    $echo 'anthony-quill.gif:' 'original size' '166,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-script.gif ==============
-if test -f 'anthony-script.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-script.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-script.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-script.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-@&+J\])`$0:N=(;YI.\\1UU4BN%6`D)(7Q`$PC`8`39]4
-MNN9QC/<[RF`X`.!4R!'1*!DYA4S1TU+\`7N5:G/:T;ZNL6R4VQVKP#+HD2SP
-4\M#B-=G-5DL"Q+Q^>(.@T0\)`#O1
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-script.gif' ||
-  $echo 'restore of' 'anthony-script.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-script.gif:' 'MD5 check failed'
-1a090281ba78aa7092f9908890012deb  anthony-script.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-script.gif'`"
-    test 155 -eq "$shar_count" ||
-    $echo 'anthony-script.gif:' 'original size' '155,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-sound.gif ==============
-if test -f 'anthony-sound.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-sound.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-sound.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-sound.gif
-M1TE&.#EA%``6`,(``````+(B(KZ^OB]/3_]C1____W"`D+^_OR'Y!`$```<`
-M+``````4`!8```-K>+K<_C"VP0B1"H!C58^`L7$7"87%:'X-FG*>=VFT4=Q;
-MUP5$:/RVVVMWX;F$P@WOL#0&D3AF<7J$*J?2*O(JS1H&WV_2U)S1`()!5(<]
-?#-X#M#H7,TWD*C8D+AA]2GL:=BQ[%`N$&(F*"PD`.QH&
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-sound.gif' ||
-  $echo 'restore of' 'anthony-sound.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-sound.gif:' 'MD5 check failed'
-5350a7f6218f61c8ec4c32a8564af8f2  anthony-sound.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-sound.gif'`"
-    test 166 -eq "$shar_count" ||
-    $echo 'anthony-sound.gif:' 'original size' '166,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-tar.gif ==============
-if test -f 'anthony-tar.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-tar.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-tar.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-tar.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-A&+J\])`$0:N=(;YI!0`4ET739WYA-6[>B0I<",75"P1W
-MSG:6^[&^SF`X``"#%J)14@.]A,L2$GH\\2C%W9679?I`W&C+=>W&4,^D^%M>
-5.]-J[3;.G%,E`:)^/\1%OH!+"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-tar.gif' ||
-  $echo 'restore of' 'anthony-tar.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-tar.gif:' 'MD5 check failed'
-516061955993427e3aa1929d5c9175c6  anthony-tar.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-tar.gif'`"
-    test 156 -eq "$shar_count" ||
-    $echo 'anthony-tar.gif:' 'original size' '156,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-tex.gif ==============
-if test -f 'anthony-tex.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-tex.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-tex.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-tex.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-I&+J\])`$0:N=(;YI*0`"ET739YIA-6[">:8JQ'5?&P#W
-MS0[F8+D?EJLC&!AYPI:2>`0D440*4E+Y^*)%)Q7+U)9PE!NH,_T"NZSJ.%IN
-=`=>5]D=4(WNYZ"T^?M_S-P%'@H-&.A!OB%H)`#O+
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-tex.gif' ||
-  $echo 'restore of' 'anthony-tex.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-tex.gif:' 'MD5 check failed'
-9e2cc5c42025c323b03c3074daef5e31  anthony-tex.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-tex.gif'`"
-    test 164 -eq "$shar_count" ||
-    $echo 'anthony-tex.gif:' 'original size' '164,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-text.gif ==============
-if test -f 'anthony-text.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-text.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-text.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-text.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```->&+J\])`$0:N=(;YI.\\1UU4BN(W7!7%`ZU)`$,\G"KMN
-MC;?6X`^`FJWR"TINNQ<%*!P2C2R`=#I]-IT"YE%`[0*L6^P2VO%^QU>G5H2D
-2@MG8M?@=^-GO/EG$S#<F```[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-text.gif' ||
-  $echo 'restore of' 'anthony-text.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-text.gif:' 'MD5 check failed'
-6115039fc538f0f7212ea17dd9adf34b  anthony-text.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-text.gif'`"
-    test 153 -eq "$shar_count" ||
-    $echo 'anthony-text.gif:' 'original size' '153,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-unknown.gif ==============
-if test -f 'anthony-unknown.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-unknown.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-unknown.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-unknown.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-H&+J\])`$0:N=(;YI.\\1)PP#8)HBN%'E>8J"RK4N"@0W
-ML`KN,-:GG:O2(^DDG0H-0"KM+$L3ZPC[U7R_)P6(S2(MO8[S2SPEQ]4DE-H9
-<BME@\UO+DZ_I:B4\/Y<$FH"!)#@10(9!!`D`.P6(
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-unknown.gif' ||
-  $echo 'restore of' 'anthony-unknown.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-unknown.gif:' 'MD5 check failed'
-f8ec9ff9f4eb30d34b29ac1b10a84aae  anthony-unknown.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-unknown.gif'`"
-    test 163 -eq "$shar_count" ||
-    $echo 'anthony-unknown.gif:' 'original size' '163,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-xbm.gif ==============
-if test -f 'anthony-xbm.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-xbm.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-xbm.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-xbm.gif
-M1TE&.#EA%``6`,(``````"]/3____W"`D+^_OP```````````"'Y!`$```0`
-M+``````4`!8```-?&+J\])`$0:N=(;YI.\\1UU4BN(W7!8D48`$!+)\58-=V
-M#M""[E:#X&`G:?E^%"%Q<LQUACS4<XER6J#%CN]*?1V!7=PV&3:.!5B6^0:.
-3BJ=N*3DN3P>$^'PP%FGZB0D`.SS4
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-xbm.gif' ||
-  $echo 'restore of' 'anthony-xbm.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-xbm.gif:' 'MD5 check failed'
-9f2ec7af479158b89912fc67c7886770  anthony-xbm.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-xbm.gif'`"
-    test 154 -eq "$shar_count" ||
-    $echo 'anthony-xbm.gif:' 'original size' '154,' 'current size' "$shar_count!"
-  fi
-fi
-# ============= anthony-xpm.gif ==============
-if test -f 'anthony-xpm.gif' && test "$first_param" != -c; then
-  $echo 'x -' SKIPPING 'anthony-xpm.gif' '(file already exists)'
-else
-  $echo 'x -' extracting 'anthony-xpm.gif' '(binary)'
-  sed 's/^X//' << 'SHAR_EOF' | uudecode &&
-begin 600 anthony-xpm.gif
-M1TE&.#EA%``6`,(``````"]/3_\``/___W"`D+^_OP``_P```"'Y!`$```4`
-M+``````4`!8```-M&+J\];"$0:N=(;YI.\\1UU4BN(W7!8D48`$!+)\5(+@M
-MH._T8`LW"V%(`-!^P&"%:)3X=E#<LLE"":FH7:?8JQF^T@'7^?J:I>,JP`R>
-A=GUL`QK;6;?=Y+IN2[?RWWYB5`%$A89#,1%1BU$/"0`[
-`
-end
-SHAR_EOF
-  chmod 0440 'anthony-xpm.gif' ||
-  $echo 'restore of' 'anthony-xpm.gif' 'failed'
-  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
-  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
-    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
-    || $echo 'anthony-xpm.gif:' 'MD5 check failed'
-8d2724de7e9e46198a9dd3e805b18a02  anthony-xpm.gif
-SHAR_EOF
-  else
-    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'anthony-xpm.gif'`"
-    test 168 -eq "$shar_count" ||
-    $echo 'anthony-xpm.gif:' 'original size' '168,' 'current size' "$shar_count!"
-  fi
-fi
-rm -fr _sh03044
-exit 0
similarity index 72%
rename from include/List.h
rename to include/CbDataList.h
index a928eec838d3278e2c9538aa1fb2af4ff17a112b..0aa43dba4021bfc22aac923ec97a86cf27d5a84e 100644 (file)
 
 /// \ingroup POD
 template <class C>
-class List
+class CbDataList
 {
 
 public:
     void *operator new (size_t);
     void operator delete (void *);
-    List (C const &);
-    ~List();
+    CbDataList (C const &);
+    ~CbDataList();
 
     bool find(C const &)const;
     bool findAndTune(C const &);
-    List *next;
+    CbDataList *next;
     C element;
     bool empty() const { return this == NULL; }
 
 private:
-    CBDATA_CLASS(List);
+    CBDATA_CLASS(CbDataList);
 };
 
 /// \ingroup POD
 template<class C>
-class ListContainer
+class CbDataListContainer
 {
 
 public:
-    ListContainer();
-    ~ListContainer();
-    List<C> *push_back (C const &);
+    CbDataListContainer();
+    ~CbDataListContainer();
+    CbDataList<C> *push_back (C const &);
     C pop_front();
     bool empty() const;
 
-    List<C> *head;
+    CbDataList<C> *head;
 };
 
 /// \ingroup POD
 template<class C>
-class ListIterator
+class CbDataListIterator
 {
 public:
-    ListIterator(ListContainer<C> const &list) : next_entry(list.head) {}
+    CbDataListIterator(CbDataListContainer<C> const &list) : next_entry(list.head) {}
     const C & next() {
-       List<C> *entry = next_entry;
+       CbDataList<C> *entry = next_entry;
        if (entry)
            next_entry = entry->next;
        return entry->element;
@@ -89,40 +89,40 @@ public:
     }
 
 private:
-    List<C> *next_entry;
+    CbDataList<C> *next_entry;
 };
 
 /* implementation follows */
 
 /** \cond AUTODOCS-IGNORE */
 template <class C>
-cbdata_type List<C>::CBDATA_List = CBDATA_UNKNOWN;
+cbdata_type CbDataList<C>::CBDATA_CbDataList = CBDATA_UNKNOWN;
 /** \endcond */
 
 template <class C>
 void *
-List<C>::operator new (size_t byteCount)
+CbDataList<C>::operator new (size_t byteCount)
 {
-    CBDATA_INIT_TYPE(List);
+    CBDATA_INIT_TYPE(CbDataList);
 
-    List<C> *result = cbdataAlloc(List);
+    CbDataList<C> *result = cbdataAlloc(CbDataList);
 
     return result;
 }
 
 template <class C>
 void
-List<C>::operator delete (void *address)
+CbDataList<C>::operator delete (void *address)
 {
     cbdataFree(address);
 }
 
 template <class C>
-List<C>::List(C const &value) : next(NULL), element (value)
+CbDataList<C>::CbDataList(C const &value) : next(NULL), element (value)
 {}
 
 template <class C>
-List<C>::~List()
+CbDataList<C>::~CbDataList()
 {
     if (next)
         delete next;
@@ -130,9 +130,9 @@ List<C>::~List()
 
 template <class C>
 bool
-List<C>::find (C const &toFind) const
+CbDataList<C>::find (C const &toFind) const
 {
-    List<C> const *node = NULL;
+    CbDataList<C> const *node = NULL;
 
     for (node = this; node; node = node->next)
         if (node->element == toFind)
@@ -143,11 +143,11 @@ List<C>::find (C const &toFind) const
 
 template <class C>
 bool
-List<C>::findAndTune(C const & toFind)
+CbDataList<C>::findAndTune(C const & toFind)
 {
-    List<C> *prev = NULL;
+    CbDataList<C> *prev = NULL;
 
-    for (List<C> *node = this; node; node = node->
+    for (CbDataList<C> *node = this; node; node = node->
                                             next) {
         if (node->element == toFind) {
             if (prev != NULL) {
@@ -168,24 +168,24 @@ List<C>::findAndTune(C const & toFind)
 }
 
 template <class C>
-ListContainer<C>::ListContainer() : head (NULL)
+CbDataListContainer<C>::CbDataListContainer() : head (NULL)
 {}
 
 template <class C>
-ListContainer<C>::~ListContainer()
+CbDataListContainer<C>::~CbDataListContainer()
 {
     if (head)
         delete head;
 }
 
 template <class C>
-List<C> *
-ListContainer<C>::push_back (C const &element)
+CbDataList<C> *
+CbDataListContainer<C>::push_back (C const &element)
 {
-    List<C> *node = new List<C> (element);
+    CbDataList<C> *node = new CbDataList<C> (element);
 
     if (head) {
-        List<C> *tempNode = NULL;
+        CbDataList<C> *tempNode = NULL;
 
         for (tempNode = head; tempNode->next; tempNode = tempNode->next);
         tempNode->next = node;
@@ -197,11 +197,11 @@ ListContainer<C>::push_back (C const &element)
 
 template <class C>
 C
-ListContainer<C>::pop_front()
+CbDataListContainer<C>::pop_front()
 {
     if (head) {
         C result = head->element;
-        List<C> *node = head;
+        CbDataList<C> *node = head;
         head = head->next;
         node->next = NULL;
         delete node;
@@ -213,7 +213,7 @@ ListContainer<C>::pop_front()
 
 template <class C>
 bool
-ListContainer<C>::empty() const
+CbDataListContainer<C>::empty() const
 {
     return head == NULL;
 }
index 1ee310e4c66c3091eb38d6d72196b4c7cec6a2b7..ce88e333214e15f9e0d36bafefa3053685c2ba35 100644 (file)
  *   This OS has at least one version that defines these as private
  *   kernel macros commented as being 'non-standard'.
  *   We need to use them, much nicer than the OS-provided __u*_*[]
+ * UPDATE: OpenBSD 4.3 has the same.
  */
-#if USE_IPV6 && defined(_SQUID_FREEBSD_)
+#if USE_IPV6 && ( defined(_SQUID_FREEBSD_) || defined(_SQUID_OPENBSD_) )
 #define s6_addr8  __u6_addr.__u6_addr8
 #define s6_addr16 __u6_addr.__u6_addr16
 #define s6_addr32 __u6_addr.__u6_addr32
 #endif
 
+/* OpenBSD also hide v6only socket option we need for comm layer. :-( */
+#if !defined(IPV6_V6ONLY) && defined(_SQUID_OPENBSD_)
+#define IPV6_V6ONLY            27 // from OpenBSD 4.3 headers. (NP: does not match non-BSD OS values)
+#endif
+
+
 /// Length of buffer that needs to be allocated to old a null-terminated IP-string
 // Yuck. But there are still structures that need it to be an 'integer constant'.
 #define MAX_IPSTRLEN  75
@@ -232,7 +239,7 @@ public:
      *  Valid results IF and only IF the stored IP address is actually a network bitmask
      \retval N number of bits which are set in the bitmask stored.
      */
-    int GetCIDR();
+    int GetCIDR() const;
 
     /** Apply a mask to the stored address.
      \param mask Netmask format to be bit-mask-AND'd over the stored address.
index acd05a1e215d30ca27512a4abb6a67d1f736f489..cd7fb1a037635b44dbb475f591ade423a7e91389 100644 (file)
 #elif defined(__OpenBSD__)
 #define _SQUID_OPENBSD_
 
+#elif defined(__DragonFly__)
+#define _SQUID_DRAGONFLY_
+
 #elif defined(__CYGWIN32__)  || defined(__CYGWIN__)
 #define _SQUID_CYGWIN_
 #define _SQUID_WIN32_
@@ -332,7 +335,7 @@ typedef union {
 /* 
  * Don't allow inclusion of malloc.h on FreeBSD, Next and OpenBSD 
  */
-#if defined(HAVE_MALLOC_H) && (defined(_SQUID_FREEBSD_) || defined(_SQUID_NEXT_) || defined(_SQUID_OPENBSD_))
+#if defined(HAVE_MALLOC_H) && (defined(_SQUID_FREEBSD_) || defined(_SQUID_NEXT_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_))
 #undef HAVE_MALLOC_H
 #endif
 
index c34e6c6dd063fea41cfa0e7da4de9882c91bc519..c6ab231361ddf4dc3ca1ba554b4db8165139837e 100644 (file)
@@ -213,9 +213,6 @@ SQUIDCEXTERN TimersArray *xprof_Timers;
 SQUIDCEXTERN void xprof_start(xprof_type type, const char *timer);
 SQUIDCEXTERN void xprof_stop(xprof_type type, const char *timer);
 SQUIDCEXTERN void xprof_event(void *data);
-#if __cplusplus
-extern void xprofRegisterWithCacheManager(CacheManager & manager);
-#endif
 
 #define PROF_start(type) xprof_start(XPROF_##type, #type)
 #define PROF_stop(type) xprof_stop(XPROF_##type, #type)
index 0cb8887f2011c200b3ba4bae0b37a157dc916c21..b035499e8c66e1b089e5d90a27b6cf71f69ccb36 100644 (file)
@@ -76,7 +76,6 @@ typedef unsigned long ino_t;
 #include "default_config_file.h"
 /* Some tricks for MS Compilers */
 #define __STDC__ 1
-#pragma include_alias(<dirent.h>, <direct.h>)
 #define THREADLOCAL __declspec(thread)
 
 #elif defined(__GNUC__) /* gcc environment */
@@ -235,12 +234,9 @@ struct timezone
 #include <ws2spi.h>
 #if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
 #pragma warning (pop)
-#include "readdir.h"
-#else
+#endif
 #include <io.h>
 #include <stdlib.h>
-#include <sys/types.h> 
-#endif
 
 typedef char * caddr_t;
 
@@ -265,7 +261,7 @@ typedef char * caddr_t;
 #undef FD_CLR
 #define FD_CLR(fd, set) do { \
     u_int __i; \
-    SOCKET __sock = fd_table[fd].win32.handle; \
+    SOCKET __sock = _get_osfhandle(fd); \
     for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
         if (((fd_set FAR *)(set))->fd_array[__i] == __sock) { \
             while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
@@ -282,7 +278,7 @@ typedef char * caddr_t;
 #undef FD_SET
 #define FD_SET(fd, set) do { \
     u_int __i; \
-    SOCKET __sock = fd_table[fd].win32.handle; \
+    SOCKET __sock = _get_osfhandle(fd); \
     for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
         if (((fd_set FAR *)(set))->fd_array[__i] == (__sock)) { \
             break; \
index ea36180a9e3b6baa8f9ac63c852ddbf558acb382..07a1a5a2e04c1ab1b72b7eca370027ea2c11092b 100644 (file)
@@ -89,9 +89,13 @@ SQUIDCEXTERN void xxfree(const void *);
  */
 #define _SQUID_EXTERNNEW_ extern
 #else
+#ifdef __GNUC_STDC_INLINE__
+#define _SQUID_EXTERNNEW_ extern inline __attribute__((gnu_inline))
+#else
 #define _SQUID_EXTERNNEW_ extern inline
 #endif
 #endif
+#endif
 #include "SquidNew.h"
 #endif
 
@@ -101,6 +105,9 @@ SQUIDCEXTERN char *rfc1738_escape_unescaped(const char *);
 SQUIDCEXTERN char *rfc1738_escape_part(const char *);
 SQUIDCEXTERN void rfc1738_unescape(char *);
 
+/* charset.c */
+SQUIDCEXTERN char *latin1_to_utf8(char *out, size_t size, const char *in);
+
 /* html.c */
 SQUIDCEXTERN char *html_quote(const char *);
 
index 529043e6fa99f31195e0d103edf046ae7545182b..76786c7b12283ab1ccccf4eba6680f881ecc77e6 100644 (file)
 #ifndef SQUID_RELEASE_TIME
 #define SQUID_RELEASE_TIME squid_curtime
 #endif
+
+#ifndef APP_SHORTNAME
+#define APP_SHORTNAME "squid"
+#endif
+#ifndef APP_FULLNAME
+#define APP_FULLNAME  PACKAGE "/" VERSION
+#endif
index 1b5deaf721ced7a2e875247797ffd8ae9d1e5dac..08b94eb08022cb1f4f3b04a7c5e921a0e71e345b 100644 (file)
@@ -118,15 +118,15 @@ IPAddress::~IPAddress()
 }
 
 int
-IPAddress::GetCIDR()
+IPAddress::GetCIDR() const
 {
     uint8_t shift,byte;
     uint8_t bit,caught;
     int len = 0;
 #if USE_IPV6
-    uint8_t *ptr= m_SocketAddr.sin6_addr.s6_addr;
+    const uint8_t *ptr= m_SocketAddr.sin6_addr.s6_addr;
 #else
-    uint8_t *ptr= (uint8_t *)&m_SocketAddr.sin_addr.s_addr;
+    const uint8_t *ptr= (uint8_t *)&m_SocketAddr.sin_addr.s_addr;
 #endif
 
     /* Let's scan all the bits from Most Significant to Least */
old mode 100644 (file)
new mode 100755 (executable)
index bacf40d..a250a91
@@ -53,7 +53,13 @@ noinst_LIBRARIES = \
        libntlmauth.a \
        $(LIBSSPWIN32) \
        @LIBREGEX@
+#
+# dirent.c, encrypt.c and getopt.c are needed for native Windows support.
+#
 EXTRA_libmiscutil_a_SOURCES = \
+       dirent.c \
+       encrypt.c \
+       getopt.c \
        md5.c \
        Profiler.c \
        strsep.c \
@@ -62,6 +68,7 @@ EXTRA_libmiscutil_a_SOURCES = \
 libmiscutil_a_SOURCES = \
        MemPool.cc \
        base64.c \
+       charset.c \
        getfullhostname.c \
        hash.c \
        heap.c \
diff --git a/lib/charset.c b/lib/charset.c
new file mode 100644 (file)
index 0000000..bc0223a
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * $Id: charset.c,v 1.1 2008/07/07 11:04:47 hno Exp $
+ *
+ * DEBUG: 
+ * AUTHOR: Henrik Nordstrom <henrik@henriknordstrom.net>
+ * 
+ * Copyright (C) 2008 Henrik Nordstrom
+ *
+ * SQUID Web Proxy Cache          http://www.squid-cache.org/
+ * ----------------------------------------------------------
+ *
+ *  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.
+ *
+ */
+
+#include "config.h"
+#include "util.h"
+
+/* Convert ISO-LATIN-1 to UTF-8
+ */
+char *
+latin1_to_utf8(char *out, size_t size, const char *in)
+{
+    unsigned char *p;
+    for (p = (unsigned char *)out; *in && size > 2; in++) {
+       unsigned char ch = (unsigned char)*in;
+       if (ch < 0x80) {
+           *p++ = ch;
+           size--;
+       } else {
+           *p++ = (ch >> 6) | 0xc0;
+           size--;
+           *p++ = (ch & 0x3f) | 0x80;
+           size--;
+       }
+    }
+    *p++ = '\0';
+    if (*in)
+       return NULL;
+    return out;
+}
+
+
diff --git a/lib/dirent.c b/lib/dirent.c
new file mode 100644 (file)
index 0000000..73ddc05
--- /dev/null
@@ -0,0 +1,316 @@
+/*
+ * $Id$
+ *
+ * Implement dirent-style opendir(), readdir(), closedir(), rewinddir(),
+ * seekdir() and telldir on Windows - Based on mingw-runtime package sources.
+ * AUTHOR: Guido Serassio <serassio@squid-cache.org>
+ *
+ * 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.
+ *
+ * Original file info follow:
+ *
+ * dirent.c
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Derived from DIRLIB.C by Matt J. Weinstein 
+ * This note appears in the DIRLIB.H
+ * DIRLIB.H by M. J. Weinstein   Released to public domain 1-Jan-89
+ *
+ * Updated by Jeremy Bettis <jeremy@hksys.com>
+ * Significantly revised and rewinddir, seekdir and telldir added by Colin
+ * Peters <colin@fu.is.saga-u.ac.jp>
+ *      
+ */
+
+#include "util.h"
+
+/* The following code section is part of the native Windows Squid port */
+#if defined(_SQUID_MSWIN_)
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <io.h>
+#include <dirent.h>
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>           /* for GetFileAttributes */
+
+#define SUFFIX ("*")
+#define        SLASH   ("\\")
+
+
+/*
+ * opendir
+ *
+ * Returns a pointer to a DIR structure appropriately filled in to begin
+ * searching a directory.
+ */
+DIR *
+opendir(const CHAR * szPath)
+{
+    DIR *nd;
+    unsigned int rc;
+    CHAR szFullPath[MAX_PATH];
+
+    errno = 0;
+
+    if (!szPath) {
+       errno = EFAULT;
+       return (DIR *) 0;
+    }
+    if (szPath[0] == '\0') {
+       errno = ENOTDIR;
+       return (DIR *) 0;
+    }
+    /* Attempt to determine if the given path really is a directory. */
+    rc = GetFileAttributes(szPath);
+    if (rc == (unsigned int) -1) {
+       /* call GetLastError for more error info */
+       errno = ENOENT;
+       return (DIR *) 0;
+    }
+    if (!(rc & FILE_ATTRIBUTE_DIRECTORY)) {
+       /* Error, entry exists but not a directory. */
+       errno = ENOTDIR;
+       return (DIR *) 0;
+    }
+    /* Make an absolute pathname.  */
+    _fullpath(szFullPath, szPath, MAX_PATH);
+
+    /* Allocate enough space to store DIR structure and the complete
+     * directory path given. */
+    nd = (DIR *) malloc(sizeof(DIR) + (strlen(szFullPath)
+           + strlen(SLASH)
+           + strlen(SUFFIX) + 1)
+       * sizeof(CHAR));
+
+    if (!nd) {
+       /* Error, out of memory. */
+       errno = ENOMEM;
+       return (DIR *) 0;
+    }
+    /* Create the search expression. */
+    strcpy(nd->dd_name, szFullPath);
+
+    /* Add on a slash if the path does not end with one. */
+    if (nd->dd_name[0] != '\0'
+       && strchr(nd->dd_name, '/') != nd->dd_name
+       + strlen(nd->dd_name) - 1
+       && strchr(nd->dd_name, '\\') != nd->dd_name
+       + strlen(nd->dd_name) - 1) {
+       strcat(nd->dd_name, SLASH);
+    }
+    /* Add on the search pattern */
+    strcat(nd->dd_name, SUFFIX);
+
+    /* Initialize handle to -1 so that a premature closedir doesn't try
+     * to call _findclose on it. */
+    nd->dd_handle = -1;
+
+    /* Initialize the status. */
+    nd->dd_stat = 0;
+
+    /* Initialize the dirent structure. ino and reclen are invalid under
+     * Win32, and name simply points at the appropriate part of the
+     * findfirst_t structure. */
+    nd->dd_dir.d_ino = 0;
+    nd->dd_dir.d_reclen = 0;
+    nd->dd_dir.d_namlen = 0;
+    memset(nd->dd_dir.d_name, 0, FILENAME_MAX);
+
+    return nd;
+}
+
+
+/*
+ * readdir
+ *
+ * Return a pointer to a dirent structure filled with the information on the
+ * next entry in the directory.
+ */
+struct dirent *
+readdir(DIR * dirp)
+{
+    errno = 0;
+
+    /* Check for valid DIR struct. */
+    if (!dirp) {
+       errno = EFAULT;
+       return (struct dirent *) 0;
+    }
+    if (dirp->dd_stat < 0) {
+       /* We have already returned all files in the directory
+        * (or the structure has an invalid dd_stat). */
+       return (struct dirent *) 0;
+    } else if (dirp->dd_stat == 0) {
+       /* We haven't started the search yet. */
+       /* Start the search */
+       dirp->dd_handle = _findfirst(dirp->dd_name, &(dirp->dd_dta));
+
+       if (dirp->dd_handle == -1) {
+           /* Whoops! Seems there are no files in that
+            * directory. */
+           dirp->dd_stat = -1;
+       } else {
+           dirp->dd_stat = 1;
+       }
+    } else {
+       /* Get the next search entry. */
+       if (_findnext(dirp->dd_handle, &(dirp->dd_dta))) {
+           /* We are off the end or otherwise error.     
+            * _findnext sets errno to ENOENT if no more file
+            * Undo this. */
+           DWORD winerr = GetLastError();
+           if (winerr == ERROR_NO_MORE_FILES)
+               errno = 0;
+           _findclose(dirp->dd_handle);
+           dirp->dd_handle = -1;
+           dirp->dd_stat = -1;
+       } else {
+           /* Update the status to indicate the correct
+            * number. */
+           dirp->dd_stat++;
+       }
+    }
+
+    if (dirp->dd_stat > 0) {
+       /* Successfully got an entry. Everything about the file is
+        * already appropriately filled in except the length of the
+        * file name. */
+       dirp->dd_dir.d_namlen = strlen(dirp->dd_dta.name);
+       strcpy(dirp->dd_dir.d_name, dirp->dd_dta.name);
+       return &dirp->dd_dir;
+    }
+    return (struct dirent *) 0;
+}
+
+
+/*
+ * closedir
+ *
+ * Frees up resources allocated by opendir.
+ */
+int
+closedir(DIR * dirp)
+{
+    int rc;
+
+    errno = 0;
+    rc = 0;
+
+    if (!dirp) {
+       errno = EFAULT;
+       return -1;
+    }
+    if (dirp->dd_handle != -1) {
+       rc = _findclose(dirp->dd_handle);
+    }
+    /* Delete the dir structure. */
+    free(dirp);
+
+    return rc;
+}
+
+/*
+ * rewinddir
+ *
+ * Return to the beginning of the directory "stream". We simply call findclose
+ * and then reset things like an opendir.
+ */
+void
+rewinddir(DIR * dirp)
+{
+    errno = 0;
+
+    if (!dirp) {
+       errno = EFAULT;
+       return;
+    }
+    if (dirp->dd_handle != -1) {
+       _findclose(dirp->dd_handle);
+    }
+    dirp->dd_handle = -1;
+    dirp->dd_stat = 0;
+}
+
+/*
+ * telldir
+ *
+ * Returns the "position" in the "directory stream" which can be used with
+ * seekdir to go back to an old entry. We simply return the value in stat.
+ */
+long
+telldir(DIR * dirp)
+{
+    errno = 0;
+
+    if (!dirp) {
+       errno = EFAULT;
+       return -1;
+    }
+    return dirp->dd_stat;
+}
+
+/*
+ * seekdir
+ *
+ * Seek to an entry previously returned by telldir. We rewind the directory
+ * and call readdir repeatedly until either dd_stat is the position number
+ * or -1 (off the end). This is not perfect, in that the directory may
+ * have changed while we weren't looking. But that is probably the case with
+ * any such system.
+ */
+void
+seekdir(DIR * dirp, long lPos)
+{
+    errno = 0;
+
+    if (!dirp) {
+       errno = EFAULT;
+       return;
+    }
+    if (lPos < -1) {
+       /* Seeking to an invalid position. */
+       errno = EINVAL;
+       return;
+    } else if (lPos == -1) {
+       /* Seek past end. */
+       if (dirp->dd_handle != -1) {
+           _findclose(dirp->dd_handle);
+       }
+       dirp->dd_handle = -1;
+       dirp->dd_stat = -1;
+    } else {
+       /* Rewind and read forward to the appropriate index. */
+       rewinddir(dirp);
+
+       while ((dirp->dd_stat < lPos) && readdir(dirp));
+    }
+}
+#endif /* _SQUID_MSWIN_ */
diff --git a/lib/encrypt.c b/lib/encrypt.c
new file mode 100644 (file)
index 0000000..f5ee094
--- /dev/null
@@ -0,0 +1,309 @@
+/* encrypt.c - providing 56 bit DES encryption
+ * Copyright (C) 1991 Jochen Obalek
+ * 
+ * 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, 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#include <time.h>
+#include <string.h>
+#include <stdlib.h>
+
+#define BS  64
+#define BS2 32
+#define KS  48
+#define KS2 24
+#define IS  56
+#define IS2 28
+
+static char schluessel[16][KS];
+
+
+static char PC1[] =
+{
+    56, 48, 40, 32, 24, 16, 8, 0,
+    57, 49, 41, 33, 25, 17, 9, 1,
+    58, 50, 42, 34, 26, 18, 10, 2,
+    59, 51, 43, 35,
+    62, 54, 46, 38, 30, 22, 14, 6,
+    61, 53, 45, 37, 29, 21, 13, 5,
+    60, 52, 44, 36, 28, 20, 12, 4,
+    27, 19, 11, 3
+};
+
+
+static char PC2[] =
+{
+    13, 16, 10, 23, 0, 4, 2, 27,
+    14, 5, 20, 9, 22, 18, 11, 3,
+    25, 7, 15, 6, 26, 19, 12, 1,
+    40, 51, 30, 36, 46, 54, 29, 39,
+    50, 44, 32, 47, 43, 48, 38, 55,
+    33, 52, 45, 41, 49, 35, 28, 31
+};
+
+
+static char IP[] =
+{
+    57, 49, 41, 33, 25, 17, 9, 1,
+    59, 51, 43, 35, 27, 19, 11, 3,
+    61, 53, 45, 37, 29, 21, 13, 5,
+    63, 55, 47, 39, 31, 23, 15, 7,
+    56, 48, 40, 32, 24, 16, 8, 0,
+    58, 50, 42, 34, 26, 18, 10, 2,
+    60, 52, 44, 36, 28, 20, 12, 4,
+    62, 54, 46, 38, 30, 22, 14, 6
+};
+
+
+static char EP[] =
+{
+    7, 39, 15, 47, 23, 55, 31, 63,
+    6, 38, 14, 46, 22, 54, 30, 62,
+    5, 37, 13, 45, 21, 53, 29, 61,
+    4, 36, 12, 44, 20, 52, 28, 60,
+    3, 35, 11, 43, 19, 51, 27, 59,
+    2, 34, 10, 42, 18, 50, 26, 58,
+    1, 33, 9, 41, 17, 49, 25, 57,
+    0, 32, 8, 40, 16, 48, 24, 56
+};
+
+
+static char E0[] =
+{
+    31, 0, 1, 2, 3, 4, 3, 4,
+    5, 6, 7, 8, 7, 8, 9, 10,
+    11, 12, 11, 12, 13, 14, 15, 16,
+    15, 16, 17, 18, 19, 20, 19, 20,
+    21, 22, 23, 24, 23, 24, 25, 26,
+    27, 28, 27, 28, 29, 30, 31, 0
+};
+
+
+static char E[KS];
+
+
+static char PERM[] =
+{
+    15, 6, 19, 20, 28, 11, 27, 16,
+    0, 14, 22, 25, 4, 17, 30, 9,
+    1, 7, 23, 13, 31, 26, 2, 8,
+    18, 12, 29, 5, 21, 10, 3, 24
+};
+
+
+static char S_BOX[][64] =
+{
+    {
+       14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,
+       3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,
+       4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,
+       15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13
+    },
+    {
+       15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,
+       9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,
+       0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,
+       5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9
+    },
+    {
+       10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,
+       1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,
+       13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,
+       11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12
+    },
+    {
+       7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,
+       1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,
+       10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,
+       15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14
+    },
+    {
+       2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,
+       8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,
+       4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,
+       15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3
+    },
+    {
+       12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,
+       0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,
+       9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,
+       7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13
+    },
+    {
+       4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,
+       3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,
+       1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,
+       10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12
+    },
+    {
+       13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,
+       10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,
+       7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,
+       0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11
+    }
+};
+
+static void
+perm(a, e, pc, n)
+     register char *a, *e;
+     register char *pc;
+     int n;
+{
+    for (; n--; pc++, a++)
+       *a = e[*pc];
+}
+
+static void
+crypt_main(nachr_l, nachr_r, schl)
+     register char *nachr_l, *nachr_r;
+     register char *schl;
+{
+    char tmp[KS];
+    register int sbval;
+    register char *tp = tmp;
+    register char *e = E;
+    register int i, j;
+
+    for (i = 0; i < 8; i++) {
+       for (j = 0, sbval = 0; j < 6; j++)
+           sbval = (sbval << 1) | (nachr_r[*e++] ^ *schl++);
+       sbval = S_BOX[i][sbval];
+       for (tp += 4, j = 4; j--; sbval >>= 1)
+           *--tp = sbval & 1;
+       tp += 4;
+    }
+
+    e = PERM;
+    for (i = 0; i < BS2; i++)
+       *nachr_l++ ^= tmp[*e++];
+}
+
+void
+encrypt(char *nachr, int decr)
+{
+    char (*schl)[KS] = decr ? schluessel + 15 : schluessel;
+    char tmp[BS];
+    int i;
+
+    perm(tmp, nachr, IP, BS);
+
+    for (i = 8; i--;) {
+       crypt_main(tmp, tmp + BS2, *schl);
+       if (decr)
+           schl--;
+       else
+           schl++;
+       crypt_main(tmp + BS2, tmp, *schl);
+       if (decr)
+           schl--;
+       else
+           schl++;
+    }
+
+    perm(nachr, tmp, EP, BS);
+}
+
+void
+setkey(char *schl)
+{
+    char tmp1[IS];
+    register unsigned int ls = 0x7efc;
+    register int i, j, k;
+    register int shval = 0;
+    register char *akt_schl;
+
+    memcpy(E, E0, KS);
+    perm(tmp1, schl, PC1, IS);
+
+    for (i = 0; i < 16; i++) {
+       shval += 1 + (ls & 1);
+       akt_schl = schluessel[i];
+       for (j = 0; j < KS; j++) {
+           if ((k = PC2[j]) >= IS2) {
+               if ((k += shval) >= IS)
+                   k = (k - IS2) % IS2 + IS2;
+           } else if ((k += shval) >= IS2)
+               k %= IS2;
+           *akt_schl++ = tmp1[k];
+       }
+       ls >>= 1;
+    }
+}
+
+char *
+crypt(const char *wort, const char *salt)
+{
+    static char retkey[14];
+    char key[BS + 2];
+    char *k;
+    int tmp, keybyte;
+    int i, j;
+
+    memset(key, 0, BS + 2);
+
+    for (k = key, i = 0; i < BS; i++) {
+       if (!(keybyte = *wort++))
+           break;
+       k += 7;
+       for (j = 0; j < 7; j++, i++) {
+           *--k = keybyte & 1;
+           keybyte >>= 1;
+       }
+       k += 8;
+    }
+
+    setkey(key);
+    memset(key, 0, BS + 2);
+
+    for (k = E, i = 0; i < 2; i++) {
+       retkey[i] = keybyte = *salt++;
+       if (keybyte > 'Z')
+           keybyte -= 'a' - 'Z' - 1;
+       if (keybyte > '9')
+           keybyte -= 'A' - '9' - 1;
+       keybyte -= '.';
+
+       for (j = 0; j < 6; j++, keybyte >>= 1, k++) {
+           if (!(keybyte & 1))
+               continue;
+           tmp = *k;
+           *k = k[24];
+           k[24] = tmp;
+       }
+    }
+
+    for (i = 0; i < 25; i++)
+       encrypt(key, 0);
+
+    for (k = key, i = 0; i < 11; i++) {
+       for (j = keybyte = 0; j < 6; j++) {
+           keybyte <<= 1;
+           keybyte |= *k++;
+       }
+
+       keybyte += '.';
+       if (keybyte > '9')
+           keybyte += 'A' - '9' - 1;
+       if (keybyte > 'Z')
+           keybyte += 'a' - 'Z' - 1;
+       retkey[i + 2] = keybyte;
+    }
+
+    retkey[i + 2] = 0;
+
+    if (!retkey[1])
+       retkey[1] = *retkey;
+
+    return retkey;
+}
index 05f7165293d2ec323abe35ff922ff0dfe60ce268..3cecfb1e8390950a64e10cd020c3b8b5c7f1bf8a 100644 (file)
@@ -80,6 +80,7 @@
 #endif
 
 #include "getaddrinfo.h"
+#include "inet_pton.h"
 
 static struct addrinfo *
 dup_addrinfo (struct addrinfo *info, void *addr, size_t addrlen)
@@ -171,7 +172,7 @@ xgetaddrinfo (const char *nodename, const char *servname,
       return (*res == NULL) ? EAI_MEMORY : 0;
     }
 
-  /* If AI_NUMERIC is specified, use inet_addr to translate numbers and
+  /* If AI_NUMERIC is specified, use xinet_pton to translate numbers and
      dots notation. */
   if (hints->ai_flags & AI_NUMERICHOST)
     {
@@ -185,6 +186,8 @@ xgetaddrinfo (const char *nodename, const char *servname,
 
       sin.sin_family = result.ai_family;
       sin.sin_port = htons (port);
+      if (xinet_pton(result.ai_family, nodename, &sin.sin_addr))
+        return EAI_NONAME;
       sin.sin_addr.s_addr = inet_addr (nodename);
       /* Duplicate result and addr and return */
       *res = dup_addrinfo (&result, &sin, sizeof sin);
diff --git a/lib/getopt.c b/lib/getopt.c
new file mode 100644 (file)
index 0000000..f5d4a51
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 1987, 1993, 1994
+ *      The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#if defined(LIBC_SCCS) && !defined(lint)
+static char sccsid[] = "@(#)getopt.c   8.3 (Berkeley) 4/27/95";
+#endif /* LIBC_SCCS and not lint */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int opterr = 1,                        /* if error message should be printed */
+    optind = 1,                        /* index into parent argv vector */
+    optopt,                    /* character checked for validity */
+    optreset;                  /* reset getopt */
+char *optarg;                  /* argument associated with option */
+
+#define        BADCH   (int)'?'
+#define        BADARG  (int)':'
+#define        EMSG    ""
+
+/*
+ * getopt --
+ *      Parse argc/argv argument vector.
+ */
+int
+getopt(nargc, nargv, ostr)
+     int nargc;
+     char *const *nargv;
+     const char *ostr;
+{
+    static char *place = EMSG; /* option letter processing */
+    char *oli;                 /* option letter list index */
+
+    if (optreset || !*place) { /* update scanning pointer */
+       optreset = 0;
+       if (optind >= nargc || *(place = nargv[optind]) != '-') {
+           place = EMSG;
+           return (-1);
+       }
+       if (place[1] && *++place == '-') {      /* found "--" */
+           ++optind;
+           place = EMSG;
+           return (-1);
+       }
+    }                          /* option letter okay? */
+    if ((optopt = (int) *place++) == (int) ':' ||
+       !(oli = strchr(ostr, optopt))) {
+       /*
+        * if the user didn't specify '-' as an option,
+        * assume it means -1.
+        */
+       if (optopt == (int) '-')
+           return (-1);
+       if (!*place)
+           ++optind;
+       if (opterr && *ostr != ':')
+           (void) fprintf(stderr,
+               "%s: illegal option -- %c\n", __FILE__, optopt);
+       return (BADCH);
+    }
+    if (*++oli != ':') {       /* don't need argument */
+       optarg = NULL;
+       if (!*place)
+           ++optind;
+    } else {                   /* need an argument */
+       if (*place)             /* no white space */
+           optarg = place;
+       else if (nargc <= ++optind) {   /* no arg */
+           place = EMSG;
+           if (*ostr == ':')
+               return (BADARG);
+           if (opterr)
+               (void) fprintf(stderr,
+                   "%s: option requires an argument -- %c\n",
+                   __FILE__, optopt);
+           return (BADCH);
+       } else                  /* white space */
+           optarg = nargv[optind];
+       place = EMSG;
+       ++optind;
+    }
+    return (optopt);           /* dump back option letter */
+}
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 733ead55d6ba137f5ec41fb887f9924f3a91a6fe..6933f5f6d50cdc5adcb1206a19f044cae4719bc5 100644 (file)
@@ -428,11 +428,11 @@ BOOL WINAPI SSP_LogonUser(PTSTR szUser, PTSTR szPassword, PTSTR szDomain)
 
         /* Initialize auth identity structure */
        ZeroMemory(&ai, sizeof(ai));
-       ai.Domain = szDomain;
+       ai.Domain = (void *)szDomain;
        ai.DomainLength = lstrlen(szDomain);
-       ai.User = szUser;
+       ai.User = (void *)szUser;
        ai.UserLength = lstrlen(szUser);
-       ai.Password = szPassword;
+       ai.Password = (void *)szPassword;
        ai.PasswordLength = lstrlen(szPassword);
 #if defined(UNICODE) || defined(_UNICODE)
        ai.Flags = SEC_WINNT_AUTH_IDENTITY_UNICODE;
old mode 100755 (executable)
new mode 100644 (file)
index 144a989448a6ff9779c86e284173919e98c34b8e..ae8a01a39713ecc350b8bd4fd1061e87dd9a927e 100644 (file)
@@ -1,11 +1,12 @@
-#include <stdexcept>
+#include "config.h"
 
+#include <stdexcept>
+#include <cstring>
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <string>
 
-#include "config.h"
 #include "testIPAddress.h"
 #include "IPAddress.h"
 
index 076a174dd196be11a00c56aaff547ad802b1ddd5..8f48a267f4cab8a573e1251262f52a1f6be22e0d 100644 (file)
@@ -931,8 +931,8 @@ xint64toa(int64_t num)
 void
 default_failure_notify(const char *message)
 {
-    write(2, message, strlen(message));
-    write(2, "\n", 1);
+    if(write(2, message, strlen(message))) {}
+    if(write(2, "\n", 1)) {}
     abort();
 }
 
old mode 100755 (executable)
new mode 100644 (file)
index 7b423b2c1ad89ab3122538b2b8e73856b63162e4..89a63cfa6c516db390d01aff6d0369978bb8fa59 100755 (executable)
@@ -2,7 +2,7 @@
 # Nightly cron job to generate snapshot releases
 top=$PWD
 versions=/server/httpd/htdocs/squid-cache.org/Versions/
-TMPDIR=/tmp/hno.cron
+TMPDIR=/tmp/$LOGNAME.cron
 export TMPDIR
 if [ -d $TMPDIR ]; then
        chmod -R +w $TMPDIR
@@ -34,6 +34,9 @@ make_snapshot()
     *-cfgman.tar.gz)
        type=-cfgman.tar.gz
        ;;
+    *-langpack.tar.gz)
+       type=-langpack.tar.gz
+       ;;
     *)
        type=`echo $file | sed -e 's/.*\.tar\.gz/.tar.gz/' -e 's/.*\.tar\.bz2/.tar.bz2/' -e 's/.*\.patch/.patch/' -e 's/.*\.diff/.diff/' -e 's/.*-RELEASENOTES.html/-RELEASENOTES.html/' -e 's/^.*ChangeLog.txt$/-ChangeLog.txt/' -e 's/.*-cfgman/-cfgman/'`
     esac
@@ -49,7 +52,7 @@ make_snapshot()
     rm -f $dst/squid-$ver.snapshot$type
     ln -s $file $dst/squid-$ver.snapshot$type
     rm -f $dst/squid-$ver.snapshot$type.md5
-    ln -s $file $dst/squid-$ver.snapshot$type.md5
+    ln -s $file.md5 $dst/squid-$ver.snapshot$type.md5
 
     # cleanup old snapshots
     ls $dst/*-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$type | sed -e 's/.*-\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'$type'\)/\1/' | sort -r | tail +$save | while read f; do
@@ -105,8 +108,8 @@ make_snapshot ../commit/squid-2/mksnapshot.sh HEAD v2 HEAD 3
 ../commit/bootstrap squid-2.7
 make_snapshot ../commit/squid-2.7/mksnapshot.sh SQUID_2_7 v2 2.7 3
 
-../commit/bootstrap squid-2.6
-make_snapshot ../commit/squid-2.6/mksnapshot.sh SQUID_2_6 v2 2.6 3
+#../commit/bootstrap squid-2.6
+#make_snapshot ../commit/squid-2.6/mksnapshot.sh SQUID_2_6 v2 2.6 3
 
 #../commit/bootstrap squid-2.5
 #make_snapshot ../commit/squid-2.5/mksnapshot.sh SQUID_2_5 v2 2.5 3
index 87129720b41867aebd68151b76b285837f9711bf..6c2bf985e9fb1ab93f7f557e5972a5fedf7fdaa8 100755 (executable)
@@ -95,3 +95,10 @@ if [ -x $tmpdir/scripts/www/build-cfg-help.pl ]; then
        gzip -f -9 ${PACKAGE}-${VERSION}-${date}-cfgman.html
        echo ${PACKAGE}-${VERSION}-${date}-cfgman.html.gz >>${tag}.out
 fi
+
+# Generate language-pack tarballs
+# NP: Only to be done on HEAD branch.
+if test "${VERSION}" = "3.HEAD" ; then
+       sh -c "cd $tmpdir/errors && tar -zcf ${PWD}/${PACKAGE}-${VERSION}-${date}-langpack.tar.gz ./*/*"
+       echo ${PACKAGE}-${VERSION}-${date}-langpack.tar.gz >>${tag}.out
+fi
diff --git a/scripts/formater.pl b/scripts/formater.pl
new file mode 100755 (executable)
index 0000000..af929fc
--- /dev/null
@@ -0,0 +1,201 @@
+#!/usr/bin/perl
+#
+# Author: Tsantilas Christos
+# email:  christos@chtsanti.net
+#
+# Distributed 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.
+#
+# The ldap_manager library 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
+# Library 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-1307 USA
+#
+# See LICENSE or http://www.gnu.org/licenses/gpl.html for details .
+#
+
+
+use IPC::Open2;
+
+#
+# NP: The Squid code requires astyle version 1.22 or later
+#
+$ASTYLE_BIN="/usr/bin/astyle";
+
+#$ASTYLE_BIN="/usr/local/src/astyle-1.22/bin/astyle";
+$ASTYLE_ARGS ="--mode=c -s4 -O -l";
+
+#$ASTYLE_ARGS="--mode=c -s4 -O --break-blocks -l";
+#$ASTYLE_BIN="/usr/local/src/astyle-1.22/bin/astyle";
+
+
+if(! -e $ASTYLE_BIN){
+    print "\nFile $ASTYLE_BIN not found\n";
+    print "Please fix the ASTYLE_BIN variable in this script!\n\n";
+    exit -1;
+}
+$ASTYLE_BIN=$ASTYLE_BIN." ".$ASTYLE_ARGS;
+
+$INDENT = "";
+
+$out = shift @ARGV;
+#read options, currently no options available
+while($out eq "" ||  $out =~ /^-\w+$/){
+   if($out eq "-h") {
+        usage($0);
+        exit 0;
+   }
+   else {
+       usage($0);
+       exit -1;
+   }
+}
+
+
+while($out){
+
+    if( $out !~ /\.cc$|\.cci$|\.h$|\.c$/) {
+         print "Unknown suffix for file $out, ignoring....\n";
+         $out = shift @ARGV;
+         next;
+    }
+
+    $in= "$out.astylebak";
+    my($new_in) = $in;
+    my($i) = 0;
+    while(-e $new_in) {
+       $new_in=$in.".".$i;
+       $i++;
+    }
+    $in=$new_in;
+    rename($out, $in);
+    
+    local (*FROM_ASTYLE, *TO_ASTYLE);
+    $pid_style=open2(\*FROM_ASTYLE, \*TO_ASTYLE, $ASTYLE_BIN);
+    
+    if(!$pid_style){
+       print "An error while open2\n";
+       exit -1;
+    }
+    
+    
+    if($pid=fork()){
+       #do parrent staf
+       close(FROM_ASTYLE);
+       
+       if(!open(IN, "<$in")){
+           print "Can not open input file: $in\n";
+           exit -1;
+       }
+       my($line) = '';
+       while(<IN>){
+           $line=$line.$_;
+           if(input_filter(\$line)==0){
+               next;
+           }
+           print TO_ASTYLE $line;
+           $line = '';
+       }
+       if($line){
+           print TO_ASTYLE $line;
+       }
+       close(TO_ASTYLE);
+       waitpid($pid,0);
+    }
+    else{
+       # child staf
+       close(TO_ASTYLE);
+       
+       if(!open(OUT,">$out")){
+           print "Can't open output file: $out\n";
+           exit -1;
+       }
+       my($line)='';
+       while(<FROM_ASTYLE>){
+           $line = $line.$_;
+           if(output_filter(\$line)==0){
+               next;
+           }
+           print OUT $line;
+           $line = '';
+       }
+       if($line){
+           print OUT $line;
+       }
+       close(OUT);
+       exit 0;
+    }
+
+    $out = shift @ARGV;
+}
+
+
+sub input_filter{
+    my($line)=@_;
+     #if we have integer declaration, get it all before processing it..
+
+    if($$line =~/\s+int\s+.*/s || $$line=~ /\s+unsigned\s+.*/s ||
+       $$line =~/^int\s+.*/s || $$line=~ /^unsigned\s+.*/s
+       ){ 
+       if( $$line =~ /(\(|,|\)|\#|typedef)/s ){
+           #excluding int/unsigned appeared inside function prototypes,typedefs etc....
+           return 1;
+       }
+
+       if(index($$line,";") == -1){
+#          print "Getting one more for \"".$$line."\"\n";
+           return 0;
+       }
+
+       if($$line =~ /(.*)\s*int\s+([^:]*):\s*(\w+)\s*\;(.*)/s){
+#          print ">>>>> ".$$line."    ($1)\n";
+            local($prx,$name,$val,$extra)=($1,$2,$3,$4);
+            $prx =~ s/\s*$//g;
+           $$line= $prx." int ".$name."__FORASTYLE__".$val.";".$extra;
+#          print "----->".$$line."\n";
+       }       
+       elsif($$line =~ /\s*unsigned\s+([^:]*):\s*(\w+)\s*\;(.*)/s){
+            local($name,$val,$extra)=($1,$2,$3);
+            $prx =~ s/\s*$//g;
+           $$line= "unsigned ".$name."__FORASTYLE__".$val.";".$extra;
+       }       
+       return 1;
+    }
+
+    if($$line =~ /\#endif/ ||
+       $$line =~ /\#else/ ||
+       $$line =~ /\#if/
+       ){
+       $$line =$$line."//__ASTYLECOMMENT__\n";
+       return 1;
+    }
+
+    return 1;
+}
+
+sub output_filter{
+    my($line)=@_;
+
+    if($$line =~ /^\s*$/){
+       return 1;
+    }
+
+    if($$line =~ s/\s*\/\/__ASTYLECOMMENT__//) {
+       chomp($$line);
+    }
+    
+   # "The "unsigned int:1; case ....."
+   $$line =~ s/__FORASTYLE__/:/;
+
+   return 1;
+}
+
+sub usage{
+    my($name)=@_;
+    print "Usage:\n   $name file1 file2 file3 ....\n";
+}
diff --git a/scripts/md5checker.sh b/scripts/md5checker.sh
new file mode 100755 (executable)
index 0000000..bcd7dd0
--- /dev/null
@@ -0,0 +1,23 @@
+#!/bin/bash
+# A checker
+
+
+for FILENAME in $*; do
+
+    if test -e $FILENAME -a -e "$FILENAME.astylebak"; then
+       md51=`cat  $FILENAME| tr -d "\n \t\r" | md5sum|sed 's/  -//'`;
+       md52=`cat  $FILENAME.astylebak| tr -d "\n \t\r" | md5sum|sed 's/  -//'`;
+       
+       if test $md51 != $md52; then
+           echo "File $FILENAME not converted well";
+       fi
+    else
+       echo "can not check file: $FILENAME";
+    fi
+
+done
+
+
+
+
+
index bfdd3fda043a10bbf723dab04014be3c02a1cb42..e0dde7fb78b3adf556cea8ffeec41243bae53f6f 100644 (file)
@@ -324,10 +324,10 @@ asn_build_unsigned_int(u_char * data, int *datalength,
        return (NULL);
     }
     integer = *intp;
-    mask = (u_int) 0xFF << (8 * (sizeof(int) - 1));
-    /* mask is 0xFF000000 on a big-endian machine */
-    if ((u_char) ((integer & mask) >> (8 * (sizeof(int) - 1))) & 0x80) {
-       /* if MSB is set */
+    mask = (u_int) 0x80 << (8 * (sizeof(int) - 1));
+    /* mask is 0x80000000 on a big-endian machine */
+    if ((integer & mask) != 0) {
+       /* add a null byte if MSB is set, to prevent sign extension */
        add_null_byte = 1;
        intsize++;
     }
@@ -336,11 +336,11 @@ asn_build_unsigned_int(u_char * data, int *datalength,
      * this 2's complement integer. 
      * There should be no sequence of 9 consecutive 1's or 0's at the
      * most significant end of the integer.
+     * The 1's case is taken care of above by adding a null byte.
      */
     mask = (u_int) 0x1FF << ((8 * (sizeof(int) - 1)) - 1);
     /* mask is 0xFF800000 on a big-endian machine */
-    while ((((integer & mask) == 0)
-           || ((integer & mask) == mask)) && intsize > 1) {
+    while (((integer & mask) == 0) && intsize > 1) {
        intsize--;
        integer <<= 8;
     }
@@ -484,7 +484,7 @@ asn_parse_header(u_char * data, int *datalength, u_char * type)
        return (NULL);
 
     header_len = bufp - data;
-    if (header_len + asn_length > *datalength) {
+    if (header_len + asn_length > *datalength || asn_length > (u_int)(2 << 18) ) {
        snmp_set_api_error(SNMPERR_ASN_DECODE);
        return (NULL);
     }
index be82f9d9ad043f868a206d9965ba3a5fa80f4392..4d6b424916def4b47eb0227d0b220239dda5e063 100644 (file)
@@ -1018,7 +1018,6 @@ PREDEFINED             = \
                        USE_ARP_ACL \
                        USE_ASYNC_IO \
                        USE_CACHE_DIGESTS \
-                       USE_CARP \
                        USE_CLASSFUL \
                        USE_DLMALLOC \
                        USE_DNSSERVERS \
@@ -1045,7 +1044,8 @@ PREDEFINED             = \
                        USE_WCCP \
                        USE_WCCPv2 \
                        USE_WIN32_SERVICE \
-                       USE_XPROF_STATS
+                       USE_XPROF_STATS \
+                       FOLLOW_X_FORWARDED_FOR
 
 
 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
index ee008dd0b6ec743e8ff8d2d3ce0427f95cd419fa..58918ff9ac5da6374e2d53fb072f918e000c3b39 100644 (file)
@@ -69,7 +69,7 @@ struct arpreq
 #endif
 #include <net/route.h>
 #include <net/if.h>
-#if defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_)
+#if defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_)
 #include <net/if_arp.h>
 #endif
 #if HAVE_NETINET_IF_ETHER_H
@@ -439,7 +439,7 @@ aclMatchArp(SplayNode<acl_arp_data *> **dataptr, IPAddress &c)
         return (0 == splayLastResult);
     }
 
-#elif defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_)
+#elif defined(_SQUID_FREEBSD_) || defined(_SQUID_NETBSD_) || defined(_SQUID_OPENBSD_) || defined(_SQUID_DRAGONFLY_)
 
     SplayNode<acl_arp_data *> **Top = dataptr;
 
index 65b4f00be9788d08ec0b70fd796cf92f380538f3..d6223adb2ed42047b65dcf86782901762cb09b2b 100644 (file)
 #define SQUID_ACLASN_H
 
 #include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
 #include "ACLStrategised.h"
 #include "ACLChecklist.h"
 #include "IPAddress.h"
 
-/* forward decls */
-
-class CacheManager;
-
-SQUIDCEXTERN int asnMatchIp(List<int> *, IPAddress &);
+SQUIDCEXTERN int asnMatchIp(CbDataList<int> *, IPAddress &);
 
 /// \ingroup ACLAPI
 SQUIDCEXTERN void asnInit(void);
 
-/// \ingroup ACLAPI
-extern void asnRegisterWithCacheManager(CacheManager & manager);
-
 /// \ingroup ACLAPI
 SQUIDCEXTERN void asnFreeMemory(void);
 
@@ -77,7 +70,7 @@ private:
     static ACLStrategised<IPAddress> SourceRegistryEntry_;
     static ACL::Prototype DestinationRegistryProtoype;
     static ACLStrategised<IPAddress> DestinationRegistryEntry_;
-    List<int> *data;
+    CbDataList<int> *data;
 };
 
 MEMPROXY_CLASS_INLINE(ACLASN)          /**DOCS_NOSEMI*/
index 795456658485f80c1610a8531bda501ca4d30a8c..e41ebb01c80a7c9a3fcd2968ba8d7b3e00ced6fa 100644 (file)
@@ -582,9 +582,15 @@ aclChecklistCreate(const acl_access * A, HttpRequest * request, const char *iden
     if (A)
         checklist->accessList = cbdataReference(A);
 
-    if (request != NULL) {
+    if (request != NULL)
+    {
         checklist->request = HTTPMSGLOCK(request);
-        checklist->src_addr = request->client_addr;
+#if FOLLOW_X_FORWARDED_FOR
+        if (Config.onoff.acl_uses_indirect_client)
+            checklist->src_addr = request->indirect_client_addr;
+        else
+#endif /* FOLLOW_X_FORWARDED_FOR */
+            checklist->src_addr = request->client_addr;
         checklist->my_addr = request->my_addr;
     }
 
index 1780ba646c95265fe7859268cfedbab52e9183eb..28c65348799e87c996e0a4eda0fec505e01f4948 100644 (file)
@@ -52,29 +52,36 @@ ACLIP::operator delete (void *address)
     fatal ("ACLIP::operator delete: unused");
 }
 
+/**
+ * Writes an IP ACL data into a buffer, then copies the buffer into the wordlist given
+ *
+ \param ip     ACL data structure to display
+ \param state  wordlist structure which is being generated
+ */
 void
 ACLIP::DumpIpListWalkee(acl_ip_data * const & ip, void *state)
 {
-    char tmpbuf[MAX_IPSTRLEN];
+    char tmpbuf[ ((MAX_IPSTRLEN*2)+6) ]; // space for 2 IPs and a CIDR mask(3) and seperators(3).
     MemBuf mb;
     wordlist **W = static_cast<wordlist **>(state);
-    mb.init();
-    mb.Printf("%s", ip->addr1.NtoA(tmpbuf,MAX_IPSTRLEN));
+    tmpbuf[0] = '\0';
 
-    if (!ip->addr2.IsAnyAddr())
-        mb.Printf("-%s", ip->addr2.NtoA(tmpbuf,MAX_IPSTRLEN));
-
-    if (!ip->mask.IsNoAddr())
-        mb.Printf("/%s", ip->mask.NtoA(tmpbuf,MAX_IPSTRLEN));
+    mb.init();
+    assert(mb.max_capacity > 0 && 1==1 );
 
+    ip->toStr(tmpbuf, sizeof(tmpbuf) );
+    assert(mb.max_capacity > 0 && 2==2 );
+    mb.append(tmpbuf, strlen(tmpbuf) );
+    assert(mb.max_capacity > 0 && 3==3);
     wordlistAdd(W, mb.buf);
-
     mb.clean();
 }
 
-/*
- * aclIpDataToStr - print/format an acl_ip_data structure for
- * debugging output.
+/**
+ * print/format an acl_ip_data structure for debugging output.
+ *
+ \param buf    string buffer to write to
+ \param len    size of the buffer available
  */
 void
 acl_ip_data::toStr(char *buf, int len) const
@@ -88,8 +95,7 @@ acl_ip_data::toStr(char *buf, int len) const
     rlen = strlen(buf);
     b2 = buf + rlen;
 
-    if (!addr2.IsAnyAddr())
-    {
+    if (!addr2.IsAnyAddr()) {
         b2[0] = '-'; rlen++;
         addr2.NtoA(&(b2[1]), len - rlen );
         rlen = strlen(buf);
@@ -99,10 +105,13 @@ acl_ip_data::toStr(char *buf, int len) const
 
     b3 = buf + rlen;
 
-    if (!mask.IsNoAddr())
-    {
+    if (!mask.IsNoAddr()) {
         b3[0] = '/'; rlen++;
-        mask.NtoA(&(b3[1]), len - rlen );
+#if USE_IPV6
+        snprintf(&(b3[1]), (len-rlen), "%u", mask.GetCIDR() - (addr1.IsIPv4()?96:0) );
+#else
+        snprintf(&(b3[1]), (len-rlen), "%u", mask.GetCIDR() );
+#endif
     }
     else
         b3[0] = '\0';
@@ -363,22 +372,22 @@ acl_ip_data::FactoryParse(const char *t)
 #endif
 
     /* Decode addr1 */
-    if (!*addr1) {
+    if (!*addr1 || !(q->addr1 = addr1)) {
         debugs(28, 0, "aclIpParseIpData: unknown first address in '" << t << "'");
         delete q;
         self_destruct();
         return NULL;
     }
-    else q->addr1 = addr1;
 
     /* Decode addr2 */
-    if (*addr2 && !(q->addr2=addr2) ) {
+    if (!*addr2)
+       q->addr2.SetAnyAddr();
+    else if (!(q->addr2=addr2) ) {
         debugs(28, 0, "aclIpParseIpData: unknown second address in '" << t << "'");
         delete q;
         self_destruct();
         return NULL;
     }
-    else q->addr2 = addr2;
 
     /* Decode mask (NULL or empty means a exact host mask) */
     if (!DecodeMask(mask, q->mask, iptype)) {
index da842b0824eec2ec1c8c67fa6cc0b6c4fbf3c081..a7298e2b4f7c09f6472d2a67c9c9020ff700560f 100644 (file)
@@ -41,6 +41,7 @@
 #include "ACLRegexData.h"
 #include "ACLUserData.h"
 #include "client_side.h"
+#include "ident.h"
 
 ACLIdent::~ACLIdent()
 {
index 2a86c620b1a39c99d4d773b1f9258212c1d63845..21b29641ac25d6f59d55cf6b57b73c651b67ddf0 100644 (file)
@@ -40,7 +40,7 @@
 #include "Parsing.h"
 
 /* explicit instantiation required for some systems */
-template cbdata_type List< Range<int> >::CBDATA_List;
+template cbdata_type CbDataList< Range<int> >::CBDATA_CbDataList;
 
 void
 ACLIntRange::parse()
@@ -83,7 +83,7 @@ bool
 ACLIntRange::match(int i)
 {
     RangeType const toFind (i, i+1);
-    ListIterator<RangeType> iter(ranges);
+    CbDataListIterator<RangeType> iter(ranges);
 
     while (!iter.end()) {
         const RangeType & element = iter.next();
@@ -113,7 +113,7 @@ ACLIntRange::dump ()
 {
     wordlist *W = NULL;
     char buf[32];
-    ListIterator<RangeType> iter(ranges);
+    CbDataListIterator<RangeType> iter(ranges);
 
     while (!iter.end()) {
         const RangeType & element = iter.next();
index 18406f016cf03c156a47bd860b2364ed41235f7d..72d8b2b05841286d9bea1b0c4a84ffeebf43dd09 100644 (file)
@@ -36,7 +36,7 @@
 #define SQUID_ACLINTRANGE_H
 
 #include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
 #include "Range.h"
 
 /// \ingroup ACLAPI
@@ -55,7 +55,7 @@ public:
 
 private:
     typedef Range<int> RangeType;
-    ListContainer <RangeType> ranges;
+    CbDataListContainer <RangeType> ranges;
 };
 
 #endif /* SQUID_ACLINTRANGE_H */
index 992ca0ebd6e689f2cff43d4feeb4527282eabcd7..4d4988b1079c4e837731f6b9122c64b32a54a5c0 100644 (file)
@@ -163,7 +163,7 @@ ACLMaxUserIP::match(ACLChecklist *checklist)
 
     ti = match(checklist->auth_user_request, checklist->src_addr);
 
-    checklist->auth_user_request = NULL;
+    AUTHUSERREQUESTUNLOCK(checklist->auth_user_request, "ACLChecklist via ACLMaxUserIP");
 
     return ti;
 }
index c7dae825970da3f9869429368c5ebf64721314d6..f00e25412017c9c7a5e1033e724d021925471757 100644 (file)
@@ -64,15 +64,14 @@ ACLMethodData::match(HttpRequestMethod toFind)
 /* explicit instantiation required for some systems */
 
 /// \cond AUTODOCS-IGNORE
-template cbdata_type List<HttpRequestMethod>
-::CBDATA_List;
+template cbdata_type CbDataList<HttpRequestMethod>::CBDATA_CbDataList;
 /// \endcond
 
 wordlist *
 ACLMethodData::dump()
 {
     wordlist *W = NULL;
-    List<HttpRequestMethod> *data = values;
+    CbDataList<HttpRequestMethod> *data = values;
 
     while (data != NULL) {
         wordlistAdd(&W, RequestMethodStr(data->element));
@@ -85,12 +84,12 @@ ACLMethodData::dump()
 void
 ACLMethodData::parse()
 {
-    List<HttpRequestMethod> **Tail;
+    CbDataList<HttpRequestMethod> **Tail;
     char *t = NULL;
 
     for (Tail = &values; *Tail; Tail = &((*Tail)->next));
     while ((t = strtokFile())) {
-        List<HttpRequestMethod> *q = new List<HttpRequestMethod> (HttpRequestMethod(t, NULL));
+        CbDataList<HttpRequestMethod> *q = new CbDataList<HttpRequestMethod> (HttpRequestMethod(t, NULL));
         *(Tail) = q;
         Tail = &q->next;
     }
index 0be431e3190187de2fd92164800b631ba467fbae..5ac338e7c6ed6e711cfe30de1317fb81bb4d0021 100644 (file)
@@ -37,7 +37,7 @@
 
 #include "ACL.h"
 #include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
 
 /// \ingroup ACLAPI
 class ACLMethodData : public ACLData<HttpRequestMethod>
@@ -56,7 +56,7 @@ public:
     bool empty() const;
     virtual ACLData<HttpRequestMethod> *clone() const;
 
-    List<HttpRequestMethod> *values;
+    CbDataList<HttpRequestMethod> *values;
 };
 
 MEMPROXY_CLASS_INLINE(ACLMethodData);
index a17ac99a4f03e341d7c50ef727104c58e67a2ca1..db567b45498f1858dccdd257b4206bd322ef3087 100644 (file)
@@ -63,14 +63,14 @@ ACLProtocolData::match(protocol_t toFind)
 /* explicit instantiation required for some systems */
 
 /// \cond AUTODOCS-IGNORE
-template cbdata_type List<protocol_t>::CBDATA_List;
+template cbdata_type CbDataList<protocol_t>::CBDATA_CbDataList;
 /// \endcond
 
 wordlist *
 ACLProtocolData::dump()
 {
     wordlist *W = NULL;
-    List<protocol_t> *data = values;
+    CbDataList<protocol_t> *data = values;
 
     while (data != NULL) {
         wordlistAdd(&W, ProtocolStr[data->element]);
@@ -83,12 +83,12 @@ ACLProtocolData::dump()
 void
 ACLProtocolData::parse()
 {
-    List<protocol_t> **Tail;
+    CbDataList<protocol_t> **Tail;
     char *t = NULL;
 
     for (Tail = &values; *Tail; Tail = &((*Tail)->next));
     while ((t = strtokFile())) {
-        List<protocol_t> *q = new List<protocol_t> (urlParseProtocol(t));
+        CbDataList<protocol_t> *q = new CbDataList<protocol_t> (urlParseProtocol(t));
         *(Tail) = q;
         Tail = &q->next;
     }
index 1a162e4900deb8e744c1d215c9eec430abb1121e..2e7b1201188d8c84ca765f721470caae799e3957 100644 (file)
@@ -37,7 +37,7 @@
 #define SQUID_ACLPROTOCOLDATA_H
 #include "ACL.h"
 #include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
 
 class ACLProtocolData : public ACLData<protocol_t>
 {
@@ -55,7 +55,7 @@ public:
     bool empty() const;
     virtual ACLData<protocol_t> *clone() const;
 
-    List<protocol_t> *values;
+    CbDataList<protocol_t> *values;
 };
 
 MEMPROXY_CLASS_INLINE(ACLProtocolData);
index b86aac744466043b8b1a3cd5d1846109bfafc1fc..354f8dceea2d465ddd070a69d0153ca045c883d2 100644 (file)
@@ -215,7 +215,7 @@ ACLProxyAuth::matchProxyAuth(ACLChecklist *checklist)
     /* check to see if we have matched the user-acl before */
     int result = cacheMatchAcl(&checklist->auth_user_request->user()->
                                proxy_match_cache, checklist);
-    checklist->auth_user_request = NULL;
+    AUTHUSERREQUESTUNLOCK(checklist->auth_user_request, "ACLChecklist via ACLProxyAuth");
     return result;
 }
 
index 39a5035607e9f2a397feaf285a016199dad1c90d..6b63f81aff93a5254c3dbcfd1020416469c65154 100644 (file)
@@ -29,13 +29,13 @@ ACLSslErrorData::match(ssl_error_t toFind)
 
 /* explicit instantiation required for some systems */
 
-template cbdata_type List<ssl_error_t>::CBDATA_List;
+template cbdata_type CbDataList<ssl_error_t>::CBDATA_CbDataList;
 
 wordlist *
 ACLSslErrorData::dump()
 {
     wordlist *W = NULL;
-    List<ssl_error_t> *data = values;
+    CbDataList<ssl_error_t> *data = values;
 
     while (data != NULL) {
         wordlistAdd(&W, sslFindErrorString(data->element));
@@ -48,12 +48,12 @@ ACLSslErrorData::dump()
 void
 ACLSslErrorData::parse()
 {
-    List<ssl_error_t> **Tail;
+    CbDataList<ssl_error_t> **Tail;
     char *t = NULL;
 
     for (Tail = &values; *Tail; Tail = &((*Tail)->next));
     while ((t = strtokFile())) {
-        List<ssl_error_t> *q = new List<ssl_error_t>(sslParseErrorString(t));
+        CbDataList<ssl_error_t> *q = new CbDataList<ssl_error_t>(sslParseErrorString(t));
         *(Tail) = q;
         Tail = &q->next;
     }
index 54230cd6ccecd922fc33ca17eda3ef6cb066bc46..0e13ffa814074a3b6b428df758d217ee4885b59e 100644 (file)
@@ -7,7 +7,7 @@
 #define SQUID_ACLSSL_ERRORDATA_H
 #include "ACL.h"
 #include "ACLData.h"
-#include "List.h"
+#include "CbDataList.h"
 #include "ssl_support.h"
 
 class ACLSslErrorData : public ACLData<ssl_error_t>
@@ -26,7 +26,7 @@ public:
     bool empty() const;
     virtual ACLData<ssl_error_t> *clone() const;
 
-    List<ssl_error_t> *values;
+    CbDataList<ssl_error_t> *values;
 };
 
 MEMPROXY_CLASS_INLINE(ACLSslErrorData);
index 574d684895e6621d34b836b573581d488376fefb..e26facd6e8afb6687c4a862b84170c82d5069cf9 100644 (file)
@@ -40,7 +40,6 @@
 #include "HttpRequestMethod.h"
 
 /* forward decls */
-class CacheManager;
 class HttpReply;
 class HttpRequest;
 
@@ -78,7 +77,8 @@ public:
 
     public:
         CacheDetails() : caddr(),
-                size(0),
+                requestSize(0),
+                replySize(0),
                 highOffset(0),
                 objectSize(0),
                 code (LOG_TAG_NONE),
@@ -93,7 +93,8 @@ public:
         }
 
         IPAddress caddr;
-        int64_t size;
+        int64_t requestSize;
+        int64_t replySize;
         int64_t highOffset;
         int64_t objectSize;
         log_type code;
@@ -142,7 +143,6 @@ extern void accessLogLog(AccessLogEntry *, ACLChecklist * checklist);
 extern void accessLogRotate(void);
 extern void accessLogClose(void);
 extern void accessLogInit(void);
-extern void accessLogRegisterWithCacheManager(CacheManager & manager);
 extern void accessLogFreeMemory(AccessLogEntry * aLogEntry);
 extern const char *accessLogTime(time_t);
 extern int accessLogParseLogFormat(logformat_token ** fmt, char *def);
diff --git a/src/AsyncCalls.dox b/src/AsyncCalls.dox
new file mode 100644 (file)
index 0000000..b0be201
--- /dev/null
@@ -0,0 +1,91 @@
+/**
+\defgroup AsyncCalls Asynchronous Calls
+\ingroup Components
+
+\section Terminology Terminology
+
+- \b Call: an AsyncCall object meant to be delivered from the Caller to the
+  Recipient.
+- \b Recipient: the code being the destination of the Call. The specific
+  function receiving the call is often called "handler".
+- \b Caller: the code scheduling or placing the Call.
+- \b Creator: the code creating the Call.
+- \b Dialing: the final act of delivering the Call to the Recipient.
+- \b Canceling: preventing the call from being dialed in the future.
+- <b>Pending call</b>: the call which has been scheduled but no attempt to dial
+  it has been made.
+- <b>Live call</b>: the in-progress call that has been dialed and the Recipient
+  (receiving) function has not finished yet.
+
+
+\section Life Typical life cycle
+
+-# Creator creates a Call object and stores its pointer, possibly in a
+temporary variable. If Creator is the future Recipient of the Call, it
+is customary to talk about a "callback". In such context, Creator gives
+the Call pointer to some other code (the future Caller). Calls are
+refcounted and the AsyncCall::Pointer class must be used to point and
+share them.
+-# Time passes and something triggers the need to dial the call.
+-# Caller schedules (a.k.a, places) the Call. The Call is placed in the
+AsyncCallQueue. The queue preserves the scheduling call order.
+-# Time passes and it is now time to dial the call.
+-# AsyncCallQueue checks whether the call can be dialed. If yes,
+AsyncCallQueue dials the Call and the Recipient receives it. Otherwise,
+only a debugging message is logged (if enabled). Dialing a call involves
+several state checks at several stages, depending on the Call type.
+-# The Call is alive while the Recipient is handling it. That state ends
+when the Recipient code (a.k.a., handler) returns. At that point, the
+AsyncCallQueue proceeds to handle other calls.
+-# The Call object is destroyed when the last reference to it is gone.
+One should not try to invalidate or delete the call.
+
+
+\section Rules Basic rules
+
+- Callbacks must be called: If a Caller has a Call pointer as a
+callback, the Caller must make that Call when conditions are right
+(possibly with a call-specific error indicator). Whether that Call will
+be dialed is irrelevant here.
+
+- Unwanted calls must be canceled: If Recipient may not be able to
+handle the call back, then it must cancel it.  Whether that Call will be
+scheduled is irrelevant here. If the Recipient has an AsyncCall pointer,
+calling AsyncCall::cancel is sufficient, but the code should use
+call-specific APIs when possible (e.g., comm_read_cancel or comm_close).
+
+- Processed calls should be forgotten: If you scheduled, received, or
+cancel the call, set its pointer to NULL. The Caller should forget the
+call after scheduling it. the recipient should forget the call when it
+receives or cancels it. These are just cleanup rules to avoid
+double-scheduling or double-cancellation as well as situations where the
+code assumes it can still change a pending Call (which will not work for
+SMP code).
+
+- The calls are received in the order they were scheduled.
+
+- The Recipient is guaranteed to receive at most one Call at a time. An
+attempt to dial call B while some call A is alive is a bug, and call B
+will not be dialed.
+
+
+\section Canceling Call Canceling
+
+- A call may be canceled at any time.
+
+- A canceled call will not be dialed. 
+
+- Cancellation has immediate effect: The call will never be dialed
+after cancel() is called
+
+- Cancellation by non-Recipients is discouraged because it may not work
+in an SMP environment.
+
+- A late call cancellation is cancellation that is performed after the Call
+has already been dialed (i.e., the call is or was alive at the time of the
+cancellation).  Late cancellation is a no-op. It is not a bug to cancel
+something late, but the canceling code should be aware of that possibility.
+
+
+*/
index 0f2e043853e0ecaf6c83727b2fff5512514b0526..dd250fb027067dd1f5531f140b1eb03bb4c2ccdf 100644 (file)
@@ -77,5 +77,5 @@ AuthConfig::Find(const char *proxy_auth)
 
 /* Default behaviour is to expose nothing */
 void
-AuthConfig::registerWithCacheManager(CacheManager & manager)
+AuthConfig::registerWithCacheManager(void)
 {}
index a528ca98e003299628e6f79c51e555a70abb3ace..206a8507f1e62ccca489030daa41ca2c29547dbb 100644 (file)
@@ -36,7 +36,6 @@ class AuthUserRequest;
 class StoreEntry;
 class HttpReply;
 class HttpRequest;
-class CacheManager;
 
 /* for http_hdr_type parameters-by-value */
 #include "HttpHeader.h"
@@ -114,7 +113,7 @@ public:
     /** prepare to handle requests */
     virtual void init(AuthConfig *) = 0;
     /** expose any/all statistics to a CacheManager */
-    virtual void registerWithCacheManager(CacheManager & manager);
+    virtual void registerWithCacheManager(void);
     /** parse config options */
     virtual void parse(AuthConfig *, int, char *) = 0;
     /** the http string id */
index 9954764278962ae904a6e4cf58feed69d3dd1366..e9caf9482efef27e9615a6afeefb5afb04f796a9 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * $Id: AuthUser.cc,v 1.10 2007/12/14 23:11:45 amosjeffries Exp $
  *
index efc687c08a4275a1b25966cae22ff36ebad74280..cda942690911ab2b82ab44b5a5bb4a91e7617115 100644 (file)
 #define SQUID_CACHEMANAGER_H
 
 #include "squid.h"
+#include "Array.h"
 
 /**
  \defgroup CacheManagerAPI Cache Manager API
  \ingroup Components
- */
-
-/// \ingroup CacheManagerAPI
-extern void cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry);
 
-/**
+ \defgroup CacheManagerInternal Cache Manager intenal API (not for public use)
  \ingroup CacheManagerAPI
- * A single menu item in the cache manager - an 'action'.
  */
-class CacheManagerAction
-{
 
-public:
-    char *action;
-    char *desc;
-    OBJH *handler;
+/**
+ \ingroup CacheManagerInternal
+ * The basic action handler. Its virtual method run(StoreEntry *) is invoked
+ * to perform the actual action.
+ */
+class CacheManagerAction {
+public:    
+     virtual void run(StoreEntry *sentry) = 0;
+     char *action;
+     char *desc;
+     struct
+     {
+         unsigned int pw_req:1;
+         unsigned int atomic:1;
+     } flags;
+     virtual ~CacheManagerAction();
+     CacheManagerAction(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic);
 
-    struct
-    {
-        unsigned int pw_req:1;
-        unsigned int atomic:1;
-    } flags;
+};
 
-    CacheManagerAction *next;
+/**
+ \ingroup CacheManagerInternal
+ * wrapper allowing c-style callbacks to be used. Arguments are supposed to
+ * managed by the caller.
+ * This object is generated by CacheManager::registerAction
+ */
+class CacheManagerActionLegacy : public CacheManagerAction {
+public:
+     OBJH *handler;
+     virtual void run (StoreEntry *sentry);
+     CacheManagerActionLegacy(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic, OBJH *aHandler);
 };
 
 
@@ -72,12 +85,12 @@ public:
  * This is currently just an adapter to the global cachemgr* routines to
  * provide looser coupling between modules, but once fully transitioned,
  * an instance of this class will represent a single independent manager.
+ * TODO: update documentation to reflect the new singleton model.
  */
 class CacheManager
 {
 
 public:
-    CacheManager();
     /* the holy trinity - assignment, copy cons, destructor */
     /* unimplemented - prevents bugs from synthetic */
     CacheManager & operator = (CacheManager &);
@@ -86,8 +99,71 @@ public:
     /* inline so that we dont need to link in cachemgr.cc at all in tests */
     virtual ~CacheManager() {}
 
-    virtual void registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic);
-    virtual CacheManagerAction * findAction(char const * action);
+    void registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic);
+    void registerAction(CacheManagerAction *anAction);
+    CacheManagerAction * findAction(char const * action);
+
+    void Start(int fd, HttpRequest * request, StoreEntry * entry);
+
+    static CacheManager* GetInstance();
+    const char *ActionProtection(const CacheManagerAction * at);
+
+protected:
+    // command classes. They are private to the cachemanager, they
+    // may require access to local data, plus we avoid polluting
+    // the namespace more than needed.
+    class ShutdownAction : public CacheManagerAction {
+    public:
+         virtual void run (StoreEntry *sentry);
+         ShutdownAction();
+    };
+    class ReconfigureAction : public CacheManagerAction {
+    public:
+         virtual void run (StoreEntry *sentry);
+         ReconfigureAction();
+    };
+    class OfflineToggleAction : public CacheManagerAction {
+    public:
+         virtual void run (StoreEntry *sentry);
+         OfflineToggleAction();
+    };
+    class MenuAction : public CacheManagerAction {
+    private:
+         //needs to reference the cachemgr in order to get to ActionsList
+         CacheManager *cmgr;
+    public:
+         virtual void run (StoreEntry *sentry);
+         MenuAction(CacheManager *); 
+
+    };
+
+    /// \ingroup CacheManagerInternal
+    typedef struct
+    {
+        StoreEntry *entry;
+        char *action;
+        char *user_name;
+        char *passwd;
+    } cachemgrStateData;
+
+
+    CacheManager(); 
+    cachemgrStateData* ParseUrl(const char *url);
+    void ParseHeaders(cachemgrStateData * mgr, const HttpRequest * request);
+    int CheckPassword(cachemgrStateData * mgr);
+    char *PasswdGet(cachemgr_passwd *, const char *);
+
+    // \ingroup CacheManagerInternal
+    typedef Vector<CacheManagerAction *> CacheManagerActionList;
+    CacheManagerActionList ActionsList;
+
+
+private:
+    static CacheManager* instance;
+
+    void StateFree(cachemgrStateData * mgr);
+
+
 };
 
 #endif /* SQUID_CACHEMANAGER_H */
diff --git a/src/Comm.dox b/src/Comm.dox
new file mode 100644 (file)
index 0000000..55eb1ec
--- /dev/null
@@ -0,0 +1,182 @@
+/**
+\defgroup Comm Comm Module
+\ingroup Components
+
+\section Basic Basic Comm API principles
+
+  \par
+  Comm API supports four major kinds of socket-related operations:
+  accept, connect, read, and write. Sockets are identified by their
+  descriptors.
+
+  \par
+  A Comm user requests its interest in operations by calling an
+  appropriate API function (e.g., comm_read()) and optionally providing
+  a notification "callback" (a.k.a., handler). For a given descriptor,
+  there can be no more than one registered user per operation.
+
+  \par
+  In addition to the four operations listed above, a user can register
+  to be notified when a given descriptor is closed.
+
+  \par
+  When a Comm operation completes, all users that registered the
+  corresponding handler are notified. When a descriptor is closed, all
+  users that registered any callback for the descriptor are notified
+  (this will change though, see "Anticipated changes" below).
+
+  \par
+  All Comm notifications are asynchronous, performed using the
+  AsyncCall API.
+
+  \par
+  Notifications for four operations listed above are scheduled in the
+  order of the corresponding operations completion. User code can assume
+  that the operation has completed (possibly with an error) only after
+  receiving a notification. Until then, I/O resources such as buffers
+  must remain available for the operation.
+
+  \par
+  Notifications related to closing of a descriptor are documented
+  separately.
+
+
+\section IO-cancel I/O cancellation
+
+  \par
+  To cancel an interest in a read operation, call comm_read_cancel()
+  with an AsyncCall object. This call guarantees that the passed Call
+  will be canceled (see the AsyncCall API for call cancellation
+  definitions and details). Naturally, the code has to store the
+  original read callback Call pointer to use this interface. 
+
+  \par
+  The comm_read_cancel() call does not guarantee that the read operation
+  has not already happen.
+
+  \par
+  The comm_read_cancel() call guarantees that the read operation will not
+  start for read operations that are performed by Comm (i.e., where read
+  start is controlled by Comm).  There is no such guarantee for
+  asynchronous read operations scheduled by Comm but started by the
+  operating system or other threads.
+
+  \par
+  The above applies to comm_read_cancel() interface with an AsyncCall
+  object as a parameter. You cannot reliably cancel an interest in read
+  operation using the old comm_read_cancel() call that uses a function
+  pointer. The handler may get even called after old comm_read_cancel()
+  was called.
+
+  \par
+  It is OK to call comm_read_cancel (both flavors) at any time as long
+  as the descriptor has not been closed and there is either no read
+  interest registered or the passed parameters match the registered
+  ones. If the descriptor has been closed, the behavior is undefined.
+  Otherwise, if parameters do not match, you get an assertion.
+
+  \par
+  To cancel Comm operations other than read, close the descriptor with
+  comm_close().
+
+
+\section comm-close Descriptor closing with comm_close
+
+  \par
+  The comm_close() function does not close the descriptor but initiates
+  the following closing sequence:
+
+  \par
+      -# The descriptor is placed in a "closing" state.
+      -# The registered read, write, and accept callbacks (if any) are
+         scheduled (in an unspecified order).
+      -# The close callbacks are scheduled (in an unspecified order).
+      -# A call to the internal descriptor closing handler is
+         scheduled.
+
+  \par
+  The "unspecified" order above means that the user should not rely on
+  any specific or deterministic order because the currently hard-coded
+  order may change.
+
+  \par
+  The read, write, and accept notifications (scheduled in step #2
+  above) carry the COMM_ERR_CLOSING error flag. When handling
+  COMM_ERR_CLOSING event, the user code should limit
+  descriptor-related processing, especially Comm calls, because
+  supported Comm functionality is very limited when the descriptor is
+  closing. New code should use the close handlers instead (scheduled
+  in step #3).
+
+  \par
+  The internal closing handler (scheduled in step #4 above) closes the
+  descriptor. When the descriptor is closed, all operations on the
+  descriptor are prohibited and may cause bugs and asserts. Currently,
+  the same descriptor will eventually be reused for another socket and
+  Comm may not notice that a buggy code is still using a stale
+  descriptor, but that may change.
+
+  \par
+  Since all notifications are asynchronous, it is possible for a read
+  or write notification that was scheduled before comm_close() was
+  called to arrive at its destination after comm_close() was called.
+  Such notification will arrive with COMM_ERR_CLOSING flag even though
+  that flag was not set at the time of the I/O (and the I/O may have
+  been successful). This behavior may change.
+
+
+\section Future Anticipated changes and preparation recommendations
+
+  \par
+  This section lists anticipated Comm API changes and provides
+  recommendations for developers writing new (or rewriting old) Comm
+  user code. The changes are listed in a rough order from more likely
+  to less certain and from near-feature to long-term.
+
+  \par
+  The old comm_read_cancel() function that uses a function pointer will be
+  removed as unreliable. Use the AsyncCall-based comm_read_cancel()
+  instead.
+
+  \par
+  COMM_ERR_CLOSING interface will be removed. The read, write, and
+  accept notifications will not be scheduled after comm_close() is
+  called.  New user code should register close handlers instead.
+
+  \par
+  When COMM_ERR_CLOSING interface is removed, pending notifications
+  (if any) will be canceled after comm_close() is called. However, the
+  cancellation may be removed later if Comm is modified to provide safe
+  access to closing descriptors and their fragile state. New user code
+  should continue to assume that it is safe to access Comm in a read,
+  write, and accept handlers.
+
+  \par
+  The old comm_read_cancel() call that uses a function pointer will be
+  removed as unreliable. New user code should use comm_read_cancel() with
+  an AsyncCall parameter.
+
+  \par
+  Comm users may be required to become children of Comm-provided
+  classes, to eliminate the need for a complicated (albeit hidden)
+  hierarchy of Comm callback dialers (see CommCalls.h) and to provide
+  default implementation for common I/O handling cases.  New user code
+  should use methods of AsyncJob-derived classes to handle Comm
+  notifications instead of using stand-alone functions. Additionally, it
+  should not call comm_close() for descriptors it does not "own".
+
+  \par
+  The comm_close() API will be used exclusively for "stop future I/O,
+  schedule a close callback call, and cancel all other callbacks"
+  purposes. New user code should not use comm_close() for the purpose of
+  immediately ending a job.
+
+  \par
+  Raw socket descriptors will be replaced with unique IDs or small
+  objects that help detect stale descriptor/socket usage bugs and
+  encapsulate access to socket-specific information. New user code
+  should treat descriptor integers as opaque objects.
+
+
+ */
index b5593efb559201db96c7deaf9d44ffcb31891a30..6e5abbd154ac7cd4e8cd0e911da9f20bf872036e 100644 (file)
@@ -1,4 +1,5 @@
 #include "squid.h"
+#include "fde.h"
 #include "CommCalls.h"
 
 /* CommCommonCbParams */
@@ -54,6 +55,17 @@ CommConnectCbParams::CommConnectCbParams(void *aData):
 {
 }
 
+bool
+CommConnectCbParams::syncWithComm()
+{
+    // drop the call if the call was scheduled before comm_close but
+    // is being fired after comm_close
+    if (fd >= 0 && fd_table[fd].closing()) {
+       debugs(5, 3, HERE << "droppin late connect call: FD " << fd);
+        return false;
+    }
+    return true; // now we are in sync and can handle the call
+}
 
 /* CommIoCbParams */
 
@@ -62,6 +74,20 @@ CommIoCbParams::CommIoCbParams(void *aData): CommCommonCbParams(aData),
 {
 }
 
+bool
+CommIoCbParams::syncWithComm()
+{
+    // change parameters if the call was scheduled before comm_close but
+    // is being fired after comm_close
+    if (fd >= 0 && fd_table[fd].closing() && flag != COMM_ERR_CLOSING) {
+       debugs(5, 3, HERE << "converting late call to COMM_ERR_CLOSING: FD " << fd);
+       flag = COMM_ERR_CLOSING;
+       size = 0;
+    }
+    return true; // now we are in sync and can handle the call
+}              
+
+
 void
 CommIoCbParams::print(std::ostream &os) const
 {
index afb112abba52cb89a0f9531209018c9310fdbd83..0a815072030151506517da91883f8b8446bdfd8c 100644 (file)
@@ -41,6 +41,10 @@ public:
     CommCommonCbParams(const CommCommonCbParams &params);
     ~CommCommonCbParams();
 
+    /// adjust using the current Comm state; returns false to cancel the call
+    // not virtual because callers know dialer type
+    bool syncWithComm() { return true; } 
+
     void print(std::ostream &os) const;
 
 public:
@@ -70,6 +74,8 @@ public:
 class CommConnectCbParams: public CommCommonCbParams {
 public:
     CommConnectCbParams(void *aData);
+
+    bool syncWithComm(); // see CommCommonCbParams::syncWithComm
 };
 
 // read/write (I/O) parameters
@@ -78,6 +84,7 @@ public:
     CommIoCbParams(void *aData);
 
     void print(std::ostream &os) const;
+    bool syncWithComm(); // see CommCommonCbParams::syncWithComm
 
 public:
     char *buf;
@@ -129,6 +136,9 @@ public:
     CommCbMemFunT(C *obj, Method meth): JobDialer(obj),
         CommDialerParamsT<Params>(obj), object(obj), method(meth) {}
 
+    virtual bool canDial(AsyncCall &c) { return JobDialer::canDial(c) && 
+        this->params.syncWithComm(); }
+
     virtual void print(std::ostream &os) const {
         os << '('; this->params.print(os); os << ')'; }
 
@@ -278,6 +288,9 @@ CommCbFunPtrCallT<Dialer>::canFire()
     if (!cbdataReferenceValid(dialer.params.data))
         return cancel("callee gone");
 
+    if (!dialer.params.syncWithComm())
+        return cancel("out of sync w/comm");
+
     return true;
 }
 
index 6b7d2a24f86e828d2bf4017efc9dfedddd31f183..42d83334a76634179c2de5bbf76135658a8a75c9 100644 (file)
@@ -43,7 +43,7 @@
 #include "squid.h"
 #include "comm.h"
 #include "CommCalls.h"
-#include "List.h"
+#include "CbDataList.h"
 
 class CommRead
 {
@@ -92,10 +92,10 @@ public:
 
 private:
     static PF CloseHandler;
-    static DeferredRead popHead(ListContainer<DeferredRead> &deferredReads);
+    static DeferredRead popHead(CbDataListContainer<DeferredRead> &deferredReads);
     void kickARead(DeferredRead const &);
     void flushReads();
-    ListContainer<DeferredRead> deferredReads;
+    CbDataListContainer<DeferredRead> deferredReads;
 };
 
 
index e773c27048b6ed3c5cac2bcee7c669d1cac1775a..2f166fe683353ed21c4718985bd8c7dfa3f7f777 100644 (file)
@@ -110,7 +110,7 @@ ConfigParser::strtokFile(void)
 
         /* skip comments */
         /* skip blank lines */
-    } while( *t != '#' && !*t );
+    } while( *t == '#' || !*t );
 
     return t;
 }
index 7e12eb6ecbb386dc036c14157ac80e560a4a36dc..20055bbb4f430eeab490b8e4c837df5a1e356e26 100644 (file)
 
 #include "squid.h"
 
-/* forward decls */
-
-class CacheManager;
-
 /*
  * A configuration file Parser. Instances of this class track
  * parsing state and perform tokenisation. Syntax is currently
@@ -66,6 +62,6 @@ public:
     static char * strtokFile();
 };
 
-extern int parseConfigFile(const char *file_name, CacheManager & manager);
+extern int parseConfigFile(const char *file_name);
 
 #endif /* SQUID_CONFIGPARSER_H */
index a1b985292cc969ff67067d7ca48da9b4a8b46186..4e9cb1e66ec2b4de547d2eb20d5b5256e65317ac 100644 (file)
@@ -105,8 +105,14 @@ DelayId::DelayClient(ClientHttpRequest * http)
         return DelayId();
     }
 
-    for (pool = 0; pool < DelayPools::pools(); pool++) {
+    for (pool = 0; pool < DelayPools::pools(); pool++)
+    {
         ACLChecklist ch;
+#if FOLLOW_X_FORWARDED_FOR
+    if (Config.onoff.delay_pool_uses_indirect_client)
+        ch.src_addr = r->indirect_client_addr;
+    else
+#endif /* FOLLOW_X_FORWARDED_FOR */        
         ch.src_addr = r->client_addr;
         ch.my_addr = r->my_addr;
 
index 4d4c271361cc4deb7e7b1e5b4a334730d0a3e191..42eb81f7c4a9a4aa2f3f7e9c3f94cad9387263b0 100644 (file)
@@ -50,7 +50,6 @@ public:
 };
 
 /* forward decls */
-class CacheManager;
 class DelayPool;
 class Updateable;
 class StoreEntry;
@@ -64,7 +63,6 @@ class DelayPools
 
 public:
     static void Init();
-    static void RegisterWithCacheManager(CacheManager & manager);
     static void Update(void *);
     static unsigned short pools();
     static void pools (u_short pools);
@@ -82,6 +80,7 @@ private:
     static unsigned short pools_;
     static void FreeDelayData ();
     static Vector<Updateable *> toUpdate;
+    static void RegisterWithCacheManager(void);
 };
 
 #endif /* SQUID_DELAYPOOLS_H */
diff --git a/src/DescriptorSet.cc b/src/DescriptorSet.cc
new file mode 100644 (file)
index 0000000..3bd2b6a
--- /dev/null
@@ -0,0 +1,96 @@
+
+/*
+ * $Id$
+ *
+ * DEBUG: section 5     Comm
+ */
+
+#include "DescriptorSet.h"
+
+// pre-allocates descriptor store and index for Squid_MaxFD descriptors
+DescriptorSet::DescriptorSet(): descriptors_(NULL), index_(NULL),
+    capacity_(0), size_(0)
+{
+    // we allocate once and never realloc, at least for now
+    capacity_ = Squid_MaxFD;
+    descriptors_ = new int[capacity_];
+    index_ = new int[capacity_];
+
+    // fill index with -1s to be able to say whether a descriptor is present
+    // it is not essential to fill the descriptors, but it enables more checks
+    for (int i = 0; i < capacity_; ++i)
+        index_[i] = descriptors_[i] = -1;
+}
+
+DescriptorSet::~DescriptorSet()
+{
+    delete[] descriptors_;
+    delete[] index_;
+}
+
+/// adds if unique; returns true if added
+bool
+DescriptorSet::add(int fd)
+{
+    assert(0 <= fd && fd < capacity_); // \todo: replace with Must()
+
+    if (has(fd))
+        return false; // already have it
+
+    assert(size_ < capacity_); // \todo: replace with Must()
+    const int pos = size_++;
+    index_[fd] = pos;
+    descriptors_[pos] = fd;
+    return true; // really added
+}
+
+/// deletes if there; returns true if deleted
+bool
+DescriptorSet::del(int fd)
+{
+    assert(0 <= fd && fd < capacity_); // \todo: here and below, use Must()
+
+    if (!has(fd))
+        return false; // we do not have it
+
+    assert(!empty());
+    const int delPos = index_[fd];
+    assert(0 <= delPos && delPos < capacity_);
+
+    // move the last descriptor to the deleted fd position
+    // to avoid skipping deleted descriptors in pop()
+    const int lastPos = size_-1;
+    const int lastFd = descriptors_[lastPos];
+    assert(delPos <= lastPos); // may be the same
+    descriptors_[delPos] = lastFd;
+    index_[lastFd] = delPos;
+
+    descriptors_[lastPos] = -1;
+    index_[fd] = -1;
+    --size_;
+
+    return true; // really added
+}
+
+/// ejects one descriptor in unspecified order
+int
+DescriptorSet::pop()
+{
+    assert(!empty());
+    const int lastPos =--size_;
+    const int lastFd = descriptors_[lastPos];
+    assert(0 <= lastFd && lastFd < capacity_);
+
+    // cleanup
+    descriptors_[lastPos] = -1;
+    index_[lastFd] = -1;
+
+    return lastFd;
+}
+
+void
+DescriptorSet::print(std::ostream &os) const
+{
+    // \todo add "name" if the set is used for more than just half-closed FDs
+    os << size_ << " FDs";
+}
diff --git a/src/DescriptorSet.h b/src/DescriptorSet.h
new file mode 100644 (file)
index 0000000..44846c7
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef SQUID_DESCRIPTOR_SET_H
+#define SQUID_DESCRIPTOR_SET_H
+
+#include "squid.h"
+
+/** \ingroup Comm
+
+    \todo: Should we use std::set<int> with its flexibility? Our implementation
+    has constant overhead, which is smaller than log(n) of std::set.
+
+an unordered collection of unique descriptors with O(1) add/del/has ops */
+class DescriptorSet {
+public:
+    // for STL compatibility, should we decide to switch to std::set or similar
+    typedef const int *const_iterator;
+
+    DescriptorSet();
+    ~DescriptorSet();
+
+    /// checks whether fd is in the set
+    bool has(const int fd) const { return 0 <= fd && fd < capacity_ &&
+        index_[fd] >= 0; }
+
+    bool add(int fd); ///< adds if unique; returns true if added
+    bool del(int fd); ///< deletes if there; returns true if deleted
+    int pop(); ///< deletes and returns one descriptor, in unspecified order
+
+    bool empty() const { return !size_; } ///< number of descriptors in the set
+
+    /// begin iterator a la STL; may become invalid if the object is modified
+    const_iterator begin() const { return descriptors_; }
+    /// end iterator a la STL; may become invalid if the object is modified
+    const_iterator end() const { return begin() + size_; }
+
+    /// outputs debugging info about the set
+    void print(std::ostream &os) const;
+
+private:
+    // these would be easy to support when needed; prohibit for now
+    DescriptorSet(const DescriptorSet &s); // declared but undefined
+    DescriptorSet &operator =(const DescriptorSet &s); // declared, undefined
+
+    int *descriptors_; ///< descriptor values in random order
+    int *index_; ///< descriptor:position index into descriptors_
+    int capacity_; ///< total number of descriptor slots
+    int size_; ///< number of descriptors in the set
+};
+
+/// convenience wrapper to be used in debugs() context
+inline std::ostream &
+operator <<(std::ostream &os, const DescriptorSet &ds)
+{
+    ds.print(os);
+    return os;
+}
+
+#endif /* SQUID_DESCRIPTOR_SET_H */
+
index a0aad76a16cfa50406a979eb681821e76051866b..0097fd79219127406cde8697d09df64e8f45c2c8 100644 (file)
@@ -69,12 +69,14 @@ DiskDaemonDiskIOModule::init()
     debugs(47, 1, "diskd started");
 #endif
     initialised = true;
+
+    registerWithCacheManager();
 }
 
 void
-DiskDaemonDiskIOModule::registerWithCacheManager(CacheManager & manager)
+DiskDaemonDiskIOModule::registerWithCacheManager(void)
 {
-    manager.registerAction("diskd", "DISKD Stats", Stats, 0, 1);
+    CacheManager::GetInstance()->registerAction("diskd", "DISKD Stats", Stats, 0, 1);
 }
 
 void
index 233812cd434f5288dd2f872340e77fc289ed95ce..0b7fca389b95672048f06eb662936b0db3a2660f 100644 (file)
@@ -43,7 +43,6 @@ public:
     static DiskDaemonDiskIOModule &GetInstance();
     DiskDaemonDiskIOModule();
     virtual void init();
-    virtual void registerWithCacheManager(CacheManager & manager);
     virtual void shutdown();
     virtual char const *type () const;
     virtual DiskIOStrategy* createStrategy();
@@ -52,6 +51,7 @@ private:
     static void Stats(StoreEntry * sentry);
     static DiskDaemonDiskIOModule Instance;
     bool initialised;
+    void registerWithCacheManager(void);
 };
 
 #endif /* SQUID_DISKDAEMONDISKIOMODULE_H */
index 866ebbcfd0915e25c6f8014018fef532382bda97..a9d77cd1b6c2bebd72d92e847033fb911bafa5f1 100644 (file)
@@ -48,13 +48,6 @@ DiskIOModule::DiskIOModule()
      */
 }
 
-void
-DiskIOModule::RegisterAllModulesWithCacheManager(CacheManager & manager)
-{
-    for (iterator i = GetModules().begin(); i != GetModules().end(); ++i)
-        (*i)->registerWithCacheManager(manager);
-}
-
 void
 DiskIOModule::SetupAllModules()
 {
@@ -130,7 +123,3 @@ DiskIOModule::FindDefault()
     return result;
 }
 
-/* disk modules dont export anything by default */
-void
-DiskIOModule::registerWithCacheManager(CacheManager & manager)
-{}
index fe3837315f4c8c59b4605b01c1c6b1a0b9be3255..98c284704555ea9a4b467849c8e942dbf0cadbfe 100644 (file)
@@ -47,7 +47,6 @@ class DiskIOModule
 {
 
 public:
-    static void RegisterAllModulesWithCacheManager(CacheManager & manager);
     static void SetupAllModules();
     static void ModuleAdd(DiskIOModule &);
     static void FreeAllModules();
@@ -63,7 +62,7 @@ public:
     virtual ~DiskIOModule(){}
 
     virtual void init() = 0;
-    virtual void registerWithCacheManager(CacheManager & manager);
+    //virtual void registerWithCacheManager(void);
     virtual void shutdown() = 0;
     virtual DiskIOStrategy *createStrategy() = 0;
 
@@ -74,6 +73,7 @@ public:
 
 protected:
     //bool initialised;
+    static void RegisterAllModulesWithCacheManager(void);
 
 private:
     static Vector<DiskIOModule*> &GetModules();
index 4fc53ba0899b558f1f6039976b328952d0a86972..5a07b426d5ecc727b9c3c96c34f77c2aef436f97 100644 (file)
@@ -53,12 +53,6 @@ DiskThreadsDiskIOModule::init()
     DiskThreadsIOStrategy::Instance.init();
 }
 
-void
-DiskThreadsDiskIOModule::registerWithCacheManager(CacheManager & manager)
-{
-    DiskThreadsIOStrategy::Instance.registerWithCacheManager(manager);
-}
-
 void
 DiskThreadsDiskIOModule::shutdown()
 {
index 6386e1a4ae0cfa5dc608fcccb19282981d224174..6f186191b39a7cb8f67b42defe08f2e289109f4e 100644 (file)
@@ -43,7 +43,7 @@ public:
     static DiskThreadsDiskIOModule &GetInstance();
     DiskThreadsDiskIOModule();
     virtual void init();
-    virtual void registerWithCacheManager(CacheManager & manager);
+    //virtual void registerWithCacheManager(void);
     virtual void shutdown();
     virtual char const *type () const;
     virtual DiskIOStrategy* createStrategy();
index 39343f7fcc9ce2bda7f879a22bc98847e0976f47..bbc5580cd396c1a9477af8596dfcc3499649b00a 100644 (file)
@@ -58,13 +58,16 @@ DiskThreadsIOStrategy::init(void)
      * hasn't been parsed yet and we don't know how many cache_dirs
      * there are, which means we don't know how many threads to start.
      */
+
+     registerWithCacheManager();
 }
 
 void
-DiskThreadsIOStrategy::registerWithCacheManager(CacheManager & manager)
+DiskThreadsIOStrategy::registerWithCacheManager(void)
 {
-    manager.registerAction("squidaio_counts", "Async IO Function Counters",
-                           aioStats, 0, 1);
+    CacheManager::GetInstance()->
+        registerAction("squidaio_counts", "Async IO Function Counters",
+                       aioStats, 0, 1);
 }
 
 void
index 2526f63881267437680576dc25b61ee2d706165e..73bb5802755db1df1b090a8d5a714a0bd0d2528e 100644 (file)
@@ -58,7 +58,6 @@ public:
     virtual int callback();
     virtual void sync();
     virtual void init();
-    virtual void registerWithCacheManager(CacheManager & manager);
     void done();
     /* Todo: add access limitations */
     bool initialised;
@@ -67,6 +66,7 @@ public:
 
 private:
     static void aioStats(StoreEntry * sentry);
+    void registerWithCacheManager(void);
 };
 
 #endif
index 3aa898e9b0f238e4f87df003b5df34610cf9aaf1..084a395b12b30ee67fafd29f7477476117b227c9 100644 (file)
@@ -1425,12 +1425,9 @@ ESIContext::ParserState::popAll()
 void
 ESIContext::freeResources ()
 {
-    debugs(86, 5, "ESIContext::freeResources: Freeing for this=" << this);
+    debugs(86, 5, HERE << "Freeing for this=" << this);
 
-    if (rep) {
-        delete rep;
-        rep = NULL;
-    }
+    HTTPMSGUNLOCK(rep);
 
     finishChildren ();
 
@@ -1468,7 +1465,7 @@ ESIContext::fail ()
     ErrorState * err = clientBuildError(errorpage, errorstatus, NULL, http->getConn()->peer, http->request);
     err->err_msg = errormessage;
     errormessage = NULL;
-    rep = errorBuildReply (err);
+    rep = err->BuildHttpReply();
     assert (rep->body.mb->contentSize() >= 0);
     size_t errorprogress = rep->body.mb->contentSize();
     /* Tell esiSend where to start sending from */
index 36bfbdbe5b8512313a7f494d4d37fba4d775a855..7924a63c4af467ac4a3cc63ad88aa57495f3a75f 100644 (file)
@@ -87,7 +87,7 @@ public:
     virtual bool addElement(ESIElement::Pointer)
     {
         /* Don't accept children */
-        debug (86,5)("ESIElement::addElement: Failed for %p\n",this);
+        debugs(86,5, "ESIElement::addElement: Failed for " << this);
         return false;
     }
 
@@ -95,7 +95,7 @@ public:
     /* process this element */
     virtual esiProcessResult_t process (int dovars)
     {
-        debug (86,5) ("esiProcessComplete: Processed %p\n",this);
+        debugs(86,5, "esiProcessComplete: Processed " << this);
         return ESI_PROCESS_COMPLETE;
     }
 
index 0e8041f7cc4b4e410b964391b20e037ea9fc4e1f..123b8bc01891d1ec01d0e580466494efd9f4b387 100644 (file)
@@ -67,14 +67,22 @@ esiBufferDetach (clientStreamNode *node, ClientHttpRequest *http)
     clientStreamDetach (node, http);
 }
 
-/*
- * Write a chunk of data to a client 'socket'. 
- * If the reply is present, send the reply headers down the wire too,
- * and clean them up when finished.
- * Pre-condition: 
+/**
+ * Write a chunk of data to a client 'socket'.
+ * If the reply is present, send the reply headers down the wire too.
+ *
+ * Pre-condition:
  *   The request is an internal ESI subrequest.
  *   data context is not NULL
  *   There are no more entries in the stream chain.
+ *   The caller is responsible for creation and deletion of the Reply headers.
+ * 
+ \note
+ * Bug 975, bug 1566 : delete rep; 2006/09/02: TS, #975
+ * 
+ * This was causing double-deletes. Its possible that not deleting
+ * it here will cause memory leaks, but if so, this delete should
+ * not be reinstated or it will trigger bug #975 again - RBC 20060903
  */
 void
 esiBufferRecipient (clientStreamNode *node, ClientHttpRequest *http, HttpReply *rep, StoreIOBuffer receivedData)
@@ -97,7 +105,7 @@ esiBufferRecipient (clientStreamNode *node, ClientHttpRequest *http, HttpReply *
     assert (receivedData.length <= sizeof(esiStream->localbuffer->buf));
     assert (!esiStream->finished);
 
-    debugs (86,5, "esiBufferRecipient rep " << rep << " body " << receivedData.data << " len " << receivedData.length);
+    debugs (86,5, HERE << "rep " << rep << " body " << receivedData.data << " len " << receivedData.length);
     assert (node->readBuffer.offset == receivedData.offset || receivedData.length == 0);
 
     /* trivial case */
@@ -119,15 +127,6 @@ esiBufferRecipient (clientStreamNode *node, ClientHttpRequest *http, HttpReply *
             headersLog(0, 0, http->request->method, rep);
 
 #endif
-
-            /* delete rep; 2006/09/02: TS, #975
-             * 
-             * This was causing double-deletes. Its possible that not deleting
-             * it here will cause memory leaks, but if so, this delete should
-             * not be reinstated or it will trigger bug #975 again - RBC
-             * 20060903
-             */
-
             rep = NULL;
         }
     }
@@ -154,7 +153,7 @@ esiBufferRecipient (clientStreamNode *node, ClientHttpRequest *http, HttpReply *
     /* EOF / Read error /  aborted entry */
     if (rep == NULL && receivedData.data == NULL && receivedData.length == 0) {
         /* TODO: get stream status to test the entry for aborts */
-        debugs(86, 5, "Finished reading upstream data in subrequest");
+        debugs(86, 5, HERE << "Finished reading upstream data in subrequest");
         esiStream->include->subRequestDone (esiStream, true);
         esiStream->finished = 1;
         httpRequestFree (http);
@@ -209,9 +208,8 @@ esiBufferRecipient (clientStreamNode *node, ClientHttpRequest *http, HttpReply *
             tempBuffer.length = sizeof (esiStream->buffer->buf);
             tempBuffer.data = esiStream->buffer->buf;
             /* now just read into 'buffer' */
-            clientStreamRead (node,
-                              http, tempBuffer);
-            debugs(86, 5, "esiBufferRecipient: Requested more data for ESI subrequest");
+            clientStreamRead (node, http, tempBuffer);
+            debugs(86, 5, HERE << "Requested more data for ESI subrequest");
         }
 
         break;
index d96ef1126c414a3507d61e752b7ae7bcb81a1b66..8b15be8bea419b6b59bdd144a774bac9eff9d8b8 100644 (file)
@@ -92,6 +92,4 @@ protected:
 
 MEMPROXY_CLASS_INLINE(ACLExternal);
 
-extern void externalAclRegisterWithCacheManager(CacheManager & manager);
-
 #endif /* SQUID_EXTERNALACL_H */
index a0bab13f85c9af70625b62f1e9aa1f7a585dd209..9d457c2db50b66f82f5e975ccdcac520ecc0065b 100644 (file)
@@ -236,10 +236,11 @@ static http_hdr_type RequestHeadersArr[] =
         HDR_USER_AGENT, HDR_X_FORWARDED_FOR, HDR_SURROGATE_CAPABILITY
     };
 
+static HttpHeaderMask HopByHopHeadersMask;
 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
+        HDR_CONNECTION, HDR_KEEP_ALIVE, /*HDR_PROXY_AUTHENTICATE,*/ HDR_PROXY_AUTHORIZATION,
+        HDR_TE, HDR_TRAILERS, HDR_TRANSFER_ENCODING, HDR_UPGRADE, HDR_PROXY_CONNECTION
     };
 
 /* header accounting */
@@ -271,6 +272,15 @@ static void httpHeaderStatDump(const HttpHeaderStat * hs, StoreEntry * e);
  * Module initialization routines
  */
 
+static void
+httpHeaderRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("http_headers",
+                       "HTTP Header Statistics",
+                       httpHeaderStoreReport, 0, 1);
+}
+
 void
 httpHeaderInitModule(void)
 {
@@ -304,6 +314,8 @@ httpHeaderInitModule(void)
 
     httpHeaderCalcMask(&RequestHeadersMask, EntityHeadersArr, countof(EntityHeadersArr));
 
+    httpHeaderCalcMask(&HopByHopHeadersMask, HopByHopHeadersArr, countof(HopByHopHeadersArr));
+
     /* init header stats */
     assert(HttpHeaderStatCount == hoReply + 1);
 
@@ -323,15 +335,8 @@ httpHeaderInitModule(void)
     httpHdrCcInitModule();
 
     httpHdrScInitModule();
-}
 
-void
-httpHeaderRegisterWithCacheManager(CacheManager & manager)
-{
-    /* register with cache manager */
-    manager.registerAction("http_headers",
-                           "HTTP Header Statistics",
-                           httpHeaderStoreReport, 0, 1);
+    httpHeaderRegisterWithCacheManager();
 }
 
 void
@@ -1773,11 +1778,16 @@ HttpHeader::removeHopByHopEntries()
 {
     removeConnectionHeaderEntries();
     
-    int count = countof(HopByHopHeadersArr);
-    
-    for (int i=0; i<count; i++)
-        delById(HopByHopHeadersArr[i]);    
-    
+    const HttpHeaderEntry *e;
+    HttpHeaderPos pos = HttpHeaderInitPos;
+    int headers_deleted = 0;
+    while ((e = getEntry(&pos))) {
+       int id = e->id;
+       if(CBIT_TEST(HopByHopHeadersMask, id)){
+           delAt(pos, headers_deleted);
+           CBIT_CLR(mask, id);
+       }
+    }
 }
 
 void
index ebb69cc40ce1f6cb0efbbe92bfd6ce5be40ffbf9..74225a9949e8b41821b44e80bd5f3381dc830a4e 100644 (file)
@@ -33,9 +33,6 @@
 #ifndef SQUID_HTTPHEADER_H
 #define SQUID_HTTPHEADER_H
 
-/* forward decls */
-
-class CacheManager;
 
 /* because we pass a spec by value */
 #include "HttpHeaderRange.h"
@@ -269,7 +266,6 @@ private:
 };
 
 
-extern void httpHeaderRegisterWithCacheManager(CacheManager & manager);
 extern int httpHeaderParseQuotedString (const char *start, String *val);
 SQUIDCEXTERN int httpHeaderHasByNameListMember(const HttpHeader * hdr, const char *name, const char *member, const char separator);
 SQUIDCEXTERN void httpHeaderUpdate(HttpHeader * old, const HttpHeader * fresh, const HttpHeaderMask * denied_mask);
index 7fb8050ab7fa5a57c0f1503e5045ee5167aad9cc..bfbd0b06fe709602d2cb7e6b7efdd5fdd851e3a5 100644 (file)
@@ -251,7 +251,7 @@ HttpReply::redirect(http_status status, const char *loc)
     HttpVersion ver(1,0);
     httpStatusLineSet(&sline, ver, status, httpStatusString(status));
     hdr = &header;
-    hdr->putStr(HDR_SERVER, full_appname_string);
+    hdr->putStr(HDR_SERVER, APP_FULLNAME);
     hdr->putTime(HDR_DATE, squid_curtime);
     hdr->putInt64(HDR_CONTENT_LENGTH, 0);
     hdr->putStr(HDR_LOCATION, loc);
index a6259c8686d6485ac74164e4b63ddf78e1c9ae11..3f17df12ec53dbb26f31fb993458ee045aa59cf8 100644 (file)
@@ -95,6 +95,9 @@ HttpRequest::init()
     extacl_passwd = null_string;
     extacl_log = null_string;
     pstate = psReadyToParseStartLine;
+#if FOLLOW_X_FORWARDED_FOR
+    indirect_client_addr.SetEmpty();
+#endif /* FOLLOW_X_FORWARDED_FOR */
 }
 
 void
index fd6292776b60a5787a292340da9fcaa9ddc86dec..2dcec900a3fd9ea86fe30a96839113a5818f07a3 100644 (file)
@@ -124,6 +124,10 @@ public:
 
     IPAddress client_addr;
 
+#if FOLLOW_X_FORWARDED_FOR
+    IPAddress indirect_client_addr;
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
     IPAddress my_addr;
 
     HierarchyLogEntry hier;
@@ -146,6 +150,10 @@ public:
 
     String extacl_log;         /* String to be used for access.log purposes */
 
+#if FOLLOW_X_FORWARDED_FOR
+    String x_forwarded_for_iterator; /* XXX a list of IP addresses */
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
 public:
     bool multipartRangeRequest() const;
 
index a846db22e5890ac95358c52166dd12e3fe7ceac2..710b44273fafa43804c6a575f2caa5327c2ec48a 100644 (file)
@@ -189,6 +189,10 @@ HttpRequestMethod::image() const
 bool 
 HttpRequestMethod::isCacheble() const
 {
+    // TODO: optimize the lookup with a precomputed flags array
+    // XXX: the list seems wrong; e.g., Is METHOD_DELETE really cachable?
+    // see also http.cc::httpCachable()
+
     if (theMethod == METHOD_CONNECT)
         return false;
 
@@ -206,3 +210,49 @@ HttpRequestMethod::isCacheble() const
     
     return true;
 }
+
+bool 
+HttpRequestMethod::purgesOthers() const
+{
+    // TODO: optimize the lookup with a precomputed flags array
+
+    switch (theMethod) {
+        /* common sense suggests purging is not required? */
+        case METHOD_GET:     // XXX: but we do purge HEAD on successful GET   
+        case METHOD_HEAD:
+        case METHOD_NONE:
+        case METHOD_CONNECT:
+        case METHOD_TRACE:
+        case METHOD_OPTIONS:
+        case METHOD_PROPFIND:
+        case METHOD_BPROPFIND:
+        case METHOD_COPY:
+        case METHOD_BCOPY:
+        case METHOD_LOCK:
+        case METHOD_UNLOCK:
+        case METHOD_SEARCH:
+            return false;
+
+        /* purging mandated by RFC 2616 */
+        case METHOD_POST:
+        case METHOD_PUT:
+        case METHOD_DELETE:
+            return true;
+
+        /* purging suggested by common sense */
+        case METHOD_PURGE:
+            return true;
+
+        /*
+         * RFC 2616 sayeth, in section 13.10, final paragraph:
+         * A cache that passes through requests for methods it does not
+         * understand SHOULD invalidate any entities referred to by the
+         * Request-URI.
+         */
+        case METHOD_OTHER:
+        default:
+            return true;
+       }
+
+    return true; // not reached, but just in case
+}
index 0e719b07e9817384cc5110071e78033bd72eeee9..33c9fd23a4b97f787345d9aaed4cab5434626cfd 100644 (file)
@@ -148,6 +148,7 @@ public:
     char const* image() const;
 
     bool isCacheble() const;
+    bool purgesOthers() const;
 
 private:
     static const char *RequestMethodStr[];
index 12de28635b6b067c226d989426b0f71b0e3cf328..a4ed0f455b1ed7cdeee924ee647539ab1d1f0258 100644 (file)
@@ -37,6 +37,7 @@
 #include "HttpStatusLine.h"
 
 /* local constants */
+/* AYJ: see bug 2469 - RFC2616 confirms stating 'SP characters' plural! */
 const char *HttpStatusLineFormat = "HTTP/%d.%d %3d %s\r\n";
 
 void
index 8da4103401d14dae546cb7b50ee844b442d2e930..f6c39d07442e28dc5a38dd5bf9e6567f5c2d0ff6 100644 (file)
@@ -80,11 +80,6 @@ void ICAPModXact::start()
         startWriting();
     else
         waitForService();
-
-    // XXX: If commConnectStart in startWriting fails, we may get here
-    //_after_ the object got destroyed. Somebody please fix commConnectStart!
-    // TODO: Does re-entrance protection in callStart() solve the above?
-    // TODO: Check that comm using AsyncCalls solves this problem.
 }
 
 void ICAPModXact::waitForService()
@@ -118,8 +113,6 @@ void ICAPModXact::startWriting()
     decideOnRetries();
 
     openConnection();
-    // put nothing here as openConnection calls commConnectStart
-    // and that may call us back without waiting for the next select loop
 }
 
 // connection with the ICAP service established
@@ -1178,6 +1171,7 @@ void ICAPModXact::encapsulateHead(MemBuf &icapBuf, const char *section, MemBuf &
     // end cloning
         
     // remove all hop-by-hop headers from the clone
+    headClone->header.delById(HDR_PROXY_AUTHENTICATE);
     headClone->header.removeHopByHopEntries();
 
     // pack polished HTTP header
index 6e4c5d851b46e70f2652cdcca653aff6b8079cbf..2f91bf853bbffa7435a99f19f6915e5ab7aa12bd 100644 (file)
@@ -33,7 +33,7 @@ libicap_la_SOURCES = \
 check_PROGRAMS = testHeaders
 
 ## test .h correctness
-testHeaders: *.h
+testHeaders: $(top_srcdir)/src/ICAP/*.h
        $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "." || exit 1
 
 ## No such file...
index 1d974692f44d9f0884c743c297a30f02212b900a..2daf56286f6821dbbe721b57d613736567935f15 100644 (file)
@@ -56,6 +56,15 @@ ICMPPinger::~ICMPPinger()
     Close();
 }
 
+#ifdef _SQUID_MSWIN_
+void
+Win32SockCleanup(void)
+{
+    WSACleanup();
+    return;
+}
+#endif
+
 int
 ICMPPinger::Open(void)
 {
@@ -69,6 +78,7 @@ ICMPPinger::Open(void)
     struct sockaddr_in PS;
 
     WSAStartup(2, &wsaData);
+    atexit(Win32SockCleanup);
 
     getCurrentTime();
     _db_init(NULL, "ALL,1");
index d6acd26faa7532097b046bb003ef0abba4e22d54..bc9c89354de648bc292c7a04bfc9677e0ce6221b 100644 (file)
@@ -121,7 +121,7 @@ ICMPSquid::SendEcho(IPAddress &to, int opcode, const char *payload, int len)
             return;
         }
         /** All other send errors are ignored. */
-    } else if (x != len) {
+    } else if (x != slen) {
         debugs(37, 1, HERE << "Wrote " << x << " of " << slen << " bytes");
     }
 }
index e201e71cb27caa83f1d1f79c16bd897d9ce59ec3..d26739fc53bfed6c9c547ead97b65c717a965b76 100644 (file)
@@ -98,7 +98,9 @@
 
 #ifdef _SQUID_MSWIN_
 
+#if HAVE_WINSOCK2_H
 #include <winsock2.h>
+#endif
 #include <process.h>
 
 #endif
index 74a89e8fc37abfc62a1eb3bc966a22e25dd2258a..e5be35368ab380c54c4d9997497a12a2757d05a5 100644 (file)
@@ -32,7 +32,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
  *
  */
-
+#include "config.h"
 #include "IPInterception.h"
 #include "fde.h"
 
@@ -90,6 +90,7 @@
 #endif /* PF_TRANSPARENT required headers */
 
 #if LINUX_NETFILTER
+#include <linux/types.h>
 #include <linux/netfilter_ipv4.h>
 #endif
 
@@ -133,7 +134,7 @@ IPIntercept::NetfilterInterception(int fd, const IPAddress &me, IPAddress &dst,
      * Try NAT lookup for REDIRECT or DNAT targets. */
     if( getsockopt(fd, SOL_IP, SO_ORIGINAL_DST, lookup->ai_addr, &lookup->ai_addrlen) == 0) {
         if(!silent) {
-            debugs(89, DBG_IMPORTANT, HERE << " NF getsockopt(SO_ORIGINAL_DST) failed: " << xstrerror());
+            debugs(89, DBG_IMPORTANT, HERE << " NF getsockopt(SO_ORIGINAL_DST) failed on FD " << fd << ": " << xstrerror());
             last_reported = squid_curtime;
         }
     }
@@ -154,35 +155,17 @@ IPIntercept::NetfilterInterception(int fd, const IPAddress &me, IPAddress &dst,
 }
 
 int
-IPIntercept::NetfilterTransparent(int fd, const IPAddress &me, IPAddress &dst, int silent)
+IPIntercept::NetfilterTransparent(int fd, const IPAddress &me, IPAddress &client, int silent)
 {
 #if LINUX_NETFILTER
-    struct addrinfo *lookup = NULL;
-
-    if( ! fd_table[fd].flags.transparent) return -1;
-
-    dst.GetAddrInfo(lookup,AF_INET);
 
-    /** \par
-     * Try lookup for TPROXY targets. BUT, only if the FD is flagged for transparent operations. */
-    if(getsockopt(fd, SOL_IP, IP_TRANSPARENT, lookup->ai_addr, &lookup->ai_addrlen) != 0) {
-        if(!silent) {
-            debugs(89, DBG_IMPORTANT, HERE << " NF getsockopt(IP_TRANSPARENT) failed: " << xstrerror());
-            last_reported = squid_curtime;
-        }
-    }
-    else {
-        dst = *lookup;
-    }
-
-    dst.FreeAddrInfo(lookup);
-
-    if(me != dst) {
-        debugs(89, 5, HERE << "address: " << dst);
+    /* Trust the user configured properly. If not no harm done.
+     * We will simply attempt a bind outgoing on our own IP.
+     */
+    if(fd_table[fd].flags.transparent) {
+        client.SetPort(0); // allow random outgoing port to prevent address clashes
         return 0;
     }
-
-    debugs(89, 9, HERE << "address: me= " << me << ", dst= " << dst);
 #endif
     return -1;
 }
@@ -197,7 +180,7 @@ IPIntercept::IPFWInterception(int fd, const IPAddress &me, IPAddress &dst, int s
 
     /** \par
      * Try lookup for IPFW interception. */
-    if( getsockname(fd, lookup->ai_addr, &lookup->ai_addrlen) >= 0 ) {
+    if( getsockname(fd, lookup->ai_addr, &lookup->ai_addrlen) != 0 ) {
         if( !silent ) {
             debugs(89, DBG_IMPORTANT, HERE << " IPFW getsockname(...) failed: " << xstrerror());
             last_reported = squid_curtime;
@@ -219,15 +202,11 @@ IPIntercept::IPFWInterception(int fd, const IPAddress &me, IPAddress &dst, int s
     return -1;
 }
 
-
-// TODO split this one call into one per transparency method
-//     with specific switching at run-time ??
-
 int
-IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &dst)
+IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &client, IPAddress &dst)
 {
 #if IPF_TRANSPARENT  /* --enable-ipf-transparent */
-    dst = me;
+    client = me;
     if( !me.IsIPv4() ) return -1;
     if( !peer.IsIPv4() ) return -1;
 
@@ -323,9 +302,9 @@ IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAdd
     } else
     {
         if (me != natLookup.nl_realip) {
-            dst = natLookup.nl_realip;
+            client = natLookup.nl_realip;
 
-            dst.SetPort(ntohs(natLookup.nl_realport));
+            client.SetPort(ntohs(natLookup.nl_realport));
         }
         // else. we already copied it.
 
@@ -339,16 +318,24 @@ IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAdd
     /* Netfilter and IPFW share almost identical lookup methods for their NAT tables.
      * This allows us to perform a nice clean failover sequence for them.
      */
-    int silent = (squid_curtime - last_reported > 60 ? 0 : 1);
 
-    dst = me;
+    client = me;
+    dst = peer;
 
     if( !me.IsIPv4()   ) return -1;
     if( !peer.IsIPv4() ) return -1;
 
+#if 0
+    // Crop interception errors down to one per minute.
+    int silent = (squid_curtime - last_reported > 60 ? 0 : 1);
+#else
+    // Show all interception errors.
+    int silent = 0;
+#endif
+
     if(intercept_active) {
-        if( NetfilterInterception(fd, me, dst, silent) == 0) return 0;
-        if( IPFWInterception(fd, me, dst, silent) == 0) return 0;
+        if( NetfilterInterception(fd, me, client, silent) == 0) return 0;
+        if( IPFWInterception(fd, me, client, silent) == 0) return 0;
     }
     if(transparent_active) {
         if( NetfilterTransparent(fd, me, dst, silent) == 0) return 0;
@@ -365,7 +352,7 @@ IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAdd
     if( !peer.IsIPv4() ) return -1;
 
     if (pffd < 0)
-        pffd = open("/dev/pf", O_RDWR);
+        pffd = open("/dev/pf", O_RDONLY);
 
     if (pffd < 0)
     {
@@ -378,7 +365,7 @@ IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAdd
 
     }
 
-    dst.SetEmpty();
+    client.SetEmpty();
 
     memset(&nl, 0, sizeof(struct pfioc_natlook));
     peer.GetInAddr(nl.saddr.v4);
@@ -407,8 +394,8 @@ IPIntercept::NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAdd
     } else
     {
         int natted = (me != nl.rdaddr.v4);
-        dst = nl.rdaddr.v4;
-        dst.SetPort(ntohs(nl.rdport));
+        client = nl.rdaddr.v4;
+        client.SetPort(ntohs(nl.rdport));
 
         if (natted)
             return 0;
index ab988d3edba01953baf23e7c1dd3ef34299b60ef..b9aeafa786e3ccbf3ea6ab9bf1f82297600dba38 100644 (file)
@@ -29,7 +29,7 @@ public:
     ~IPIntercept() {};
 
     /** Perform NAT lookups */
-    int NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &dst);
+    int NatLookup(int fd, const IPAddress &me, const IPAddress &peer, IPAddress &client, IPAddress &dst);
 
 #if LINUX_TPROXY2
     // only relevant to TPROXY v2 connections.
@@ -89,7 +89,7 @@ private:
      \retval 0     Successfuly located the new address.
      \retval -1    An error occured during NAT lookups.
      */
-    int NetfilterInterception(int fd, const IPAddress &me, IPAddress &dst, int silent);
+    int NetfilterInterception(int fd, const IPAddress &me, IPAddress &client, int silent);
 
     /**
      * perform Lookups on Netfilter fully-transparent interception targets (TPROXY).
@@ -107,7 +107,7 @@ private:
      \retval 0     Successfuly located the new address.
      \retval -1    An error occured during NAT lookups.
      */
-    int IPFWInterception(int fd, const IPAddress &me, IPAddress &dst, int silent);
+    int IPFWInterception(int fd, const IPAddress &me, IPAddress &client, int silent);
 
 
     int transparent_active;
old mode 100755 (executable)
new mode 100644 (file)
index 9131f2a..1b20279
@@ -205,7 +205,7 @@ else
 AIOPS_SOURCE = DiskIO/DiskThreads/aiops.cc
 endif
 
-IDENT_ALL_SOURCE = ACLIdent.cc ACLIdent.h ident.cc
+IDENT_ALL_SOURCE = ACLIdent.cc ACLIdent.h ident.cc ident.h
 if ENABLE_IDENT
 IDENT_SOURCE = $(IDENT_ALL_SOURCE)
 else
@@ -427,6 +427,8 @@ libsquid_la_SOURCES = \
        comm.h \
        CommCalls.cc \
        CommCalls.h \
+       DescriptorSet.cc \
+       DescriptorSet.h \
        IPInterception.cc \
        IPInterception.h \
         ICAP/AsyncJob.cc \
@@ -593,6 +595,8 @@ squid_SOURCES = \
        PeerDigest.h \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        PeerSelectState.h \
        PingData.h \
        protos.h \
@@ -889,6 +893,8 @@ ufsdump_SOURCES = \
        pconn.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        protos.h \
        redirect.cc \
        referer.cc \
@@ -973,6 +979,7 @@ BUILT_SOURCES = \
 
 sysconf_DATA = \
        squid.conf.default \
+       squid.conf.documented \
        mime.conf.default
 
 data_DATA = \
@@ -1047,7 +1054,7 @@ DEFAULT_PINGER            = $(libexecdir)/`echo pinger | sed '$(transform);s/$$/$(EXEEXT)/
 DEFAULT_UNLINKD                = $(libexecdir)/`echo unlinkd | sed '$(transform);s/$$/$(EXEEXT)/'`
 DEFAULT_DISKD          = $(libexecdir)/`echo diskd | sed '$(transform);s/$$/$(EXEEXT)/'`
 DEFAULT_ICON_DIR       = $(datadir)/icons
-DEFAULT_ERROR_DIR      = $(datadir)/errors/@ERR_DEFAULT_LANGUAGE@
+DEFAULT_ERROR_DIR      = $(datadir)/errors
 DEFAULT_MIB_PATH       = $(datadir)/mib.txt
 DEFAULT_HOSTS          = @OPT_DEFAULT_HOSTS@
 
@@ -1072,10 +1079,13 @@ test_cache_digest: test_cache_digest.o CacheDigest.o debug.o globals.o store_key
 ## If autodependency works well this is not needed anymore
 cache_cf.o: cf_parser.h
 
-# squd.conf.default is built by cf_gen when making cf_parser.h
-squid.conf.default: cf_parser.h
+# squid.conf.default is built by cf_gen when making cf_parser.h
+squid.conf.documented: cf_parser.h
        true
 
+squid.conf.default: squid.conf.documented
+       grep -v -E "^[#\ ]" squid.conf.documented | grep . >squid.conf.default
+
 cf_parser.h: cf.data cf_gen$(EXEEXT)
        ./cf_gen cf.data $(srcdir)/cf.data.depend
 
@@ -1084,7 +1094,7 @@ cf_gen_defines.h: $(srcdir)/cf_gen_defines $(srcdir)/cf.data.pre
 
 
 ## FIXME: generate a sed command file from configure. Then this doesn't
-## depend on the Makefile. 
+## depend on the Makefile.
 cf.data: cf.data.pre Makefile
        sed "\
        s%@DEFAULT_HTTP_PORT@%$(DEFAULT_HTTP_PORT)%g;\
@@ -1125,6 +1135,10 @@ install-data-local: install-sysconfDATA install-dataDATA
                echo "$(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE)"; \
                $(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE); \
        fi
+       echo "$(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE).default"; \
+       $(INSTALL_DATA) squid.conf.default $(DESTDIR)$(DEFAULT_CONFIG_FILE).default; \
+       echo "$(INSTALL_DATA) squid.conf.documented $(DESTDIR)$(DEFAULT_CONFIG_FILE).documented"; \
+       $(INSTALL_DATA) squid.conf.documented $(DESTDIR)$(DEFAULT_CONFIG_FILE).documented; \
        $(mkinstalldirs) $(DESTDIR)$(DEFAULT_LOG_PREFIX)
 
 uninstall-local:
@@ -1139,7 +1153,7 @@ uninstall-local:
 #              $(RM) -f $(DESTDIR)$(DEFAULT_CONFIG_FILE); \
 #      fi
 
-DISTCLEANFILES = cf_gen_defines.h cf.data cf_parser.h squid.conf.default \
+DISTCLEANFILES = cf_gen_defines.h cf.data cf_parser.h squid.conf.default squid.conf.documented \
        globals.cc string_arrays.c repl_modules.cc 
 
 ##install-pinger:
@@ -1169,8 +1183,7 @@ TEST_CALL_SOURCES = \
        AsyncCall.cc
 
 
-check_PROGRAMS+= testHeaders \
-       tests/testAuth \
+check_PROGRAMS+= tests/testAuth \
        tests/testACLMaxUserIP \
        tests/testBoilerplate \
        tests/testCacheManager \
@@ -1187,7 +1200,7 @@ check_PROGRAMS+= testHeaders \
 
 ## Special Universal .h dependency test script
 ## aborts if error encountered
-testHeaders: *.h DiskIO/*.h
+testHeaders: $(top_srcdir)/src/*.h $(top_srcdir)/src/DiskIO/*.h
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "." || exit 1
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "DiskIO" || exit 1
 ## src/repl/ has no .h files and its own makefile.
@@ -1229,6 +1242,7 @@ tests_testAuth_SOURCES= tests/testAuth.cc tests/testMain.cc  tests/testAuth.h $(
        StatHist.cc HttpHdrRange.cc ETag.cc tests/stub_errorpage.cc \
        tests/stub_HttpRequest.cc tests/stub_DelayId.cc \
        tests/stub_MemObject.cc mem_node.cc \
+       tests/stub_cache_manager.cc \
        stmem.cc \
        tests/stub_comm.cc \
        tests/stub_http.cc \
@@ -1309,6 +1323,7 @@ tests_testACLMaxUserIP_SOURCES= \
        tests/stub_DelayId.cc \
        tests/stub_MemObject.cc \
        tests/stub_store.cc \
+       tests/stub_cache_manager.cc \
        tests/testACLMaxUserIP.cc \
        tests/testACLMaxUserIP.h \
        tests/testMain.cc \
@@ -1433,6 +1448,8 @@ tests_testCacheManager_SOURCES = \
        pconn.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        redirect.cc \
        referer.cc \
        refresh.cc \
@@ -1500,7 +1517,9 @@ tests_testDiskIO_SOURCES= \
        $(SWAP_TEST_SOURCES) \
        tests/testDiskIO.cc \
        tests/testDiskIO.h \
-       tests/testMain.cc
+       tests/testMain.cc \
+       tests/stub_cache_manager.cc
+
 tests_testDiskIO_LDADD= \
        $(SWAP_TEST_LDADD) \
        libsquid.la \
@@ -1603,6 +1622,8 @@ tests_testEvent_SOURCES = \
        pconn.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        redirect.cc \
        referer.cc \
        refresh.cc \
@@ -1758,6 +1779,8 @@ tests_testEventLoop_SOURCES = \
        pconn.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        redirect.cc \
        referer.cc \
        refresh.cc \
@@ -1902,6 +1925,8 @@ tests_test_http_range_SOURCES = \
        Parsing.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        pconn.cc \
        redirect.cc \
        referer.cc \
@@ -2063,6 +2088,8 @@ tests_testHttpRequest_SOURCES = \
        pconn.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        redirect.cc \
        referer.cc \
        refresh.cc \
@@ -2208,6 +2235,7 @@ tests_testStore_SOURCES= \
        tests/TestSwapDir.h \
        tests/stub_fd.cc \
        tests/stub_HttpReply.cc \
+       tests/stub_cache_manager.cc \
        $(STORE_TEST_SOURCES)
 
 tests_testStore_LDADD= \
@@ -2228,6 +2256,7 @@ tests_testString_SOURCES= \
        tests/testMain.cc \
        tests/testString.cc \
        tests/testString.h \
+       tests/stub_cache_manager.cc \
        $(TESTSOURCES) \
        time.cc 
 
@@ -2296,6 +2325,7 @@ SWAP_TEST_DS =\
 tests_testUfs_SOURCES= tests/testUfs.cc \
        tests/testMain.cc \
        tests/testUfs.h \
+       tests/stub_cache_manager.cc \
        $(SWAP_TEST_SOURCES)
 tests_testUfs_LDADD= \
        libsquid.la \
@@ -2308,6 +2338,7 @@ tests_testUfs_DEPENDENCIES = \
 tests_testCoss_SOURCES= tests/testCoss.cc \
        tests/testMain.cc \
        tests/testCoss.h \
+       tests/stub_cache_manager.cc \
        $(SWAP_TEST_SOURCES)
 tests_testCoss_LDADD= \
        libsquid.la \
@@ -2424,6 +2455,8 @@ tests_testURL_SOURCES = \
        pconn.cc \
        peer_digest.cc \
        peer_select.cc \
+       peer_sourcehash.cc \
+       peer_userhash.cc \
        redirect.cc \
        referer.cc \
        refresh.cc \
index ec2ae8c91dcbfab7e3a2e8561110d8537e82b9d4..f188cc51064d772b02175f2395a488d1c78802a8 100644 (file)
--- a/src/Mem.h
+++ b/src/Mem.h
@@ -34,7 +34,6 @@
 #ifndef SQUID_MEM
 #define SQUID_MEM
 
-class CacheManager;
 class StoreEntry;
 class MemPoolStats;
 class MemPoolMeter;
@@ -48,11 +47,13 @@ class Mem
 public:
     static void Init();
     static void Report();
-    static void RegisterWithCacheManager(CacheManager & manager);
     static void Stats(StoreEntry *);
     static void CleanIdlePools(void *unused);
     static void Report(std::ostream &);
     static void PoolReport(const MemPoolStats * mp_st, const MemPoolMeter * AllMeter, std::ostream &);
+
+protected:
+    static void RegisterWithCacheManager(void);
 };
 
 #endif /* SQUID_MEM */
index b08cb7d8a77782f9143d43a1b4daab4112a3de2b..d5b253c503dd4c7e3d75e9f3754923b16e8394f9 100644 (file)
@@ -226,11 +226,14 @@ void MemBuf::consume(mb_size_t shiftSize)
     PROF_stop(MemBuf_consume);
 }
 
-// calls memcpy, appends exactly size bytes, extends buffer if needed
+/**
+ * calls memcpy, appends exactly size bytes,
+ * extends buffer or creates buffer if needed.
+ */
 void MemBuf::append(const char *newContent, mb_size_t sz)
 {
     assert(sz >= 0);
-    assert(buf);
+    assert(buf || (0==capacity && 0==size));
     assert(!stolen); /* not frozen */
 
     PROF_start(MemBuf_append);
@@ -247,7 +250,7 @@ void MemBuf::append(const char *newContent, mb_size_t sz)
     PROF_stop(MemBuf_append);
 }
 
-// updates content size after external append
+/// updates content size after external append
 void MemBuf::appended(mb_size_t sz)
 {
     assert(size + sz <= capacity);
index 1bd47da4d9a2be28436188e2445d35defa7537ca..514b93089fca612a751bf1906ab475252d9b05d4 100644 (file)
@@ -265,6 +265,16 @@ xprof_chk_overhead(int samples)
     }
 }
 
+static void
+xprofRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+         registerAction("cpu_profile", "CPU Profiling Stats", xprof_summary, 0, 1);
+}
+
+// FIXME: 
+// this gets colled once per event. This doesn't seem to make much sense,
+// does it?
 static hrtime_t now;
 static void
 xprof_Init(void)
@@ -275,12 +285,8 @@ xprof_Init(void)
     xprof_delta = xprof_verystart = xprof_start_t = now;
 
     xprof_inited = 1;
-}
 
-void
-xprofRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("cpu_profile", "CPU Profiling Stats", xprof_summary, 0, 1);
+    xprofRegisterWithCacheManager(); //moved here so it's not double-init'ed
 }
 
 void
index 1f4e80020d9486316f5fb637b7cc3a637822f3f9..03443fb74c45935e60e584cfa0df13ac6ca86ed4 100644 (file)
@@ -37,6 +37,7 @@
 #include "Store.h"
 #include "HttpRequest.h"
 #include "HttpReply.h"
+#include "TextException.h"
 #include "errorpage.h"
 
 #if USE_ADAPTATION
 #include "adaptation/Service.h"
 #endif
 
+// implemented in client_side_reply.cc until sides have a common parent
+extern void purgeEntriesByUrl(HttpRequest * req, const char *url);
+
+
 ServerStateData::ServerStateData(FwdState *theFwdState): AsyncJob("ServerStateData"),requestSender(NULL)
 #if USE_ADAPTATION
     , adaptedHeadSource(NULL)
@@ -385,11 +390,94 @@ ServerStateData::sendMoreRequestBody()
     }
 }
 
-// called by noteAdaptationAnswer(), HTTP server overwrites this
+// Compares hosts in urls, returns false if different, no sheme, or no host.
+static bool
+sameUrlHosts(const char *url1, const char *url2)
+{
+    // XXX: Want urlHostname() here, but it uses static storage and copying
+    const char *host1 = strchr(url1, ':');
+    const char *host2 = strchr(url2, ':');
+
+    if (host1 && host2) {
+        // skip scheme slashes
+        do {
+            ++host1;
+            ++host2;
+        } while (*host1 == '/' && *host2 == '/');
+
+        if (!*host1)
+            return false; // no host
+
+        // increment while the same until we reach the end of the URL/host
+        while (*host1 && *host1 != '/' && *host1 == *host2) {
+            ++host1;
+            ++host2;
+        }
+        return *host1 == *host2;
+    }
+
+    return false; // no URL scheme
+}
+
+// purges entries that match the value of a given HTTP [response] header
+static void
+purgeEntriesByHeader(HttpRequest *req, const char *reqUrl, HttpMsg *rep, http_hdr_type hdr)
+{
+    const char *hdrUrl, *absUrl;
+    
+    absUrl = NULL;
+    hdrUrl = rep->header.getStr(hdr);
+    if (hdrUrl == NULL) {
+        return;
+    }
+    
+    /*
+     * If the URL is relative, make it absolute so we can find it.
+     * If it's absolute, make sure the host parts match to avoid DOS attacks
+     * as per RFC 2616 13.10.
+     */
+    if (urlIsRelative(hdrUrl)) {
+        absUrl = urlMakeAbsolute(req, hdrUrl);
+        if (absUrl != NULL) {
+            hdrUrl = absUrl;
+        }
+    } else if (!sameUrlHosts(reqUrl, hdrUrl)) {
+        return;
+    }
+    
+    purgeEntriesByUrl(req, hdrUrl);
+    
+    if (absUrl != NULL) {
+        safe_free(absUrl);
+    }
+}
+
+// some HTTP methods should purge matching cache entries
+void
+ServerStateData::maybePurgeOthers()
+{
+   // only some HTTP methods should purge matching cache entries
+   if (!request->method.purgesOthers())
+       return;
+
+   // and probably only if the response was successful
+   if (theFinalReply->sline.status >= 400)
+       return;
+
+   // XXX: should we use originalRequest() here?
+   const char *reqUrl = urlCanonical(request);
+   debugs(88, 5, "maybe purging due to " << RequestMethodStr(request->method) << ' ' << reqUrl);
+   purgeEntriesByUrl(request, reqUrl);
+   purgeEntriesByHeader(request, reqUrl, theFinalReply, HDR_LOCATION);
+   purgeEntriesByHeader(request, reqUrl, theFinalReply, HDR_CONTENT_LOCATION);
+}
+
+// called (usually by kids) when we have final (possibly adapted) reply headers
 void
 ServerStateData::haveParsedReplyHeaders()
 {
-    // default does nothing
+   Must(theFinalReply);
+   maybePurgeOthers();
 }
 
 HttpRequest *
@@ -636,8 +724,7 @@ ServerStateData::handleAdaptationAborted(bool bypassable)
 
     if (entry->isEmpty()) {
         debugs(11,9, HERE << "creating ICAP error entry after ICAP failure");
-        ErrorState *err =
-            errorCon(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
+        ErrorState *err = errorCon(ERR_ICAP_FAILURE, HTTP_INTERNAL_SERVER_ERROR, request);
         err->xerrno = errno;
         fwd->fail(err);
         fwd->dontRetry(true);
index 7d2c305a587dadee30f41d1bef1da388b8f15edc..c7d102ecacf09f39a9ae73460878cde5592a7abe 100644 (file)
@@ -117,7 +117,7 @@ private:
 
 protected:
     // kids customize these
-    virtual void haveParsedReplyHeaders(); /**< default does nothing */
+    virtual void haveParsedReplyHeaders(); /**< called when got final headers */
     virtual void completeForwarding(); /**< default calls fwd->complete() */
 
     // BodyConsumer for HTTP: consume request body.
@@ -192,6 +192,7 @@ protected:
 private:
     void quitIfAllDone();            /**< successful termination */
     void sendBodyIsTooLargeError();
+    void maybePurgeOthers();
 
     HttpReply *theVirginReply;       /**< reply received from the origin server */
     HttpReply *theFinalReply;        /**< adapted reply from ICAP or virgin reply */
index b561bcedffee15b164b352b341dae82aa4fa1147..fd4470740813f4a3d169301dc54134246197b22d 100644 (file)
 
 #include "config.h"
 
-/* forward decls */
-
-class CacheManager;
-
 /** todo checks to wrap this include properly */
 #include <ostream>
 
@@ -60,7 +56,7 @@ public:
     void add
         (String const *);
 
-    void registerWithCacheManager(CacheManager & manager);
+    StringRegistry();
 
     void remove
         (String const *);
index ced3cdf17598dce37610b044488fb9fe7a0c7cbf..da432a0dd9f7b2985fde473758f016be0f8366f5 100644 (file)
@@ -338,9 +338,6 @@ SQUIDCEXTERN StoreEntry *storeCreateEntry(const char *, const char *, request_fl
 /// \ingroup StoreAPI
 SQUIDCEXTERN void storeInit(void);
 
-/// \ingroup StoreAPI
-extern void storeRegisterWithCacheManager(CacheManager & manager);
-
 /// \ingroup StoreAPI
 SQUIDCEXTERN void storeConfigure(void);
 
index e25e3ff32cef0e07fd54c4024ce09df351bd0f40..c8a65158d1fdf73175988d52aa55f2e4011a88b5 100644 (file)
 Vector<StoreFileSystem*> *StoreFileSystem::_FileSystems = NULL;
 
 void
-StoreFileSystem::RegisterAllFsWithCacheManager(CacheManager & manager)
+StoreFileSystem::RegisterAllFsWithCacheManager(void)
 {
     for (iterator i = GetFileSystems().begin(); i != GetFileSystems().end(); ++i)
-        (*i)->registerWithCacheManager(manager);
+        (*i)->registerWithCacheManager();
 }
 
 void
@@ -98,5 +98,5 @@ StoreFileSystem::FreeAllFs()
 
 /* no filesystem is required to export statistics */
 void
-StoreFileSystem::registerWithCacheManager(CacheManager & manager)
+StoreFileSystem::registerWithCacheManager(void)
 {}
index ddd87a092807c355877d31f0ece3aff4bbfc562a..b1e1d3fd1bee2fd13d97e7565dc36e70361bcaca 100644 (file)
  *    given StoreEntry. A maxobjsize of -1 means 'any size'.
  */
 
-class CacheManager;
 class SwapDir;
 
 /**
@@ -117,7 +116,6 @@ class StoreFileSystem
 {
 
 public:
-    static void RegisterAllFsWithCacheManager(CacheManager & manager);
     static void SetupAllFs();
     static void FsAdd(StoreFileSystem &);
     static void FreeAllFs();
@@ -131,7 +129,6 @@ public:
     virtual char const *type () const = 0;
     virtual SwapDir *createSwapDir() = 0;
     virtual void done() = 0;
-    virtual void registerWithCacheManager(CacheManager & manager);
     virtual void setup() = 0;
     // Not implemented
     StoreFileSystem(StoreFileSystem const &);
@@ -139,10 +136,12 @@ public:
 
 protected:
     bool initialised;
+    virtual void registerWithCacheManager(void);
 
 private:
     static Vector<StoreFileSystem*> &GetFileSystems();
     static Vector<StoreFileSystem*> *_FileSystems;
+    static void RegisterAllFsWithCacheManager(void);
 };
 
 // TODO: Kill this typedef!
index 513e6197360c4e485087cd83c6c602ff6ca5e119..830385f03136016da60ab4f8c4264fbdad723b84 100644 (file)
@@ -68,8 +68,8 @@ public:
 
     void dump() const
     {
-        fwrite(data, length, 1, stderr);
-        fwrite("\n", 1, 1, stderr);
+        if(fwrite(data, length, 1, stderr)) {}
+        if(fwrite("\n", 1, 1, stderr)) {}
     }
 
     struct
index 1f3e10f11ec35cfb2b701288ad5c1094775b97d8..ea9cfc222116be6a1ae6f21120599325d260fc6c 100644 (file)
@@ -47,7 +47,7 @@ public:
     virtual ~StoreSearch() {}
 
     /* not ready yet
-    void asList(void (*) (List<StoreEntryPointer), void *cbdata);
+    void asList(void (*) (CbDataList<StoreEntryPointer), void *cbdata);
     */
     /* callback the client when a new StoreEntry is available
      * or an error occurs 
index dab7b7d16add7db765566fe5db6d5f8a45c81b46..72711482012ce5829820fd3df013e12e6f8d2efd 100644 (file)
@@ -253,11 +253,12 @@ ptrcmp(C const &lhs, C const &rhs)
     return lhs - rhs;
 }
 
-void
-StringRegistry::registerWithCacheManager(CacheManager & manager)
+StringRegistry::StringRegistry()
 {
-    manager.registerAction("strings",
+#if DEBUGSTRINGS
+    CacheManager::GetInstance()->registerAction("strings",
                            "Strings in use in squid", Stat, 0, 1);
+#endif
 }
 
 void
index aab90cad79f81ad6dec0a6d4a68d5078807bcc42..1f82fd4a53f924f1db0472ec431b66462014ef71 100644 (file)
@@ -33,6 +33,7 @@
  */
 
 #include "assert.h"
+#include <cstring>
 
 String::String() : size_(0), len_(0), buf_ (NULL)
 {
old mode 100755 (executable)
new mode 100644 (file)
index 6fe9980..ce18682
@@ -66,10 +66,10 @@ static void Win32SockCleanup(void);
 SQUIDCEXTERN LPCRITICAL_SECTION dbg_mutex;
 void WIN32_ExceptionHandlerCleanup(void);
 static int s_iInitCount = 0;
-#endif
+static HANDLE NotifyAddrChange_thread = INVALID_HANDLE_VALUE;
+#endif /* _SQUID_MSWIN_ */
 
 static int Squid_Aborting = 0;
-static HANDLE NotifyAddrChange_thread = INVALID_HANDLE_VALUE;
 
 #undef NotifyAddrChange
 typedef DWORD(WINAPI * PFNotifyAddrChange) (OUT PHANDLE, IN LPOVERLAPPED);
@@ -390,16 +390,18 @@ WIN32_Abort(int sig)
     WIN32_Exit();
 }
 
+#ifdef _SQUID_MSWIN_
 void
 WIN32_IpAddrChangeMonitorExit()
 {
     DWORD status = ERROR_SUCCESS;
 
-    if (NotifyAddrChange_thread == INVALID_HANDLE_VALUE) {
+    if (NotifyAddrChange_thread != INVALID_HANDLE_VALUE) {
        TerminateThread(NotifyAddrChange_thread, status);
        CloseHandle(NotifyAddrChange_thread);
     }
 }
+#endif
 
 void
 WIN32_Exit()
@@ -459,7 +461,7 @@ WIN32_IpAddrChangeMonitorInit()
     DWORD status = ERROR_SUCCESS;
     DWORD threadID = 0, ThrdParam = 0;
 
-    if (WIN32_run_mode == _WIN_SQUID_RUN_MODE_SERVICE) {
+    if ((WIN32_run_mode == _WIN_SQUID_RUN_MODE_SERVICE) && (Config.onoff.WIN32_IpAddrChangeMonitor)) {
        NotifyAddrChange_thread = CreateThread(NULL, 0, WIN32_IpAddrChangeMonitor,
            &ThrdParam, 0, &threadID);
        if (NotifyAddrChange_thread == NULL) {
@@ -471,7 +473,7 @@ WIN32_IpAddrChangeMonitorInit()
     }
     return status;
 }
-#endif
+#endif /* _SQUID_MSWIN_ */
 
 int WIN32_Subsystem_Init(int * argc, char *** argv)
 {
@@ -893,7 +895,7 @@ WIN32_sendSignal(int WIN32_signal)
                              fdwAccess);               /* specify access     */
 
     if (schService == NULL) {
-        fprintf(stderr, "%s: ERROR: Could not open Service %s\n", appname,
+        fprintf(stderr, "%s: ERROR: Could not open Service %s\n", APP_SHORTNAME,
                 WIN32_Service_name);
         exit(1);
     } else {
@@ -903,7 +905,7 @@ WIN32_sendSignal(int WIN32_signal)
                             fdwControl,        /* control value to send  */
                             &ssStatus)) {      /* address of status info */
             fprintf(stderr, "%s: ERROR: Could not Control Service %s\n",
-                    appname, WIN32_Service_name);
+                    APP_SHORTNAME, WIN32_Service_name);
             exit(1);
         } else {
             /* Print the service status. */
index 4068cf536df12f9dcff1708f1b88db7d1afd45a8..364fb3c0a716e2c3d3bcfe99df0efc6ea8ebd9ee 100644 (file)
@@ -105,7 +105,7 @@ static OBJH fvdbDumpVia;
 static OBJH fvdbDumpForw;
 static FREE fvdbFreeEntry;
 static void fvdbClear(void);
-static void fvdbRegisterWithCacheManager(CacheManager & manager);
+static void fvdbRegisterWithCacheManager();
 #endif
 
 static int LogfileStatus = LOG_DISABLE;
@@ -365,7 +365,7 @@ typedef enum {
     /*LFT_REQUEST_QUERY, * // * this is not needed. see strip_query_terms */
     LFT_REQUEST_VERSION,
 
-    /*LFT_REQUEST_SIZE_TOTAL, */
+    LFT_REQUEST_SIZE_TOTAL,
     /*LFT_REQUEST_SIZE_LINE, */
     /*LFT_REQUEST_SIZE_HEADERS, */
     /*LFT_REQUEST_SIZE_BODY, */
@@ -380,6 +380,7 @@ typedef enum {
     /*LFT_REPLY_SIZE_BODY_NO_TE, */
 
     LFT_TAG,
+    LFT_IO_SIZE_TOTAL,
     LFT_EXT_LOG,
 
     LFT_PERCENT                        /* special string cases for escaped chars */
@@ -478,7 +479,7 @@ struct logformat_token_table_entry logformat_token_table[] =
         {">v", LFT_REQUEST_VERSION},
         {"rv", LFT_REQUEST_VERSION},
 
-        /*{ ">st", LFT_REQUEST_SIZE_TOTAL }, */
+        { ">st", LFT_REQUEST_SIZE_TOTAL },
         /*{ ">sl", LFT_REQUEST_SIZE_LINE }, * / / * the request line "GET ... " */
         /*{ ">sh", LFT_REQUEST_SIZE_HEADERS }, */
         /*{ ">sb", LFT_REQUEST_SIZE_BODY }, */
@@ -493,6 +494,7 @@ struct logformat_token_table_entry logformat_token_table[] =
         /*{ "<sB", LFT_REPLY_SIZE_BODY_NO_TE }, */
 
         {"et", LFT_TAG},
+        {"st", LFT_IO_SIZE_TOTAL},
         {"ea", LFT_EXT_LOG},
 
         {"%", LFT_PERCENT},
@@ -770,22 +772,22 @@ accessLogCustom(AccessLogEntry * al, customlog * log)
 
         case LFT_REQUEST_VERSION:
             snprintf(tmp, sizeof(tmp), "%d.%d", (int) al->http.version.major, (int) al->http.version.minor);
-
             out = tmp;
+            break;
 
+        case LFT_REQUEST_SIZE_TOTAL:
+            outint = al->cache.requestSize;
+            dooff = 1;
             break;
 
-            /*case LFT_REQUEST_SIZE_TOTAL: */
             /*case LFT_REQUEST_SIZE_LINE: */
             /*case LFT_REQUEST_SIZE_HEADERS: */
             /*case LFT_REQUEST_SIZE_BODY: */
             /*case LFT_REQUEST_SIZE_BODY_NO_TE: */
 
         case LFT_REPLY_SIZE_TOTAL:
-            outoff = al->cache.size;
-
+            outoff = al->cache.replySize;
             dooff = 1;
-
             break;
 
         case LFT_REPLY_HIGHOFFSET:
@@ -815,6 +817,11 @@ accessLogCustom(AccessLogEntry * al, customlog * log)
 
             break;
 
+        case LFT_IO_SIZE_TOTAL:
+            outint = al->cache.requestSize + al->cache.replySize;
+            doint = 1;
+            break;
+
         case LFT_EXT_LOG:
             if (al->request)
                 out = al->request->extacl_log.buf();
@@ -1299,7 +1306,7 @@ accessLogSquid(AccessLogEntry * al, Logfile * logfile)
                       client,
                       log_tags[al->cache.code],
                       al->http.code,
-                      al->cache.size,
+                      al->cache.replySize,
                       al->_private.method_str,
                       al->url,
                       user ? user : dash_str,
@@ -1317,7 +1324,7 @@ accessLogSquid(AccessLogEntry * al, Logfile * logfile)
                       client,
                       log_tags[al->cache.code],
                       al->http.code,
-                      al->cache.size,
+                      al->cache.replySize,
                       al->_private.method_str,
                       al->url,
                       user ? user : dash_str,
@@ -1361,7 +1368,7 @@ accessLogCommon(AccessLogEntry * al, Logfile * logfile)
                   al->url,
                   al->http.version.major, al->http.version.minor,
                   al->http.code,
-                  al->cache.size,
+                  al->cache.replySize,
                   log_tags[al->cache.code],
                   hier_strings[al->hier.code]);
 
@@ -1548,10 +1555,21 @@ hierarchyNote(HierarchyLogEntry * hl,
     xstrncpy(hl->host, cache_peer, SQUIDHOSTNAMELEN);
 }
 
+static void
+accessLogRegisterWithCacheManager(void)
+{
+#if FORW_VIA_DB
+    fvdbRegisterWithCacheManager();
+#endif
+}
+
 void
 accessLogInit(void)
 {
     customlog *log;
+
+    accessLogRegisterWithCacheManager();
+
     assert(sizeof(log_tags) == (LOG_TYPE_MAX + 1) * sizeof(char *));
 
     for (log = Config.Log.accesslogs; log; log = log->next) {
@@ -1603,16 +1621,6 @@ accessLogInit(void)
 #endif
 }
 
-void
-accessLogRegisterWithCacheManager(CacheManager & manager)
-{
-#if FORW_VIA_DB
-
-    fvdbRegisterWithCacheManager(manager);
-
-#endif
-}
-
 const char *
 accessLogTime(time_t t)
 {
@@ -1641,10 +1649,11 @@ fvdbInit(void)
 }
 
 static void
-fvdbRegisterWithCacheManager(CacheManager & manager)
+fvdbRegisterWithCacheManager(void)
 {
-    manager.registerAction("via_headers", "Via Request Headers", fvdbDumpVia, 0, 1);
-    manager.registerAction("forw_headers", "X-Forwarded-For Request Headers",
+    CacheManager *manager=CacheManager::GetInstance();
+    manager->registerAction("via_headers", "Via Request Headers", fvdbDumpVia, 0, 1);
+    manager->registerAction("forw_headers", "X-Forwarded-For Request Headers",
                            fvdbDumpForw, 0, 1);
 }
 
index 4e6b2ff883eff195688bdfbcaad6214da2b3087e..db3586186c89b70a7b112ded6d61213b7731ea09 100644 (file)
@@ -123,7 +123,12 @@ Adaptation::AccessCheck::AccessCheckCallbackWrapper(int answer, void *data)
 {
     debugs(93, 8, "AccessCheckCallbackWrapper: answer=" << answer);
     AccessCheck *ac = (AccessCheck*)data;
-    ac->noteAnswer(answer);
+
+    /** \todo AYJ 2008-06-12: If answer == ACCESS_REQ_PROXY_AUTH
+     * we should be kicking off an authentication before continuing
+     * with this request. see bug 2400 for details.
+     */
+    ac->noteAnswer(answer==ACCESS_ALLOWED);
 }
 
 void
index 77ceb0a5b4362b0dadaa5ff3432f3ca4e77fbbfa..960603efdafdb1ab510a45389e4689eaff729b17 100644 (file)
@@ -34,7 +34,7 @@ libadaptation_la_SOURCES = \
 check_PROGRAMS = testHeaders
 
 ## test .h correctness
-testHeaders: *.h
+testHeaders: $(top_srcdir)/src/adaptation/*.h
        $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "." || exit 1
 
 ## No such file...
index ce9f739adfb1723f93d348ab225ed708c6e36a59..8073e73eb2e8c94a4fd9e5fdadfb5b55e9db8e8a 100644 (file)
@@ -72,7 +72,7 @@ struct squid_radix_node_head *AS_tree_head;
 /* explicit instantiation required for some systems */
 
 /// \cond AUTODOCS-IGNORE
-template cbdata_type List<int>::CBDATA_List;
+template cbdata_type CbDataList<int>::CBDATA_CbDataList;
 /// \endcond
 
 /**
@@ -82,7 +82,7 @@ template cbdata_type List<int>::CBDATA_List;
  */
 struct as_info
 {
-    List<int> *as_number;
+    CbDataList<int> *as_number;
     time_t expires;            /* NOTUSED */
 };
 
@@ -128,13 +128,13 @@ static OBJH asnStats;
 /* PUBLIC */
 
 int
-asnMatchIp(List<int> *data, IPAddress &addr)
+asnMatchIp(CbDataList<int> *data, IPAddress &addr)
 {
     struct squid_radix_node *rn;
     as_info *e;
     m_ADDR m_addr;
-    List<int> *a = NULL;
-    List<int> *b = NULL;
+    CbDataList<int> *a = NULL;
+    CbDataList<int> *b = NULL;
 
     debugs(53, 3, "asnMatchIp: Called for " << addr );
 
@@ -174,11 +174,17 @@ asnMatchIp(List<int> *data, IPAddress &addr)
 void
 ACLASN::prepareForUse()
 {
-    for (List<int> *i = data; i; i = i->
+    for (CbDataList<int> *i = data; i; i = i->
                                      next)
         asnCacheStart(i->element);
 }
 
+static void
+asnRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->registerAction("asndb", "AS Number Database", asnStats, 0, 1);
+}
+
 /* initialize the radix tree structure */
 
 SQUIDCEXTERN int squid_max_keylen;     /* yuck.. this is in lib/radix.c */
@@ -195,12 +201,8 @@ asnInit(void)
         squid_rn_init();
 
     squid_rn_inithead(&AS_tree_head, 8);
-}
 
-void
-asnRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("asndb", "AS Number Database", asnStats, 0, 1);
+    asnRegisterWithCacheManager();
 }
 
 void
@@ -388,8 +390,8 @@ asnAddNet(char *as_string, int as_number)
     rtentry_t *e;
 
     struct squid_radix_node *rn;
-    List<int> **Tail = NULL;
-    List<int> *q = NULL;
+    CbDataList<int> **Tail = NULL;
+    CbDataList<int> *q = NULL;
     as_info *asinfo = NULL;
 
     IPAddress mask;
@@ -439,14 +441,14 @@ asnAddNet(char *as_string, int as_number)
             debugs(53, 3, "asnAddNet: Warning: Found a network with multiple AS numbers!");
 
             for (Tail = &asinfo->as_number; *Tail; Tail = &(*Tail)->next);
-            q = new List<int> (as_number);
+            q = new CbDataList<int> (as_number);
 
             *(Tail) = q;
 
             e->e_info = asinfo;
         }
     } else {
-        q = new List<int> (as_number);
+        q = new CbDataList<int> (as_number);
         asinfo = (as_info *)xmalloc(sizeof(as_info));
         asinfo->as_number = q;
         rn = squid_rn_addroute(&e->e_addr, &e->e_mask, AS_tree_head, e->e_nodes);
@@ -492,8 +494,8 @@ destroyRadixNode(struct squid_radix_node *rn, void *w)
 static void
 destroyRadixNodeInfo(as_info * e_info)
 {
-    List<int> *prev = NULL;
-    List<int> *data = e_info->as_number;
+    CbDataList<int> *prev = NULL;
+    CbDataList<int> *data = e_info->as_number;
 
     while (data) {
         prev = data;
@@ -509,7 +511,7 @@ printRadixNode(struct squid_radix_node *rn, void *_sentry)
 {
     StoreEntry *sentry = (StoreEntry *)_sentry;
     rtentry_t *e = (rtentry_t *) rn;
-    List<int> *q;
+    CbDataList<int> *q;
     as_info *asinfo;
     char buf[MAX_IPSTRLEN];
     IPAddress addr;
@@ -551,7 +553,7 @@ ACLASN::dump()
 {
     wordlist *W = NULL;
     char buf[32];
-    List<int> *ldata = data;
+    CbDataList<int> *ldata = data;
 
     while (ldata != NULL) {
         snprintf(buf, sizeof(buf), "%d", ldata->element);
@@ -571,14 +573,14 @@ ACLASN::empty () const
 void
 ACLASN::parse()
 {
-    List<int> **curlist = &data;
-    List<int> **Tail;
-    List<int> *q = NULL;
+    CbDataList<int> **curlist = &data;
+    CbDataList<int> **Tail;
+    CbDataList<int> *q = NULL;
     char *t = NULL;
 
     for (Tail = curlist; *Tail; Tail = &((*Tail)->next));
     while ((t = strtokFile())) {
-        q = new List<int> (atoi(t));
+        q = new CbDataList<int> (atoi(t));
         *(Tail) = q;
         Tail = &q->next;
     }
index 92093148438dba9cd855f754001f8199cf14c86a..8dd460ac555700791a501db7db6a425839990c46 100644 (file)
@@ -24,7 +24,7 @@ check_PROGRAMS= testHeaders
 
 ## Special Universal .h dependency test script
 ## aborts if error encountered
-testHeaders: basic/*.h digest/*.h ntlm/*.h negotiate/*.h
+testHeaders: $(top_srcdir)/src/auth/basic/*.h $(top_srcdir)/src/auth/digest/*.h $(top_srcdir)/src/auth/ntlm/*.h $(top_srcdir)/src/auth/negotiate/*.h
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "basic" || exit 1
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "digest" || exit 1
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "ntlm" || exit 1
index 60c773a8433f1792f8ee95e54911518d5f3dfcc2..121e81f56cabaf66bc4a64b4948503b2fc31e179 100644 (file)
@@ -342,6 +342,8 @@ AuthBasicConfig::parse(AuthConfig * scheme, int n_configured, char *param_str)
         parse_time_t(&credentialsTTL);
     } else if (strcasecmp(param_str, "casesensitive") == 0) {
         parse_onoff(&casesensitive);
+    } else if (strcasecmp(param_str, "utf8") == 0) {
+        parse_onoff(&utf8);
     } else {
         debugs(29, DBG_CRITICAL, HERE << "unrecognised basic auth scheme parameter '" << param_str << "'");
     }
@@ -622,9 +624,10 @@ AuthBasicConfig::init(AuthConfig * scheme)
 }
 
 void
-AuthBasicConfig::registerWithCacheManager(CacheManager & manager)
+AuthBasicConfig::registerWithCacheManager(void)
 {
-    manager.registerAction("basicauthenticator",
+    CacheManager::GetInstance()->
+            registerAction("basicauthenticator",
                            "Basic User Authenticator Stats",
                            authenticateBasicStats, 0, 1);
 }
@@ -680,8 +683,15 @@ BasicUser::submitRequest(AuthUserRequest * auth_user_request, RH * handler, void
     r->handler = handler;
     r->data = cbdataReference(data);
     r->auth_user_request = auth_user_request;
-    xstrncpy(user, rfc1738_escape(username()), sizeof(user));
-    xstrncpy(pass, rfc1738_escape(passwd), sizeof(pass));
+    if (basicConfig.utf8) {
+       latin1_to_utf8(user, sizeof(user), username());
+       latin1_to_utf8(pass, sizeof(pass), passwd);
+       xstrncpy(user, rfc1738_escape(user), sizeof(user));
+       xstrncpy(pass, rfc1738_escape(pass), sizeof(pass));
+    } else {
+       xstrncpy(user, rfc1738_escape(username()), sizeof(user));
+       xstrncpy(pass, rfc1738_escape(passwd), sizeof(pass));
+    }
     snprintf(buf, sizeof(buf), "%s %s\n", user, pass);
     helperSubmit(basicauthenticators, buf, authenticateBasicHandleReply, r);
 }
index c1d335d24de04db0a0eab702f6e14348887ae85c..f0abbaecdd4bb6f6f65d6c159e3532a7c51cbc32 100644 (file)
@@ -124,7 +124,7 @@ public:
     virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
     virtual void init(AuthConfig *);
     virtual void parse(AuthConfig *, int, char *);
-    virtual void registerWithCacheManager(CacheManager & manager);
+    virtual void registerWithCacheManager(void);
     virtual const char * type() const;
     int authenticateChildren;
     int authenticateConcurrency;
@@ -132,6 +132,7 @@ public:
     wordlist *authenticate;
     time_t credentialsTTL;
     int casesensitive;
+    int utf8;
 };
 
 #endif
index 32f6dbe25f67fa0bd404947b52aa072a80c63c69..1e584835e3fc958e784047feff04fe0bda2f3d4b 100644 (file)
@@ -888,9 +888,10 @@ AuthDigestConfig::init(AuthConfig * scheme)
 }
 
 void
-AuthDigestConfig::registerWithCacheManager(CacheManager & manager)
+AuthDigestConfig::registerWithCacheManager(void)
 {
-    manager.registerAction("digestauthenticator",
+    CacheManager::GetInstance()->
+            registerAction("digestauthenticator",
                            "Digest User Authenticator Stats",
                            authenticateDigestStats, 0, 1);
 }
@@ -948,6 +949,8 @@ AuthDigestConfig::parse(AuthConfig * scheme, int n_configured, char *param_str)
         parse_onoff(&CheckNonceCount);
     } else if (strcasecmp(param_str, "post_workaround") == 0) {
         parse_onoff(&PostWorkaround);
+    } else if (strcasecmp(param_str, "utf8") == 0) {
+        parse_onoff(&utf8);
     } else {
         debugs(29, 0, "unrecognised digest auth scheme parameter '" << param_str << "'");
     }
@@ -1363,7 +1366,13 @@ AuthDigestUserRequest::module_start(RH * handler, void *data)
     r->data = cbdataReference(data);
     r->auth_user_request = this;
     AUTHUSERREQUESTLOCK(r->auth_user_request, "r");
-    snprintf(buf, 8192, "\"%s\":\"%s\"\n", digest_user->username(), realm);
+    if (digestConfig.utf8) {
+       char user[1024];
+       latin1_to_utf8(user, sizeof(user), digest_user->username());
+       snprintf(buf, 8192, "\"%s\":\"%s\"\n", user, realm);
+    } else {
+       snprintf(buf, 8192, "\"%s\":\"%s\"\n", digest_user->username(), realm);
+    }
 
     helperSubmit(digestauthenticators, buf, authenticateDigestHandleReply, r);
 }
index 73b05086f29f781f5f149b24f9ef29e77f075074..c1845fb306d6691be1c042df56f7f6febdc0fd1c 100644 (file)
@@ -153,7 +153,7 @@ public:
     virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
     virtual void init(AuthConfig *);
     virtual void parse(AuthConfig *, int, char *);
-    virtual void registerWithCacheManager(CacheManager & manager);
+    virtual void registerWithCacheManager(void);
     virtual const char * type() const;
     int authenticateChildren;
     char *digestAuthRealm;
@@ -164,6 +164,7 @@ public:
     int NonceStrictness;
     int CheckNonceCount;
     int PostWorkaround;
+    int utf8;
 };
 
 typedef class AuthDigestConfig auth_digest_config;
index c85842cd424f76c7a86c15074945ddbbd1b178b2..b656b6c46eb26919eb0ed6f8e8bd696cea0ae3d0 100644 (file)
  \ingroup AuthNegotiateAPI
  */
 
+/**
+ * Maximum length (buffer size) for token strings.
+ */
+// AYJ: must match re-definition in helpers/negotiate_auth/squid_kerb_auth/squid_kerb_auth.c
+#define MAX_AUTHTOKEN_LEN   32768
+
 static void
 authenticateNegotiateReleaseServer(AuthUserRequest * auth_user_request);
 
@@ -212,9 +218,10 @@ AuthNegotiateConfig::init(AuthConfig * scheme)
 }
 
 void
-AuthNegotiateConfig::registerWithCacheManager(CacheManager & manager)
+AuthNegotiateConfig::registerWithCacheManager(void)
 {
-    manager.registerAction("negotiateauthenticator",
+    CacheManager::GetInstance()->
+            registerAction("negotiateauthenticator",
                            "Negotiate User Authenticator Stats",
                            authenticateNegotiateStats, 0, 1);
 }
@@ -561,7 +568,7 @@ void
 AuthNegotiateUserRequest::module_start(RH * handler, void *data)
 {
     authenticateStateData *r = NULL;
-    static char buf[8192];
+    static char buf[MAX_AUTHTOKEN_LEN];
     negotiate_user_t *negotiate_user;
     AuthUser *auth_user = user();
 
@@ -587,9 +594,9 @@ AuthNegotiateUserRequest::module_start(RH * handler, void *data)
     AUTHUSERREQUESTLOCK(r->auth_user_request, "r");
 
     if (auth_state == AUTHENTICATE_STATE_INITIAL) {
-        snprintf(buf, 8192, "YR %s\n", client_blob); //CHECKME: can ever client_blob be 0 here?
+        snprintf(buf, MAX_AUTHTOKEN_LEN, "YR %s\n", client_blob); //CHECKME: can ever client_blob be 0 here?
     } else {
-        snprintf(buf, 8192, "KK %s\n", client_blob);
+        snprintf(buf, MAX_AUTHTOKEN_LEN, "KK %s\n", client_blob);
     }
 
     waiting = 1;
index a9bc53d6165431839e40a5598d24d01857e9420c..e46604afa62a6cc358625ea970e3617f18e8381a 100644 (file)
@@ -125,7 +125,7 @@ public:
     virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
     virtual void init(AuthConfig *);
     virtual void parse(AuthConfig *, int, char *);
-    virtual void registerWithCacheManager(CacheManager & manager);
+    virtual void registerWithCacheManager(void);
     virtual const char * type() const;
     int authenticateChildren;
     int keep_alive;
index bef4388dce73f0a1849a4a4efc7262d8678ed023..edeb966d0d93f23882d011ef22b71baacaf3f296 100644 (file)
@@ -198,9 +198,10 @@ AuthNTLMConfig::init(AuthConfig * scheme)
 }
 
 void
-AuthNTLMConfig::registerWithCacheManager(CacheManager & manager)
+AuthNTLMConfig::registerWithCacheManager(void)
 {
-    manager.registerAction("ntlmauthenticator",
+    CacheManager::GetInstance()->
+            registerAction("ntlmauthenticator",
                            "NTLM User Authenticator Stats",
                            authenticateNTLMStats, 0, 1);
 }
@@ -279,7 +280,6 @@ AuthNTLMConfig::fixHeader(AuthUserRequest *auth_user_request, HttpReply *rep, ht
 
         if (!keep_alive) {
             /* drop the connection */
-            rep->header.delByName("keep-alive");
             request->flags.proxy_keepalive = 0;
         }
     } else {
@@ -292,7 +292,6 @@ AuthNTLMConfig::fixHeader(AuthUserRequest *auth_user_request, HttpReply *rep, ht
         case AUTHENTICATE_STATE_FAILED:
             /* here it makes sense to drop the connection, as auth is
              * tied to it, even if MAYBE the client could handle it - Kinkie */
-            rep->header.delByName("keep-alive");
             request->flags.proxy_keepalive = 0;
             /* fall through */
 
index 38351a77521143edd5ff1c4b7b68acd7df0a6a97..cb76a9c214ee625aab17b4fc7e823faa26dd4e9e 100644 (file)
@@ -110,7 +110,7 @@ public:
     virtual void fixHeader(AuthUserRequest *, HttpReply *, http_hdr_type, HttpRequest *);
     virtual void init(AuthConfig *);
     virtual void parse(AuthConfig *, int, char *);
-    virtual void registerWithCacheManager(CacheManager & manager);
+    virtual void registerWithCacheManager(void);
     virtual const char * type() const;
     int authenticateChildren;
     int keep_alive;
index 6285e4626a4d55712e4b1a43622e7d8b029b3d43..6e4d4143d885c96d19f04370cb56c6f4e0981429 100644 (file)
@@ -73,6 +73,15 @@ authenticateSchemeCount(void)
     return rv;
 }
 
+static void
+authenticateRegisterWithCacheManager(authConfig * config)
+{
+    for (authConfig::iterator i = config->begin(); i != config->end(); ++i) {
+        AuthConfig *scheme = *i;
+        scheme->registerWithCacheManager();
+    }
+}
+
 void
 authenticateInit(authConfig * config)
 {
@@ -87,15 +96,8 @@ authenticateInit(authConfig * config)
         AuthUser::cacheInit();
     else
         AuthUser::CachedACLsReset();
-}
 
-void
-authenticateRegisterWithCacheManager(authConfig * config, CacheManager & manager)
-{
-    for (authConfig::iterator i = config->begin(); i != config->end(); ++i) {
-        AuthConfig *scheme = *i;
-        scheme->registerWithCacheManager(manager);
-    }
+    authenticateRegisterWithCacheManager(&Config.authConfiguration);
 }
 
 void
index 8b0dd00b387b91bc72216b1db22adc8983d73382..c74ba2d66397a763801bd51a514b04150ccfb53f 100644 (file)
@@ -83,8 +83,6 @@ extern void authenticateAuthUserMerge(AuthUser *, AuthUser *);
 /// \ingroup AuthAPI
 extern void authenticateInit(authConfig *);
 /// \ingroup AuthAPI
-extern void authenticateRegisterWithCacheManager(authConfig * config, CacheManager & manager);
-/// \ingroup AuthAPI
 extern void authenticateShutdown(void);
 /// \ingroup AuthAPI
 extern int authenticateAuthUserInuse(AuthUser * auth_user);
index d0390bb69638d0b1c90b636d837b55cb30d060c4..216568dcc81983879b80e7e789fd5160639b9955 100644 (file)
@@ -388,9 +388,10 @@ parseOneConfigFile(const char *file_name, unsigned int depth)
 }
 
 int
-parseConfigFile(const char *file_name, CacheManager & manager)
+parseConfigFile(const char *file_name)
 {
     int err_count = 0;
+    CacheManager *manager=CacheManager::GetInstance();
 
     configFreeMemory();
 
@@ -415,7 +416,7 @@ parseConfigFile(const char *file_name, CacheManager & manager)
     }
 
     if (opt_send_signal == -1) {
-        manager.registerAction("config",
+        manager->registerAction("config",
                                "Current Squid Configuration",
                                dump_config,
                                1, 1);
@@ -456,7 +457,7 @@ configDoConfigure(void)
     if (Config.onoff.httpd_suppress_version_string)
         visible_appname_string = (char *)appname_string;
     else
-        visible_appname_string = (char *)full_appname_string;
+        visible_appname_string = (char const *)APP_FULLNAME;
 
 #if USE_DNSSERVERS
 
@@ -527,7 +528,8 @@ configDoConfigure(void)
 
     requirePathnameExists("Icon Directory", Config.icons.directory);
 
-    requirePathnameExists("Error Directory", Config.errorDirectory);
+    if(Config.errorDirectory)
+        requirePathnameExists("Error Directory", Config.errorDirectory);
 
 #if HTTP_VIOLATIONS
 
@@ -1735,11 +1737,26 @@ parse_peer(peer ** head)
         } else if (!strcasecmp(token, "htcp-oldsquid")) {
             p->options.htcp = 1;
             p->options.htcp_oldsquid = 1;
+        } else if (!strcasecmp(token, "htcp-no-clr")) {
+            if (p->options.htcp_only_clr)
+               fatalf("parse_peer: can't set htcp-no-clr and htcp-only-clr simultaneously");
+            p->options.htcp = 1;
+            p->options.htcp_no_clr = 1;
+        } else if (!strcasecmp(token, "htcp-no-purge-clr")) {
+            p->options.htcp = 1;
+            p->options.htcp_no_purge_clr = 1;
+        } else if (!strcasecmp(token, "htcp-only-clr")) {
+            if (p->options.htcp_no_clr)
+               fatalf("parse_peer: can't set htcp-no-clr and htcp-only-clr simultaneously");
+            p->options.htcp = 1;
+            p->options.htcp_only_clr = 1;
+        } else if (!strcasecmp(token, "htcp-forward-clr")) {
+            p->options.htcp = 1;
+            p->options.htcp_forward_clr = 1;
 #endif
 
         } else if (!strcasecmp(token, "no-netdb-exchange")) {
             p->options.no_netdb_exchange = 1;
-#if USE_CARP
 
         } else if (!strcasecmp(token, "carp")) {
             if (p->type != PEER_PARENT)
@@ -1747,7 +1764,18 @@ parse_peer(peer ** head)
 
             p->options.carp = 1;
 
-#endif
+        } else if (!strcasecmp(token, "userhash")) {
+            if (p->type != PEER_PARENT)
+                fatalf("parse_peer: non-parent userhash peer %s/%d\n", p->host, p->http_port);
+
+            p->options.userhash = 1;
+
+        } else if (!strcasecmp(token, "sourcehash")) {
+            if (p->type != PEER_PARENT)
+                fatalf("parse_peer: non-parent sourcehash peer %s/%d\n", p->host, p->http_port);
+
+            p->options.sourcehash = 1;
+
 #if DELAY_POOLS
 
         } else if (!strcasecmp(token, "no-delay")) {
@@ -1858,7 +1886,7 @@ parse_peer(peer ** head)
 
     *head = p;
 
-    peerClearRR(p);
+    peerClearRRStart();
 }
 
 static void
@@ -2604,11 +2632,13 @@ parse_wordlist(wordlist ** list)
         wordlistAdd(list, token);
 }
 
+#if 0 /* now unused */
 static int
 check_null_wordlist(wordlist * w)
 {
     return w == NULL;
 }
+#endif
 
 static int
 check_null_acl_access(acl_access * a)
@@ -2954,6 +2984,10 @@ parse_http_port_option(http_port_list * s, char *token)
         }
 #endif
     } else if (strcmp(token, "tproxy") == 0) {
+        if(s->intercepted || s->accel) {
+            debugs(3,DBG_CRITICAL, "http(s)_port: TPROXY option requires its own interception port. It cannot be shared.");
+            self_destruct();
+        }
         s->spoof_client_ip = 1;
         IPInterceptor.StartTransparency();
         /* Log information regarding the port modes under transparency. */
@@ -3038,6 +3072,11 @@ parse_http_port_option(http_port_list * s, char *token)
     } else {
         self_destruct();
     }
+
+    if( s->spoof_client_ip && (s->intercepted || s->accel) ) {
+        debugs(3,DBG_CRITICAL, "http(s)_port: TPROXY option requires its own interception port. It cannot be shared.");
+        self_destruct();
+    }
 }
 
 static http_port_list *
index 00f5b38e9afa34311617f5464ec8529f48876886..7d05187c1e4969e70fb57cbc418e8dffb7a9fd02 100644 (file)
@@ -41,6 +41,7 @@
 #include "fde.h"
 #include "SquidTime.h"
 #include "wordlist.h"
+#include "Debug.h"
 
 /**
  \defgroup CacheManagerInternal Cache Manager Internals
 /// \ingroup CacheManagerInternal
 #define MGR_PASSWD_SZ 128
 
-/// \ingroup CacheManagerInternal
-typedef struct
-{
-    StoreEntry *entry;
-    char *action;
-    char *user_name;
-    char *passwd;
-} cachemgrStateData;
-
-static CacheManagerAction *cachemgrFindAction(const char *action);
-static cachemgrStateData *cachemgrParseUrl(const char *url);
-static void cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request);
-static int cachemgrCheckPassword(cachemgrStateData *);
-static void cachemgrStateFree(cachemgrStateData * mgr);
-static char *cachemgrPasswdGet(cachemgr_passwd *, const char *);
-static const char *cachemgrActionProtection(const CacheManagerAction * at);
-static OBJH cachemgrShutdown;
-static OBJH cachemgrReconfigure;
-static OBJH cachemgrMenu;
-static OBJH cachemgrOfflineToggle;
-
-/// \ingroup CacheManagerInternal
-CacheManagerAction *ActionTable = NULL;
 
+/**
+ \ingroup CacheManagerInternals
+ * Constructor. Its purpose is to register internal commands
+ */
 CacheManager::CacheManager()
 {
-    registerAction("menu", "This Cachemanager Menu", cachemgrMenu, 0, 1);
-    registerAction("shutdown",
-                   "Shut Down the Squid Process",
-                   cachemgrShutdown, 1, 1);
-    registerAction("reconfigure",
-                     "Reconfigure the Squid Process",
-                     cachemgrReconfigure, 1, 1);
-    registerAction("offline_toggle",
-                   "Toggle offline_mode setting",
-                   cachemgrOfflineToggle, 1, 1);
+    registerAction(new OfflineToggleAction);
+    registerAction(new ShutdownAction);
+    registerAction(new ReconfigureAction);
+    registerAction(new MenuAction(this));
 }
 
+/**
+ \ingroup CacheManagerAPI
+ * Registers a C-style action, which is implemented as a pointer to a function
+ * taking as argument a pointer to a StoreEntry and returning void.
+ * Implemented via CacheManagerActionLegacy.
+ */
 void
 CacheManager::registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic)
 {
-    CacheManagerAction *a;
-    CacheManagerAction **A;
+    debugs(16, 3, "CacheManager::registerAction: registering legacy " <<  action);
+    registerAction(new CacheManagerActionLegacy(action,desc,pw_req_flag,atomic,handler));
+}
 
+/**
+ \ingroup CacheManagerAPI
+ * Registers a C++-style action, via a poiner to a subclass of 
+ * a CacheManagerAction object, whose run() method will be invoked when
+ * CacheManager identifies that the user has requested the action.
+ */
+void
+CacheManager::registerAction(CacheManagerAction *anAction)
+{
+    char *action = anAction->action;
     if (findAction(action) != NULL) {
-        debugs(16, 3, "CacheManager::registerAction: Duplicate '" << action << "'");
+        debugs(16, 2, "CacheManager::registerAction: Duplicate '" << action << "'. Skipping.");
         return;
     }
 
     assert (strstr (" ", action) == NULL);
-    a = (CacheManagerAction *)xcalloc(1, sizeof(CacheManagerAction));
-    a->action = xstrdup(action);
-    a->desc = xstrdup(desc);
-    a->handler = handler;
-    a->flags.pw_req = pw_req_flag;
-    a->flags.atomic = atomic;
 
-    for (A = &ActionTable; *A; A = &(*A)->next);
-    *A = a;
+    ActionsList += anAction;
 
     debugs(16, 3, "CacheManager::registerAction: registered " <<  action);
 }
 
+
+/**
+ \ingroup CacheManagerInternal
+ * Locates an action in the actions registry ActionsList.
+\retval NULL  if Action not found
+\retval CacheManagerAction* if the action was found
+ */
 CacheManagerAction *
 CacheManager::findAction(char const * action)
 {
-    return cachemgrFindAction(action);
-}
-
-/// \ingroup CacheManagerInternal
-static CacheManagerAction *
-cachemgrFindAction(const char *action)
-{
-    CacheManagerAction *a;
+    CacheManagerActionList::iterator a;
 
-    for (a = ActionTable; a != NULL; a = a->next) {
-        if (0 == strcmp(a->action, action))
-            return a;
+    debugs(16, 5, "CacheManager::findAction: looking for action " << action);
+    for ( a = ActionsList.begin(); a != ActionsList.end(); a++) {
+        if (0 == strcmp((*a)->action, action)) {
+            debugs(16, 6, " found");
+            return *a;
+        }
     }
 
+    debugs(16, 6, "Action not found.");
     return NULL;
 }
 
-/// \ingroup CacheManagerInternal
-static cachemgrStateData *
-cachemgrParseUrl(const char *url)
+/**
+ \ingroup CacheManagerInternal
+ * define whether the URL is a cache-manager URL and parse the action
+ * requested by the user. Checks via CacheManager::ActionProtection() that the
+ * item is accessible by the user.
+ \retval CacheManager::cachemgrStateData state object for the following handling
+ \retval NULL if the action can't be found or can't be accessed by the user
+ */
+CacheManager::cachemgrStateData *
+CacheManager::ParseUrl(const char *url)
 {
     int t;
     LOCAL_ARRAY(char, host, MAX_URL);
@@ -157,14 +154,14 @@ cachemgrParseUrl(const char *url)
         xstrncpy(request, "menu", MAX_URL);
 #endif
 
-    } else if ((a = cachemgrFindAction(request)) == NULL) {
-        debugs(16, 1, "cachemgrParseUrl: action '" << request << "' not found");
+    } else if ((a = findAction(request)) == NULL) {
+        debugs(16, DBG_IMPORTANT, "CacheManager::ParseUrl: action '" << request << "' not found");
         return NULL;
     } else {
-        prot = cachemgrActionProtection(a);
+        prot = ActionProtection(a);
 
         if (!strcmp(prot, "disabled") || !strcmp(prot, "hidden")) {
-            debugs(16, 1, "cachemgrParseUrl: action '" << request << "' is " << prot);
+            debugs(16, DBG_IMPORTANT, "CacheManager::ParseUrl: action '" << request << "' is " << prot);
             return NULL;
         }
     }
@@ -182,8 +179,13 @@ cachemgrParseUrl(const char *url)
 }
 
 /// \ingroup CacheManagerInternal
-static void
-cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
+/*
+ \ingroup CacheManagerInternal
+ * Decodes the headers needed to perform user authentication and fills
+ * the details into the cachemgrStateData argument
+ */
+void
+CacheManager::ParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
 {
     const char *basic_cookie;  /* base 64 _decoded_ user:passwd pair */
     const char *passwd_del;
@@ -194,7 +196,7 @@ cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
         return;
 
     if (!(passwd_del = strchr(basic_cookie, ':'))) {
-        debugs(16, 1, "cachemgrParseHeaders: unknown basic_cookie format '" << basic_cookie << "'");
+        debugs(16, DBG_IMPORTANT, "CacheManager::ParseHeaders: unknown basic_cookie format '" << basic_cookie << "'");
         return;
     }
 
@@ -210,7 +212,7 @@ cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
     mgr->passwd = xstrdup(passwd_del + 1);
 
     /* warning: this prints decoded password which maybe not what you want to do @?@ @?@ */
-    debugs(16, 9, "cachemgrParseHeaders: got user: '" << mgr->user_name << "' passwd: '" << mgr->passwd << "'");
+    debugs(16, 9, "CacheManager::ParseHeaders: got user: '" << mgr->user_name << "' passwd: '" << mgr->passwd << "'");
 }
 
 /**
@@ -220,11 +222,13 @@ cachemgrParseHeaders(cachemgrStateData * mgr, const HttpRequest * request)
  \retval 1     if mgr->password is "disable"
  \retval !0    if mgr->password does not match configured password
  */
-static int
-cachemgrCheckPassword(cachemgrStateData * mgr)
+int
+CacheManager::CheckPassword(cachemgrStateData * mgr)
 {
-    char *pwd = cachemgrPasswdGet(Config.passwd_list, mgr->action);
-    CacheManagerAction *a = cachemgrFindAction(mgr->action);
+    char *pwd = PasswdGet(Config.passwd_list, mgr->action);
+    CacheManagerAction *a = findAction(mgr->action);
+
+    debugs(16, 4, "CacheManager::CheckPassword for action " << mgr->action);
     assert(a != NULL);
 
     if (pwd == NULL)
@@ -243,8 +247,8 @@ cachemgrCheckPassword(cachemgrStateData * mgr)
 }
 
 /// \ingroup CacheManagerInternal
-static void
-cachemgrStateFree(cachemgrStateData * mgr)
+void
+CacheManager::StateFree(cachemgrStateData * mgr)
 {
     safe_free(mgr->action);
     safe_free(mgr->user_name);
@@ -253,16 +257,21 @@ cachemgrStateFree(cachemgrStateData * mgr)
     xfree(mgr);
 }
 
-// API
+/**
+ \ingroup CacheManagerAPI
+ * Main entry point in the Cache Manager's activity. Gets called as part
+ * of the forward chain if the right URL is detected there. Initiates
+ * all needed internal work and renders the response.
+ */
 void
-cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry)
+CacheManager::Start(int fd, HttpRequest * request, StoreEntry * entry)
 {
     cachemgrStateData *mgr = NULL;
     ErrorState *err = NULL;
     CacheManagerAction *a;
-    debugs(16, 3, "objectcacheStart: '" << entry->url() << "'" );
+    debugs(16, 3, "CacheManager::Start: '" << entry->url() << "'" );
 
-    if ((mgr = cachemgrParseUrl(entry->url())) == NULL) {
+    if ((mgr = ParseUrl(entry->url())) == NULL) {
         err = errorCon(ERR_INVALID_URL, HTTP_NOT_FOUND, request);
         err->url = xstrdup(entry->url());
         errorAppendEntry(entry, err);
@@ -275,14 +284,14 @@ cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry)
     entry->lock();
     entry->expires = squid_curtime;
 
-    debugs(16, 5, "CACHEMGR: " << fd_table[fd].ipaddr << " requesting '" << mgr->action << "'");
+    debugs(16, 5, "CacheManager: " << fd_table[fd].ipaddr << " requesting '" << mgr->action << "'");
 
     /* get additional info from request headers */
-    cachemgrParseHeaders(mgr, request);
+    ParseHeaders(mgr, request);
 
     /* Check password */
 
-    if (cachemgrCheckPassword(mgr) != 0) {
+    if (CheckPassword(mgr) != 0) {
         /* build error message */
         ErrorState *err;
         HttpReply *rep;
@@ -290,17 +299,17 @@ cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry)
         /* warn if user specified incorrect password */
 
         if (mgr->passwd)
-            debugs(16, 1, "CACHEMGR: " << 
+            debugs(16, DBG_IMPORTANT, "CacheManager: " << 
                    (mgr->user_name ? mgr->user_name : "<unknown>") << "@" << 
                    fd_table[fd].ipaddr << ": incorrect password for '" << 
                    mgr->action << "'" );
         else
-            debugs(16, 1, "CACHEMGR: " << 
+            debugs(16, DBG_IMPORTANT, "CacheManager: " << 
                    (mgr->user_name ? mgr->user_name : "<unknown>") << "@" << 
                    fd_table[fd].ipaddr << ": password needed for '" << 
                    mgr->action << "'" );
 
-        rep = errorBuildReply(err);
+        rep = err->BuildHttpReply();
 
         errorStateFree(err);
 
@@ -317,17 +326,17 @@ cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry)
 
         entry->complete();
 
-        cachemgrStateFree(mgr);
+        StateFree(mgr);
 
         return;
     }
 
-    debugs(16, 1, "CACHEMGR: " << 
+    debugs(16, DBG_IMPORTANT, "CacheManager: " << 
            (mgr->user_name ? mgr->user_name : "<unknown>") << "@" << 
            fd_table[fd].ipaddr << " requesting '" << 
            mgr->action << "'" );
     /* retrieve object requested */
-    a = cachemgrFindAction(mgr->action);
+    a = findAction(mgr->action);
     assert(a != NULL);
 
     entry->buffer();
@@ -345,51 +354,60 @@ cachemgrStart(int fd, HttpRequest * request, StoreEntry * entry)
         entry->replaceHttpReply(rep);
     }
 
-    a->handler(entry);
+    a->run(entry);
 
     entry->flush();
 
     if (a->flags.atomic)
         entry->complete();
 
-    cachemgrStateFree(mgr);
+    StateFree(mgr);
 }
 
 /// \ingroup CacheManagerInternal
-static void
-cachemgrShutdown(StoreEntry * entryunused)
+void CacheManager::ShutdownAction::run(StoreEntry *sentry)
 {
-    debugs(16, 0, "Shutdown by command.");
+    debugs(16, DBG_CRITICAL, "Shutdown by Cache Manager command.");
     shut_down(0);
 }
+/// \ingroup CacheManagerInternal
+CacheManager::ShutdownAction::ShutdownAction() : CacheManagerAction("shutdown","Shut Down the Squid Process", 1, 1) { }
 
 /// \ingroup CacheManagerInternal
-static void
-cachemgrReconfigure(StoreEntry * sentry)
+void
+CacheManager::ReconfigureAction::run(StoreEntry * sentry)
 {
-    debug(16, 0) ("Reconfigure by command.\n");
+    debugs(16, DBG_IMPORTANT, "Reconfigure by Cache Manager command.");
     storeAppendPrintf(sentry, "Reconfiguring Squid Process ....");
     reconfigure(SIGHUP);
 }
+/// \ingroup CacheManagerInternal
+CacheManager::ReconfigureAction::ReconfigureAction() : CacheManagerAction("reconfigure","Reconfigure Squid", 1, 1) { }
 
 /// \ingroup CacheManagerInternal
-static void
-cachemgrOfflineToggle(StoreEntry * sentry)
+void
+CacheManager::OfflineToggleAction::run(StoreEntry * sentry)
 {
     Config.onoff.offline = !Config.onoff.offline;
-    debugs(16, 0, "offline_mode now " << (Config.onoff.offline ? "ON" : "OFF") << ".");
+    debugs(16, DBG_IMPORTANT, "offline_mode now " << (Config.onoff.offline ? "ON" : "OFF") << " by Cache Manager request.");
 
     storeAppendPrintf(sentry, "offline_mode is now %s\n",
                       Config.onoff.offline ? "ON" : "OFF");
 }
-
 /// \ingroup CacheManagerInternal
-static const char *
-cachemgrActionProtection(const CacheManagerAction * at)
+CacheManager::OfflineToggleAction::OfflineToggleAction() : CacheManagerAction ("offline_toggle", "Toggle offline_mode setting", 1, 1) { }
+
+/*
+ \ingroup CacheManagerInternal
+ * Renders the protection level text for an action.
+ * Also doubles as a check for the protection level.
+ */
+const char *
+CacheManager::ActionProtection(const CacheManagerAction * at)
 {
     char *pwd;
     assert(at);
-    pwd = cachemgrPasswdGet(Config.passwd_list, at->action);
+    pwd = PasswdGet(Config.passwd_list, at->action);
 
     if (!pwd)
         return at->flags.pw_req ? "hidden" : "public";
@@ -404,20 +422,28 @@ cachemgrActionProtection(const CacheManagerAction * at)
 }
 
 /// \ingroup CacheManagerInternal
-static void
-cachemgrMenu(StoreEntry * sentry)
+void
+CacheManager::MenuAction::run(StoreEntry * sentry)
 {
-    CacheManagerAction *a;
+    CacheManagerActionList::iterator a;
 
-    for (a = ActionTable; a != NULL; a = a->next) {
+    debugs(16, 4, "CacheManager::MenuCommand invoked");
+    for (a = cmgr->ActionsList.begin(); a != cmgr->ActionsList.end(); ++a) {
+        debugs(16, 5, "  showing action " << (*a)->action);
         storeAppendPrintf(sentry, " %-22s\t%-32s\t%s\n",
-                          a->action, a->desc, cachemgrActionProtection(a));
+            (*a)->action, (*a)->desc, cmgr->ActionProtection(*a));
     }
 }
-
 /// \ingroup CacheManagerInternal
-static char *
-cachemgrPasswdGet(cachemgr_passwd * a, const char *action)
+CacheManager::MenuAction::MenuAction(CacheManager *aMgr) : CacheManagerAction ("menu", "Cache Manager Menu", 1, 1), cmgr(aMgr) { }
+
+/*
+ \ingroup CacheManagerInternal
+ * gets from the global Config the password the user would need to supply
+ * for the action she queried
+ */
+char *
+CacheManager::PasswdGet(cachemgr_passwd * a, const char *action)
 {
     wordlist *w;
 
@@ -435,3 +461,44 @@ cachemgrPasswdGet(cachemgr_passwd * a, const char *action)
 
     return NULL;
 }
+
+CacheManager* CacheManager::instance=0;
+
+/**
+ \ingroup CacheManagerAPI
+ * Singleton accessor method.
+ */
+CacheManager*
+CacheManager::GetInstance() {
+        if (instance == 0) {
+                debugs(16, 6, "CacheManager::GetInstance: starting cachemanager up");
+                instance = new CacheManager;
+        }
+        return instance;
+}
+
+
+/// \ingroup CacheManagerInternal
+void CacheManagerActionLegacy::run(StoreEntry *sentry)
+{
+       handler(sentry);
+}
+/// \ingroup CacheManagerInternal
+CacheManagerAction::CacheManagerAction(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic)
+{
+    flags.pw_req = isPwReq;
+    flags.atomic = isAtomic;
+    action = xstrdup (anAction);
+    desc = xstrdup (aDesc);
+}
+/// \ingroup CacheManagerInternal
+CacheManagerAction::~CacheManagerAction()
+{
+    xfree(action);
+    xfree(desc);
+}
+
+/// \ingroup CacheManagerInternal
+CacheManagerActionLegacy::CacheManagerActionLegacy(char const *anAction, char const *aDesc, unsigned int isPwReq, unsigned int isAtomic, OBJH *aHandler) : CacheManagerAction(anAction, aDesc, isPwReq, isAtomic), handler(aHandler)
+{
+}
index 9c7fa65324a297ac9631c487c83f54c14d0e4a80..ab49036d31ef5f65f3f487a43b3289966ab4b1d2 100644 (file)
@@ -38,8 +38,6 @@
 #include "CacheManager.h"
 #include "Store.h"
 
-#if USE_CARP
-
 #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
 
 static int n_carp_peers = 0;
@@ -54,6 +52,13 @@ peerSortWeight(const void *a, const void *b)
     return (*p1)->weight - (*p2)->weight;
 }
 
+static void
+carpRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("carp", "CARP information", carpCachemgr, 0, 1);
+}
+
 void
 carpInit(void)
 {
@@ -72,6 +77,10 @@ carpInit(void)
 
     safe_free(carp_peers);
     n_carp_peers = 0;
+
+    /* initialize cache manager before we have a chance to leave the execution path */
+    carpRegisterWithCacheManager();
+
     /* find out which peers we have */
 
     for (p = Config.peers; p; p = p->next) {
@@ -152,12 +161,6 @@ carpInit(void)
     }
 }
 
-void
-carpRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("carp", "CARP information", carpCachemgr, 0, 1);
-}
-
 peer *
 carpSelectParent(HttpRequest * request)
 {
@@ -227,5 +230,3 @@ carpCachemgr(StoreEntry * sentry)
                           sumfetches ? (double) p->stats.fetches / sumfetches : -1.0);
     }
 }
-
-#endif
index 3ff8bd94af0a446af123b8c9e4477ef4faa3e7d0..462354d74caea8f96eecc395201a2604ea507de1 100644 (file)
@@ -271,16 +271,17 @@ cbdataInternalAddType(cbdata_type type, const char *name, int size, FREE * free_
 }
 
 void
-cbdataRegisterWithCacheManager(CacheManager & manager)
+cbdataRegisterWithCacheManager(void)
 {
-    manager.registerAction("cbdata",
-                           "Callback Data Registry Contents",
-                           cbdataDump, 0, 1);
+    CacheManager *manager=CacheManager::GetInstance();
+    manager->registerAction("cbdata",
+                            "Callback Data Registry Contents",
+                            cbdataDump, 0, 1);
 #if CBDATA_DEBUG
 
-    manager.registerAction("cbdatahistory",
-                           "Detailed call history for all current cbdata contents",
-                           cbdataDumpHistory, 0, 1);
+    manager->registerAction("cbdatahistory",
+                            "Detailed call history for all current cbdata contents",
+                            cbdataDumpHistory, 0, 1);
 #endif
 }
 
index e75814356064a1db3433040f32c6f24e6ca64bbb..6a9eb4f750038544421c043c217f7b70c784bc63 100644 (file)
@@ -236,7 +236,7 @@ typedef enum {
 } cbdata_type;
 
 /// \ingroup CBDATAAPI
-extern void cbdataRegisterWithCacheManager(CacheManager & manager);
+extern void cbdataRegisterWithCacheManager(void);
 
 #if CBDATA_DEBUG
 extern void *cbdataInternalAllocDbg(cbdata_type type, const char *, int);
index c259e612b1a3387f87758788e7830056536f2418..54b5c33cefe548877b4eff46080a851153add4a9 100644 (file)
@@ -48,6 +48,8 @@ time_t
 tristate
 uri_whitespace
 ushort
+wccp2_method
+wccp2_amethod
 wccp2_service
 wccp2_service_info
 wordlist
index 26797c7f83173fbcd3f90970f481e38b1f5a1bf6..86a1120189e87a2ba09870c186a13f95a4adc4d7 100644 (file)
@@ -411,13 +411,23 @@ DOC_START
          %USER_CERTCHAIN SSL User certificate chain in PEM format
          %USER_CERT_xx SSL User certificate subject attribute xx
          %USER_CA_xx   SSL User certificate issuer attribute xx
-         %{Header}     HTTP request header
-         %{Hdr:member} HTTP request header list member
-         %{Hdr:;member}
+
+         %>{Header}    HTTP request header
+         %>{Hdr:member}
+                       HTTP request header list member
+         %>{Hdr:;member}
                        HTTP request header list member using ; as
                        list separator. ; can be any non-alphanumeric
                        character.
 
+         %<{Header}    HTTP reply header
+         %<{Hdr:member}
+                       HTTP reply header list member
+         %<{Hdr:;member}
+                       HTTP reply header list member using ; as
+                       list separator. ; can be any non-alphanumeric
+                       character.
+
        In addition to the above, any string specified in the referencing
        acl will also be included in the helper request line, after the
        specified formats (see the "acl external" directive)
@@ -461,12 +471,14 @@ DEFAULT: all src all
 DOC_START
        Defining an Access List
 
-       acl aclname acltype string1 ...
-       acl aclname acltype "file" ...
+       Every access list definition must begin with an aclname and acltype, 
+       followed by either type-specific arguments or a quoted filename that
+       they are read from.
 
-       when using "file", the file should contain one item per line
+          acl aclname acltype argument ...
+          acl aclname acltype "file" ...
 
-       acltype is one of the types described below
+       When using "file", the file should contain one item per line.
 
        By default, regular expressions are CASE-SENSITIVE.  To make
        them case-insensitive, use the -i option.
@@ -474,10 +486,10 @@ DOC_START
 
        ***** ACL TYPES AVAILABLE *****
 
-       acl aclname src      ip-address/netmask ... (clients IP address)
-       acl aclname src      addr1-addr2/netmask ... (range of addresses)
-       acl aclname dst      ip-address/netmask ... (URL host's IP address)
-       acl aclname myip     ip-address/netmask ... (local socket IP address)
+       acl aclname src ip-address/netmask ...          # clients IP address
+       acl aclname src addr1-addr2/netmask ...         # range of addresses
+       acl aclname dst ip-address/netmask ...          # URL host's IP address
+       acl aclname myip ip-address/netmask ...         # local socket IP address
 
        acl aclname arp      mac-address ... (xx:xx:xx:xx:xx:xx notation)
          # The arp ACL requires the special configure option --enable-arp-acl.
@@ -488,16 +500,16 @@ DOC_START
          # the same subnet. If the client is on a different subnet, then Squid cannot
          # find out its MAC address.
 
-       acl aclname srcdomain   .foo.com ...    # reverse lookup, from client IP
-       acl aclname dstdomain   .foo.com ...    # Destination server from URL
-       acl aclname srcdom_regex [-i] xxx ...   # regex matching client name
-       acl aclname dstdom_regex [-i] xxx ...   # regex matching server
+       acl aclname srcdomain   .foo.com ...            # reverse lookup, from client IP
+       acl aclname dstdomain   .foo.com ...            # Destination server from URL
+       acl aclname srcdom_regex [-i] \.foo\.com ...    # regex matching client name
+       acl aclname dstdom_regex [-i] \.foo\.com ...    # regex matching server
          # For dstdomain and dstdom_regex a reverse lookup is tried if a IP
          # based URL is used and no match is found. The name "none" is used
          # if the reverse lookup fails.
 
-       acl aclname src_as   number ...
-       acl aclname dst_as   number ...
+       acl aclname src_as number ...
+       acl aclname dst_as number ...
          # Except for access control, AS numbers can be used for
          # routing of requests to specific caches. Here's an
          # example for routing all requests for AS#1241 and only
@@ -506,39 +518,39 @@ DOC_START
          # cache_peer_access mycache.mydomain.net allow asexample
          # cache_peer_access mycache_mydomain.net deny all
 
-       acl aclname time     [day-abbrevs]  [h1:m1-h2:m2]
-           day-abbrevs:
-               S - Sunday
-               M - Monday
-               T - Tuesday
-               W - Wednesday
-               H - Thursday
-               F - Friday
-               A - Saturday
-           h1:m1 must be less than h2:m2
-
-       acl aclname url_regex [-i] ^http:// ... # regex matching on whole URL
+       acl aclname time [day-abbrevs] [h1:m1-h2:m2]
+         #  day-abbrevs:
+         #     S - Sunday
+         #     M - Monday
+         #     T - Tuesday
+         #     W - Wednesday
+         #     H - Thursday
+         #     F - Friday
+         #     A - Saturday
+         #  h1:m1 must be less than h2:m2
+
+       acl aclname url_regex [-i] ^http:// ...         # regex matching on whole URL
        acl aclname urlpath_regex [-i] \.gif$ ...       # regex matching on URL path
 
-       acl aclname port     80 70 21 ...
-       acl aclname port     0-1024 ...         # ranges allowed
-       acl aclname myport   3128 ...           # (local socket TCP port)
+       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 proto HTTP FTP ...
 
-       acl aclname method   GET POST ...
+       acl aclname method GET POST ...
 
        acl aclname http_status 200 301 500- 400-403 ...     # status code in reply
 
-       acl aclname browser  [-i] regexp ...
+       acl aclname browser [-i] regexp ...
          # pattern match on User-Agent header (see also req_header below)
 
-       acl aclname referer_regex  [-i] regexp ...
+       acl aclname referer_regex [-i] regexp ...
          # pattern match on Referer header
          # Referer is highly unreliable, so use with care
 
-       acl aclname ident    username ...
+       acl aclname ident username ...
        acl aclname ident_regex [-i] pattern ...
          # string match on ident output.
          # use REQUIRED to accept any non-null ident.
@@ -583,7 +595,7 @@ DOC_START
          # clients may appear to come from multiple addresses if they are
          # going through proxy farms, so a limit of 1 may cause user problems.
 
-       acl aclname req_mime_type [-i] mime-type1 ...
+       acl aclname req_mime_type [-i] mime-type ...
          # regex match against the mime type of the request generated
          # by the client. Can be used to detect file upload or some
          # types HTTP tunneling requests.
@@ -595,7 +607,7 @@ DOC_START
          # thought of as a superset of "browser", "referer" and "mime-type"
          # ACLs.
 
-       acl aclname rep_mime_type [-i] mime-type1 ...
+       acl aclname rep_mime_type [-i] mime-type ...
          # regex match against the mime type of the reply received by
          # squid. Can be used to detect file download or some
          # types HTTP tunneling requests.
@@ -608,7 +620,7 @@ DOC_START
          # thought of as a superset of "browser", "referer" and "mime-type"
          # ACLs.
 
-       acl acl_name external class_name [arguments...]
+       acl aclname external class_name [arguments...]
          # external ACL lookup via a helper class defined by the
          # external_acl_type directive.
 
@@ -660,6 +672,92 @@ acl CONNECT method CONNECT
 NOCOMMENT_END
 DOC_END
 
+NAME: follow_x_forwarded_for
+TYPE: acl_access
+IFDEF: FOLLOW_X_FORWARDED_FOR
+LOC: Config.accessList.followXFF
+DEFAULT: none
+DEFAULT_IF_NONE: deny all
+DOC_START
+       Allowing or Denying the X-Forwarded-For header to be followed to
+       find the original source of a request.
+
+       Requests may pass through a chain of several other proxies
+       before reaching us.  The X-Forwarded-For header will contain a
+       comma-separated list of the IP addresses in the chain, with the
+       rightmost address being the most recent.
+
+       If a request reaches us from a source that is allowed by this
+       configuration item, then we consult the X-Forwarded-For header
+       to see where that host received the request from.  If the
+       X-Forwarded-For header contains multiple addresses, and if
+       acl_uses_indirect_client is on, then we continue backtracking
+       until we reach an address for which we are not allowed to
+       follow the X-Forwarded-For header, or until we reach the first
+       address in the list.  (If acl_uses_indirect_client is off, then
+       it's impossible to backtrack through more than one level of
+       X-Forwarded-For addresses.)
+
+       The end result of this process is an IP address that we will
+       refer to as the indirect client address.  This address may
+       be treated as the client address for access control, delay
+       pools and logging, depending on the acl_uses_indirect_client,
+       delay_pool_uses_indirect_client and log_uses_indirect_client
+       options.
+
+       SECURITY CONSIDERATIONS:
+
+               Any host for which we follow the X-Forwarded-For header
+               can place incorrect information in the header, and Squid
+               will use the incorrect information as if it were the
+               source address of the request.  This may enable remote
+               hosts to bypass any access control restrictions that are
+               based on the client's source addresses.
+
+       For example:
+
+               acl localhost src 127.0.0.1
+               acl my_other_proxy srcdomain .proxy.example.com
+               follow_x_forwarded_for allow localhost
+               follow_x_forwarded_for allow my_other_proxy
+DOC_END
+
+NAME: acl_uses_indirect_client
+COMMENT: on|off
+TYPE: onoff
+IFDEF: FOLLOW_X_FORWARDED_FOR
+DEFAULT: on
+LOC: Config.onoff.acl_uses_indirect_client
+DOC_START
+       Controls whether the indirect client address
+       (see follow_x_forwarded_for) is used instead of the
+       direct client address in acl matching.
+DOC_END
+
+NAME: delay_pool_uses_indirect_client
+COMMENT: on|off
+TYPE: onoff
+IFDEF: FOLLOW_X_FORWARDED_FOR && DELAY_POOLS
+DEFAULT: on
+LOC: Config.onoff.delay_pool_uses_indirect_client
+DOC_START
+       Controls whether the indirect client address
+       (see follow_x_forwarded_for) is used instead of the
+       direct client address in delay pools.
+DOC_END
+
+NAME: log_uses_indirect_client
+COMMENT: on|off
+TYPE: onoff
+IFDEF: FOLLOW_X_FORWARDED_FOR
+DEFAULT: on
+LOC: Config.onoff.log_uses_indirect_client
+DOC_START
+       Controls whether the indirect client address
+       (see follow_x_forwarded_for) is used instead of the
+       direct client address in the access log.
+DOC_END
+
 NAME: http_access
 TYPE: acl_access
 LOC: Config.accessList.http
@@ -743,8 +841,8 @@ DOC_START
 
 NOCOMMENT_START
 #Allow ICP queries from local networks only
-icp_access allow localnet
-icp_access deny all
+#icp_access allow localnet
+#icp_access deny all
 NOCOMMENT_END
 DOC_END
 
@@ -768,8 +866,8 @@ DOC_START
 
 NOCOMMENT_START
 #Allow HTCP queries from local networks only
-htcp_access allow localnet
-htcp_access deny all
+#htcp_access allow localnet
+#htcp_access deny all
 NOCOMMENT_END
 DOC_END
 
@@ -795,7 +893,7 @@ DOC_END
 NAME: miss_access
 TYPE: acl_access
 LOC: Config.accessList.miss
-DEFAULT: none
+DEFAULT: allow all
 DOC_START
        Use to force your neighbors to use you as a sibling instead of
        a parent.  For example:
@@ -809,11 +907,6 @@ DOC_START
 
        By default, allow all clients who passed the http_access rules
        to fetch MISSES from us.
-
-NOCOMMENT_START
-#Default setting:
-# miss_access allow all
-NOCOMMENT_END
 DOC_END
 
 NAME: ident_lookup_access
@@ -1467,9 +1560,7 @@ DOC_START
 
          icp-port:  Used for querying neighbor caches about
                     objects.  To have a non-ICP neighbor
-                    specify '7' for the ICP port and make sure the
-                    neighbor machine has the UDP echo port
-                    enabled in its /etc/inetd.conf file.
+                    specify '0' for the ICP port.
                NOTE: Also requires icp_port option enabled to send/receive
                      requests via this method.
 
@@ -1483,6 +1574,8 @@ DOC_START
                     round-robin
                     weighted-round-robin
                     carp
+                    userhash
+                    sourcehash
                     multicast-responder
                     closest-only
                     no-digest
@@ -1495,6 +1588,10 @@ DOC_START
                     max-conn=n
                     htcp
                     htcp-oldsquid
+                    htcp-no-clr
+                    htcp-no-purge-clr
+                    htcp-only-clr
+                    htcp-forward-clr
                     originserver
                     name=xxx
                     forceddomain=name
@@ -1557,6 +1654,12 @@ DOC_START
                     distributed among the parents based on the CARP load
                     balancing hash function based on their weight.
 
+                     use 'userhash' to load-balance amongst a set of parents
+                     based on the client proxy_auth or ident username.
+
+                     use 'sourcehash' to load-balance amongst a set of parents
+                     based on the client source ip.
+
                     'multicast-responder' indicates the named peer
                     is a member of a multicast group.  ICP queries will
                     not be sent directly to the peer, but ICP replies
@@ -1631,6 +1734,20 @@ DOC_START
                     You MUST also set htcp_access expicitly. The default of
                     deny all will prevent peer traffic.                     
 
+                    use 'htcp-no-clr' to send HTCP to the neighbor but without
+                    sending any CLR requests.  This cannot be used with
+                    htcp-only-clr.
+               
+                    use 'htcp-no-purge-clr' to send HTCP to the neighbor
+                    including CLRs but only when they do not result from
+                    PURGE requests.
+               
+                    use 'htcp-only-clr' to send HTCP to the neighbor but ONLY
+                    CLR requests.  This cannot be used with htcp-no-clr.
+               
+                    use 'htcp-forward-clr' to forward any HTCP CLR requests
+                    this proxy receives to the peer.
+
                     'originserver' causes this parent peer to be contacted as
                     a origin server. Meant to be used in accelerator setups.
 
@@ -1822,7 +1939,7 @@ COMMENT_END
 NAME: cache_mem
 COMMENT: (bytes)
 TYPE: b_size_t
-DEFAULT: 8 MB
+DEFAULT: 256 MB
 LOC: Config.memMaxSize
 DOC_START
        NOTE: THIS PARAMETER DOES NOT SPECIFY THE MAXIMUM PROCESS SIZE.
@@ -1859,7 +1976,7 @@ DOC_END
 NAME: maximum_object_size_in_memory
 COMMENT: (bytes)
 TYPE: b_size_t
-DEFAULT: 8 KB
+DEFAULT: 512 KB
 LOC: Config.Store.maxInMemObjSize
 DOC_START
        Objects greater than this size will not be attempted to kept in
@@ -2028,7 +2145,7 @@ DOC_START
        which can be changed with the --with-coss-membuf-size=N configure
        option.
 NOCOMMENT_START
-cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
+cache_dir ufs @DEFAULT_SWAP_DIR@ 100 16 256
 NOCOMMENT_END
 DOC_END
 
@@ -2178,12 +2295,16 @@ DOC_START
                et      Tag returned by external acl
                ea      Log string returned by external acl
                <st     Reply size including HTTP headers
+               >st     Request size including HTTP headers
+               st      Request+Reply size including HTTP headers
                <sH     Reply high offset sent
                <sS     Upstream object size
                %       a literal % character
 
-logformat squid  %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
-logformat squidmime  %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
+       The default formats available (which do not need re-defining) are:
+
+logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
+logformat squidmime %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt [%>h] [%<h]
 logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st %Ss:%Sh
 logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
 DOC_END
@@ -2191,7 +2312,7 @@ DOC_END
 NAME: access_log cache_access_log
 TYPE: access_log
 LOC: Config.Log.accesslogs
-DEFAULT: none
+DEFAULT: @DEFAULT_ACCESS_LOG@ squid
 DOC_START
        These files log client request activities. Has a line every HTTP or
        ICP request. The format is:
@@ -2214,9 +2335,9 @@ DOC_START
 
        And priority could be any of:
        err, warning, notice, info, debug.
-NOCOMMENT_START
-access_log @DEFAULT_ACCESS_LOG@ squid
-NOCOMMENT_END
+
+       Default:
+               access_log @DEFAULT_ACCESS_LOG@ squid
 DOC_END
 
 NAME: log_access
@@ -2242,14 +2363,17 @@ DOC_END
 
 NAME: cache_store_log
 TYPE: string
-DEFAULT: @DEFAULT_STORE_LOG@
+DEFAULT: none
 LOC: Config.Log.store
 DOC_START
        Logs the activities of the storage manager.  Shows which
        objects are ejected from the cache, and which objects are
-       saved and for how long.  To disable, enter "none". There are
-       not really utilities to analyze this data, so you can safely
+       saved and for how long.  To disable, enter "none" or remove the line.
+       There are not really utilities to analyze this data, so you can safely
        disable it.
+NOCOMMENT_START
+# cache_store_log @DEFAULT_STORE_LOG@
+NOCOMMENT_END
 DOC_END
 
 NAME: cache_swap_state cache_swap_log
@@ -2949,7 +3073,7 @@ DEFAULT: 60 seconds
 DOC_START
        The minimum caching time according to (Expires - Date)
        Headers Squid honors if the object can't be revalidated
-       defaults to 60 seconds. In reverse proxy enorinments it
+       defaults to 60 seconds. In reverse proxy environments it
        might be desirable to honor shorter object lifetimes. It
        is most likely better to make your server return a
        meaningful Last-Modified header however. In ESI environments
@@ -2985,7 +3109,7 @@ COMMENT_END
 NAME: request_header_max_size
 COMMENT: (KB)
 TYPE: b_size_t
-DEFAULT: 20 KB
+DEFAULT: 64 KB
 LOC: Config.maxRequestHeaderSize
 DOC_START
        This specifies the maximum size for HTTP headers in a request.
@@ -2998,7 +3122,7 @@ DOC_END
 NAME: reply_header_max_size
 COMMENT: (KB)
 TYPE: b_size_t
-DEFAULT: 20 KB
+DEFAULT: 64 KB
 LOC: Config.maxReplyHeaderSize
 DOC_START
        This specifies the maximum size for HTTP headers in a reply.
@@ -3861,7 +3985,18 @@ TYPE: address
 LOC: Config.Wccp.router
 DEFAULT: 0.0.0.0
 IFDEF: USE_WCCP
-DOC_NONE
+DOC_START
+       Use this option to define your WCCP ``home'' router for
+       Squid.
+
+       wccp_router supports a single WCCP(v1) router
+
+       wccp2_router supports multiple WCCPv2 routers
+
+       only one of the two may be used at the same time and defines
+       which version of WCCP to use.
+DOC_END
+
 NAME: wccp2_router
 TYPE: IPAddress_list
 LOC: Config.Wccp2.router
@@ -3908,33 +4043,33 @@ DOC_START
 DOC_END
 
 NAME: wccp2_forwarding_method
-TYPE: int
+TYPE: wccp2_method
 LOC: Config.Wccp2.forwarding_method
-DEFAULT: 1
+DEFAULT: gre
 IFDEF: USE_WCCPv2
 DOC_START
        WCCP2 allows the setting of forwarding methods between the
        router/switch and the cache.  Valid values are as follows:
 
-       1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
-       2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
+       gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
+       l2  - L2 redirect (forward the packet using Layer 2/MAC rewriting)
 
        Currently (as of IOS 12.4) cisco routers only support GRE.
        Cisco switches only support the L2 redirect assignment method.
 DOC_END
 
 NAME: wccp2_return_method
-TYPE: int
+TYPE: wccp2_method
 LOC: Config.Wccp2.return_method
-DEFAULT: 1
+DEFAULT: gre
 IFDEF: USE_WCCPv2
 DOC_START
        WCCP2 allows the setting of return methods between the
        router/switch and the cache for packets that the cache
        decides not to handle.  Valid values are as follows:
 
-       1 - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
-       2 - L2 redirect (forward the packet using Layer 2/MAC rewriting)
+       gre - GRE encapsulation (forward the packet in a GRE/WCCP tunnel)
+       l2  - L2 redirect (forward the packet using Layer 2/MAC rewriting)
 
        Currently (as of IOS 12.4) cisco routers only support GRE.
        Cisco switches only support the L2 redirect assignment.
@@ -3946,16 +4081,16 @@ DOC_START
 DOC_END
 
 NAME: wccp2_assignment_method
-TYPE: int
+TYPE: wccp2_amethod
 LOC: Config.Wccp2.assignment_method
-DEFAULT: 1
+DEFAULT: hash
 IFDEF: USE_WCCPv2
 DOC_START
        WCCP2 allows the setting of methods to assign the WCCP hash
        Valid values are as follows:
 
-       1 - Hash assignment
-       2 - Mask assignment
+       hash - Hash assignment
+       mask  - Mask assignment
 
        As a general rule, cisco routers support the hash assignment method
        and cisco switches support the mask assignment method.
@@ -3987,7 +4122,6 @@ DOC_START
        wccp2_service dynamic 80        # a dynamic service type which will be
                                        # fleshed out with subsequent options.
        wccp2_service standard 0 password=foo
-
 DOC_END
 
 NAME: wccp2_service_info
@@ -4006,7 +4140,7 @@ DOC_START
 
        The relevant WCCPv2 flags:
        + src_ip_hash, dst_ip_hash
-       + source_port_hash, dest_port_hash
+       + source_port_hash, dst_port_hash
        + src_ip_alt_hash, dst_ip_alt_hash
        + src_port_alt_hash, dst_port_alt_hash
        + ports_source
@@ -4038,6 +4172,7 @@ LOC: Config.Wccp.address
 DEFAULT: 0.0.0.0
 IFDEF: USE_WCCP
 DOC_NONE
+
 NAME: wccp2_address
 TYPE: address
 LOC: Config.Wccp2.address
@@ -4215,13 +4350,14 @@ LOC: Config.Addrs.snmp_incoming
 DEFAULT: 0.0.0.0
 IFDEF: SQUID_SNMP
 DOC_NONE
+
 NAME: snmp_outgoing_address
 TYPE: address
 LOC: Config.Addrs.snmp_outgoing
 DEFAULT: 255.255.255.255
 IFDEF: SQUID_SNMP
 DOC_START
-       Just like 'udp_incoming_address' above, but for the SNMP port.
+       Just like 'udp_incoming_address', but for the SNMP port.
 
        snmp_incoming_address   is used for the SNMP socket receiving
                                messages from SNMP agents.
@@ -4254,7 +4390,7 @@ DOC_START
        and from neighbor caches.  The standard UDP port for ICP is 3130.
        Default is disabled (0).
 NOCOMMENT_START
-icp_port @DEFAULT_ICP_PORT@
+#icp_port @DEFAULT_ICP_PORT@
 NOCOMMENT_END
 DOC_END
 
@@ -4612,17 +4748,42 @@ COMMENT_END
 NAME: error_directory
 TYPE: string
 LOC: Config.errorDirectory
-DEFAULT: @DEFAULT_ERROR_DIR@
+DEFAULT: none
 DOC_START
        If you wish to create your own versions of the default
-       (English) error files, either to customize them to suit your
-       language or company copy the template English files to another
-       directory and point this tag at them.
+       error files to customize them to suit your company copy
+       the error/template files to another directory and point
+       this tag at them.
+
+       WARNING: This option will disable multi-language support
+                on error pages if used.
 
        The squid developers are interested in making squid available in
        a wide variety of languages. If you are making translations for a
-       langauge that Squid does not currently provide please consider
+       language that Squid does not currently provide please consider
        contributing your translation back to the project.
+       http://wiki.squid-cache.org/Translations
+
+       The squid developers working on translations are happy to supply drop-in
+       translated error files in exchange for any new language contributions.
+DOC_END
+
+NAME: error_default_language
+IFDEF: USE_ERR_LOCALES
+TYPE: string
+LOC: Config.errorDefaultLanguage
+DEFAULT: none
+DOC_START
+       Set the default language which squid will send error pages in
+       if no existing translation matches the clients language
+       preferences.
+
+       If unset (default) generic English will be used.
+
+       The squid developers are interested in making squid available in
+       a wide variety of languages. If you are interested in making
+       translations for any language see the squid wiki for details.
+       http://wiki.squid-cache.org/Translations
 DOC_END
 
 NAME: err_html_text
@@ -4659,7 +4820,7 @@ DEFAULT: none
 DOC_START
        Usage:   deny_info err_page_name acl
        or       deny_info http://... acl
-       Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
+       or       deny_info TCP_RESET acl
 
        This can be used to return a ERR_ page for requests which
        do not pass the 'http_access' rules.  Squid remembers the last
@@ -4673,8 +4834,9 @@ DOC_START
        - When none of the http_access lines matches. It's then the last
          acl processed on the last http_access line.
 
-       You may use ERR_ pages that come with Squid or create your own pages
-       and put them into the configured errors/ directory.
+       NP: If providing your own custom error pages with error_directory
+           you may also specify them by your custom file name:
+           Example: deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys
 
        Alternatively you can specify an error URL. The browsers will
        get redirected (302) to the specified URL. %s in the redirection
@@ -4788,7 +4950,6 @@ DOC_START
        requests, except those in your local domain use something like:
 
                acl local-servers dstdomain .foo.net
-               acl all src 0.0.0.0/0.0.0.0
                never_direct deny local-servers
                never_direct allow all
 
@@ -5378,17 +5539,6 @@ DOC_START
        definitions.
 DOC_END
 
-NAME: dns_testnames
-TYPE: wordlist
-LOC: Config.dns_testname_list
-DEFAULT: none
-DEFAULT_IF_NONE: netscape.com internic.net nlanr.net microsoft.com
-DOC_START
-       The DNS tests exit as soon as the first site is successfully looked up
-
-       This test can be disabled with the -D command line option.
-DOC_END
-
 NAME: append_domain
 TYPE: string
 LOC:  Config.appendDomain
@@ -5578,6 +5728,7 @@ DOC_START
                offline_toggle *
                pconn
                peer_select
+               reconfigure *
                redirector
                refresh
                server_list
@@ -5825,4 +5976,18 @@ DOC_START
        rounded to 1000.
 DOC_END
 
+NAME: windows_ipaddrchangemonitor
+COMMENT: on|off
+TYPE: onoff
+DEFAULT: on
+LOC: Config.onoff.WIN32_IpAddrChangeMonitor
+DOC_START
+       On Windows Squid by default will monitor IP address changes and will 
+       reconfigure itself after any detected event. This is very useful for
+       proxies connected to internet with dial-up interfaces.
+       In some cases (a Proxy server acting as VPN gateway is one) it could be
+       desiderable to disable this behaviour setting this to 'off'.
+       Note: after changing this, Squid service must be restarted.
+DOC_END
+
 EOF
index 6cd813c47c582fc54942ef3fc499e1adc74bbc64..af83cc316bee96c73fea654ecc7d3a441e3af54a 100644 (file)
@@ -54,7 +54,7 @@
 
 #define MAX_LINE       1024    /* longest configuration line */
 #define _PATH_PARSER           "cf_parser.h"
-#define _PATH_SQUID_CONF       "squid.conf.default"
+#define _PATH_SQUID_CONF       "squid.conf.documented"
 #define _PATH_CF_DEPEND                "cf.data.depend"
 
 enum State {
index 39df170a53908de6ffb723b3994fa720ea5b2492..33d920321646645183d789dcf4547dc7114bcb04 100644 (file)
@@ -75,26 +75,26 @@ clientdbAdd(const IPAddress &addr)
     return c;
 }
 
+static void
+clientdbRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("client_list", "Cache Client List", clientdbDump, 0, 1);
+}
+
 void
 clientdbInit(void)
 {
+    clientdbRegisterWithCacheManager();
+
     if (client_table)
         return;
 
     client_table = hash_create((HASHCMP *) strcmp, CLIENT_DB_HASH_SIZE, hash_string);
-}
 
-void
-clientdbRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("client_list",
-                           "Cache Client List",
-                           clientdbDump,
-                           0, 1);
 }
 
 void
-
 clientdbUpdate(const IPAddress &addr, log_type ltype, protocol_t p, size_t size)
 {
     char key[MAX_IPSTRLEN];
index 7432dd339ed2f88653bf750e9cd55d4ea2042472..202a1b502e4b792f54fdc895e70aa22efd396796 100644 (file)
@@ -93,6 +93,7 @@
 #include "HttpHdrContRange.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
+#include "ident.h"
 #include "MemObject.h"
 #include "fde.h"
 #include "client_side_request.h"
@@ -463,7 +464,7 @@ clientPrepareLogWithRequestDetails(HttpRequest * request, AccessLogEntry * aLogE
     aLogEntry->http.method = request->method;
     aLogEntry->http.version = request->http_ver;
     aLogEntry->hier = request->hier;
-
+    aLogEntry->cache.requestSize += request->content_length;
     aLogEntry->cache.extuser = request->extacl_user.buf();
 
     if (request->auth_user_request) {
@@ -501,7 +502,9 @@ ClientHttpRequest::logRequest()
 
         if(getConn() != NULL) al.cache.caddr = getConn()->log_addr;
 
-        al.cache.size = out.size;
+        al.cache.requestSize = req_sz;
+
+        al.cache.replySize = out.size;
 
         al.cache.highOffset = out.offset;
 
@@ -599,14 +602,14 @@ ConnStateData::freeAllContexts()
 void ConnStateData::connStateClosed(const CommCloseCbParams &io)
 {
     assert (fd == io.fd);
-    close();
+    deleteThis("ConnStateData::connStateClosed");
 }
 
+// cleans up before destructor is called
 void
-ConnStateData::close()
+ConnStateData::swanSong()
 {
-    debugs(33, 3, "ConnStateData::close: FD " << fd);
-    deleteThis("ConnStateData::close");
+    debugs(33, 2, "ConnStateData::swanSong: FD " << fd);
     fd = -1;
     flags.readMoreRequests = false;
     clientdbEstablished(peer, -1);     /* decrement */
@@ -614,15 +617,20 @@ ConnStateData::close()
     freeAllContexts();
 
     if (auth_user_request != NULL) {
-        debugs(33, 4, "ConnStateData::close: freeing auth_user_request '" << auth_user_request << "' (this is '" << this << "')");
+        debugs(33, 4, "ConnStateData::swanSong: freeing auth_user_request '" << auth_user_request << "' (this is '" << this << "')");
         auth_user_request->onConnectionClose(this);
     }
+
+    BodyProducer::swanSong();
+    flags.swanSang = true;
 }
 
 bool
 ConnStateData::isOpen() const
 {
-    return cbdataReferenceValid(this);
+    return cbdataReferenceValid(this) && // XXX: checking "this" in a method
+        fd >= 0 &&
+        !fd_table[fd].closing();
 }
 
 ConnStateData::~ConnStateData()
@@ -631,7 +639,10 @@ ConnStateData::~ConnStateData()
     debugs(33, 3, "ConnStateData::~ConnStateData: FD " << fd);
 
     if (isOpen())
-        close();
+        debugs(33, 1, "BUG: ConnStateData did not close FD " << fd);
+
+    if (!flags.swanSang)
+        debugs(33, 1, "BUG: ConnStateData was not destroyed properly; FD " << fd);
 
     AUTHUSERREQUESTUNLOCK(auth_user_request, "~conn");
 
@@ -1055,8 +1066,8 @@ ClientHttpRequest::rangeBoundaryStr() const
 {
     assert(this);
     const char *key;
-    String b (full_appname_string);
-    b.append (":",1);
+    String b(APP_FULLNAME);
+    b.append(":",1);
     key = storeEntry()->getMD5Text();
     b.append(key, strlen(key));
     return b;
@@ -1582,6 +1593,8 @@ ClientSocketContext::doClose()
     comm_close(fd());
 }
 
+/** Called to initiate (and possibly complete) closing of the context.
+ * The underlying socket may be already closed */
 void
 ClientSocketContext::initiateClose(const char *reason)
 {
@@ -1655,10 +1668,11 @@ ClientSocketContext::writeComplete(int fd, char *bufnotused, size_t size, comm_e
         return;
 
     case STREAM_UNPLANNED_COMPLETE:
-        /* fallthrough */
+        initiateClose("STREAM_UNPLANNED_COMPLETE");
+        return;
 
     case STREAM_FAILED:
-        initiateClose("STREAM_UNPLANNED_COMPLETE|STREAM_FAILED");
+        initiateClose("STREAM_FAILED");
         return;
 
     default:
@@ -1825,8 +1839,6 @@ prepareTransparentURL(ConnStateData * conn, ClientHttpRequest *http, char *url,
     char *host;
     char ntoabuf[MAX_IPSTRLEN];
 
-    http->flags.intercepted = 1;
-
     if (*url != '/')
         return; /* already in good shape */
 
@@ -1992,17 +2004,35 @@ parseHttpRequest(ConnStateData *conn, HttpParser *hp, HttpRequestMethod * method
 #endif
 
     /* Rewrite the URL in transparent or accelerator mode */
+    /* NP: there are several cases to traverse here:
+     *  - standard mode (forward proxy)
+     *  - transparent mode (TPROXY)
+     *  - transparent mode with failures
+     *  - intercept mode (NAT)
+     *  - intercept mode with failures
+     *  - accelerator mode (reverse proxy)
+     *  - internal URL
+     *  - mixed combos of the above with internal URL
+     */
     if (conn->transparent()) {
+        /* intercept or transparent mode, properly working with no failures */
+        http->flags.intercepted = conn->port->intercepted;
+        http->flags.spoof_client_ip = conn->port->spoof_client_ip;
+        prepareTransparentURL(conn, http, url, req_hdr);
+
+    } else if (conn->port->intercepted || conn->port->spoof_client_ip) {
+        /* transparent or intercept mode with failures */
         prepareTransparentURL(conn, http, url, req_hdr);
+
     } else if (conn->port->accel || conn->switchedToHttps()) {
+        /* accelerator mode */
         prepareAcceleratedURL(conn, http, url, req_hdr);
+
     } else if (internalCheck(url)) {
+        /* internal URL mode */
         /* prepend our name & port */
         http->uri = xstrdup(internalLocalUri(NULL, url));
         http->flags.accel = 1;
-    } else if (conn->port->intercepted) {
-       // Fallback on transparent interception if enabled, useful for "self" requests
-        prepareTransparentURL(conn, http, url, req_hdr);
     }
 
     if (!http->uri) {
@@ -2249,6 +2279,9 @@ clientProcessRequest(ConnStateData *conn, HttpParser *hp, ClientSocketContext *c
     request->flags.internal = http->flags.internal;
     setLogUri (http, urlCanonicalClean(request));
     request->client_addr = conn->peer;
+#if FOLLOW_X_FORWARDED_FOR
+    request->indirect_client_addr = conn->peer;
+#endif /* FOLLOW_X_FORWARDED_FOR */
     request->my_addr = conn->me;
     request->http_ver = http_ver;
 
@@ -2295,10 +2328,7 @@ clientProcessRequest(ConnStateData *conn, HttpParser *hp, ClientSocketContext *c
         connNoteUseOfBuffer(conn, http->req_sz);
         notedUseOfBuffer = true;
 
-        conn->handleRequestBodyData();
-
-        if (!request->body_pipe->exhausted())
-            conn->readSomeData();
+        conn->handleRequestBodyData(); // may comm_close and stop producing
 
         /* Is it too large? */
 
@@ -2315,7 +2345,10 @@ clientProcessRequest(ConnStateData *conn, HttpParser *hp, ClientSocketContext *c
             goto finish;
         }
 
-        context->mayUseConnection(true);
+        if (!request->body_pipe->productionEnded())
+            conn->readSomeData();
+
+        context->mayUseConnection(!request->body_pipe->productionEnded());
     }
 
     http->calloutContext = new ClientRequestContext(http);
@@ -2543,6 +2576,7 @@ ConnStateData::clientReadRequest(const CommIoCbParams &io)
          * The above check with connFinishedWithConn() only
          * succeeds _if_ the buffer is empty which it won't
          * be if we have an incomplete request.
+         * XXX: This duplicates ClientSocketContext::keepaliveNextRequest
          */
         if (getConcurrentRequestCount() == 0 && commIsHalfClosed(fd)) {
             debugs(33, 5, "clientReadRequest: FD " << fd << ": half-closed connection, no completed request parsed, connection closing.");
@@ -2738,10 +2772,11 @@ connStateCreate(const IPAddress &peer, const IPAddress &me, int fd, http_port_li
     result->port = cbdataReference(port);
 
     if(port->intercepted || port->spoof_client_ip) {
-        IPAddress dst;
+        IPAddress client, dst;
 
-        if (IPInterceptor.NatLookup(fd, me, peer, dst) == 0) {
-            result->me = dst; /* XXX This should be moved to another field */
+        if (IPInterceptor.NatLookup(fd, me, peer, client, dst) == 0) {
+            result->me = client;
+            result->peer = dst;
             result->transparent(true);
         }
     }
index 28eb767f2db25bc20d84054209f6139168146910..def37ed7cfef11679d8915d481ac0ad7848465b4 100644 (file)
@@ -142,7 +142,6 @@ public:
     ClientSocketContext::Pointer getCurrentContext() const;
     void addContextToQueue(ClientSocketContext * context);
     int getConcurrentRequestCount() const;
-    void close();
     bool isOpen() const;
 
     int fd;
@@ -188,6 +187,7 @@ public:
     struct
     {
         bool readMoreRequests;
+        bool swanSang; // XXX: temporary flag to check proper cleanup
     } flags;
     http_port_list *port;
 
@@ -213,6 +213,7 @@ public:
 
     // AsyncJob API
     virtual bool doneAll() const { return BodyProducer::doneAll() && false;}
+    virtual void swanSong();
 
 #if USE_SSL
     bool switchToHttps();
index 5b2bf4a6252a3156420075eec11009f55297b0e2..e3b65e69e4607106006a4d6b04cf67bb5d0b1824 100644 (file)
@@ -51,9 +51,7 @@
 #include "ESI.h"
 #endif
 #include "MemObject.h"
-#if USE_ZPH_QOS
 #include "fde.h"
-#endif
 #include "ACLChecklist.h"
 #include "ACL.h"
 #if DELAY_POOLS
@@ -714,23 +712,46 @@ clientReplyContext::purgeRequestFindObjectToPurge()
     StoreEntry::getPublicByRequestMethod(this, http->request, METHOD_GET);
 }
 
+// Purges all entries with a given url
+// TODO: move to SideAgent parent, when we have one
 /*
  * We probably cannot purge Vary-affected responses because their MD5
  * keys depend on vary headers.
  */
+void
+purgeEntriesByUrl(HttpRequest * req, const char *url)
+{
+#if USE_HTCP
+    bool get_or_head_sent = false;
+#endif
+    
+    for (HttpRequestMethod m(METHOD_NONE); m != METHOD_ENUM_END; ++m) {
+        if (m.isCacheble()) {
+            if (StoreEntry *entry = storeGetPublic(url, m)) {
+                debugs(88, 5, "purging " << RequestMethodStr(m) << ' ' << url);
+#if USE_HTCP
+                neighborsHtcpClear(entry, url, req, m, HTCP_CLR_INVALIDATION);
+                if (m == METHOD_GET || m == METHOD_HEAD) {
+                    get_or_head_sent = true;
+                }
+#endif
+                entry->release();
+            }
+        }
+    }
+
+#if USE_HTCP
+    if (!get_or_head_sent) {
+        neighborsHtcpClear(NULL, url, req, HttpRequestMethod(METHOD_GET), HTCP_CLR_INVALIDATION);
+    }
+#endif
+}
+
 void 
 clientReplyContext::purgeAllCached()
 {
        const char *url = urlCanonical(http->request);
-
-       for (HttpRequestMethod m(METHOD_NONE); m != METHOD_ENUM_END; ++m) {
-           if (m.isCacheble()) {
-               if (StoreEntry *entry = storeGetPublic(url, m)) {
-                   debugs(88, 5, "purging " << RequestMethodStr(m) << ' ' << url);
-                   entry->release();
-               }
-           }
-       }
+    purgeEntriesByUrl(http->request, url);
 }
 
 void
@@ -844,6 +865,9 @@ clientReplyContext::purgeDoPurgeGet(StoreEntry *newEntry)
     if (!newEntry->isNull()) {
         /* Release the cached URI */
         debugs(88, 4, "clientPurgeRequest: GET '" << newEntry->url() << "'" );
+#if USE_HTCP
+        neighborsHtcpClear(newEntry, NULL, http->request, HttpRequestMethod(METHOD_GET), HTCP_CLR_PURGE);
+#endif
         newEntry->release();
         purgeStatus = HTTP_OK;
     }
@@ -857,6 +881,9 @@ clientReplyContext::purgeDoPurgeHead(StoreEntry *newEntry)
 {
     if (newEntry && !newEntry->isNull()) {
         debugs(88, 4, "clientPurgeRequest: HEAD '" << newEntry->url() << "'" );
+#if USE_HTCP
+        neighborsHtcpClear(newEntry, NULL, http->request, HttpRequestMethod(METHOD_HEAD), HTCP_CLR_PURGE);
+#endif
         newEntry->release();
         purgeStatus = HTTP_OK;
     }
@@ -869,6 +896,9 @@ clientReplyContext::purgeDoPurgeHead(StoreEntry *newEntry)
 
         if (entry) {
             debugs(88, 4, "clientPurgeRequest: Vary GET '" << entry->url() << "'" );
+#if USE_HTCP
+            neighborsHtcpClear(entry, NULL, http->request, HttpRequestMethod(METHOD_GET), HTCP_CLR_PURGE);
+#endif
             entry->release();
             purgeStatus = HTTP_OK;
         }
@@ -877,6 +907,9 @@ clientReplyContext::purgeDoPurgeHead(StoreEntry *newEntry)
 
         if (entry) {
             debugs(88, 4, "clientPurgeRequest: Vary HEAD '" << entry->url() << "'" );
+#if USE_HTCP
+            neighborsHtcpClear(entry, NULL, http->request, HttpRequestMethod(METHOD_HEAD), HTCP_CLR_PURGE);
+#endif
             entry->release();
             purgeStatus = HTTP_OK;
         }
@@ -1176,19 +1209,14 @@ clientReplyContext::buildReplyHeader()
     hdr->delById(HDR_ETAG);
 #endif
 
-    // TODO: Should ESIInclude.cc that calls removeConnectionHeaderEntries
-    // also delete HDR_PROXY_CONNECTION and HDR_KEEP_ALIVE like we do below?
-
-    // XXX: Should HDR_PROXY_CONNECTION by studied instead of HDR_CONNECTION?
-    // httpHeaderHasConnDir does that but we do not. Is this is a bug?
-    hdr->delById(HDR_PROXY_CONNECTION);
-    /* here: Keep-Alive is a field-name, not a connection directive! */
-    hdr->delById(HDR_KEEP_ALIVE);
-    /* remove Set-Cookie if a hit */
-
     if (is_hit)
         hdr->delById(HDR_SET_COOKIE);
 
+    // if there is not configured a peer proxy with login=PASS option enabled 
+    // remove the Proxy-Authenticate header
+    if ( !(request->peer_login && strcmp(request->peer_login,"PASS") ==0))
+       reply->header.delById(HDR_PROXY_AUTHENTICATE);
+
     reply->header.removeHopByHopEntries();
 
     //    if (request->range)
@@ -1247,8 +1275,9 @@ clientReplyContext::buildReplyHeader()
     }
 
     /* Filter unproxyable authentication types */
+
     if (http->logType != LOG_TCP_DENIED &&
-            (hdr->has(HDR_WWW_AUTHENTICATE) || hdr->has(HDR_PROXY_AUTHENTICATE))) {
+           (hdr->has(HDR_WWW_AUTHENTICATE) || hdr->has(HDR_PROXY_AUTHENTICATE))) {
         HttpHeaderPos pos = HttpHeaderInitPos;
         HttpHeaderEntry *e;
 
@@ -1270,7 +1299,19 @@ clientReplyContext::buildReplyHeader()
     }
 
     /* Handle authentication headers */
-    if (request->auth_user_request)
+    if(http->logType == LOG_TCP_DENIED &&
+       ( reply->sline.status == HTTP_PROXY_AUTHENTICATION_REQUIRED || 
+        reply->sline.status == HTTP_UNAUTHORIZED) 
+       ){
+       /* Add authentication header */
+       /*! \todo alter errorstate to be accel on|off aware. The 0 on the next line
+        * depends on authenticate behaviour: all schemes to date send no extra
+        * data on 407/401 responses, and do not check the accel state on 401/407
+        * responses
+        */
+       authenticateFixHeader(reply, request->auth_user_request, request, 0, 1);
+    }
+    else if (request->auth_user_request)
         authenticateFixHeader(reply, request->auth_user_request, request,
                               http->flags.accel, 0);
 
@@ -1569,58 +1610,13 @@ clientReplyContext::doGetMoreData()
         /* guarantee nothing has been sent yet! */
         assert(http->out.size == 0);
         assert(http->out.offset == 0);
-#if USE_ZPH_QOS        
-        if (Config.zph_tos_local ||
-               Config.zph_tos_peer ||
-               Config.onoff.zph_preserve_miss_tos && Config.zph_preserve_miss_tos_mask)
-               {
-                  int need_change = 0;
-                  int hit = 0;
-                  int tos = 0;
-                  int tos_old = 0;
-                  int tos_len = sizeof(tos_old);
-                  int res;
-                              
-                  if (Config.zph_tos_local)
-                  {
-                          /* local hit */
-                      hit = 1;
-                      tos = Config.zph_tos_local;
-                  }
-                  else if (Config.zph_tos_peer && 
-                               (http->request->hier.code==SIBLING_HIT ||
-                               Config.onoff.zph_tos_parent&&http->request->hier.code==PARENT_HIT))
-                  {
-                         /* sibling or parent hit */
-                      hit = 1;
-                      tos = Config.zph_tos_peer;
-                  }
-                  
-                  if (http->request->flags.proxy_keepalive)
-                  {
-                          res = getsockopt(http->getConn()->fd, IPPROTO_IP, IP_TOS, &tos_old, (socklen_t*)&tos_len);
-                      if (res < 0)
-                      {
-                          debugs(33, 1, "ZPH: error in getsockopt(IP_TOS) on keepalived FD "<< http->getConn()->fd << " " << xstrerror());
-                      }
-                      else if (hit && tos_old != tos)
-                      {
-                          /* HIT: 1-st request, or previous was MISS,
-                           * or local/parent hit change.
-                           */
-                          need_change = 1;                    
-                      }
-                  }
-                  else if (hit)
-                  {
-                          /* no keepalive */
-                      need_change = 1;
-                  }
-                  if (need_change) {
-                          comm_set_tos(http->getConn()->fd,tos);
-                  }
-               }        
-#endif /* USE_ZPH_QOS */        
+#if USE_ZPH_QOS
+        if (Config.zph_tos_local)
+        {
+            debugs(33, 2, "ZPH Local hit, TOS="<<Config.zph_tos_local);
+            comm_set_tos(http->getConn()->fd,Config.zph_tos_local);
+        }
+#endif /* USE_ZPH_QOS */
         tempBuffer.offset = reqofs;
         tempBuffer.length = getNextNode()->readBuffer.length;
         tempBuffer.data = getNextNode()->readBuffer.data;
@@ -1873,6 +1869,11 @@ clientReplyContext::sendMoreData (StoreIOBuffer result)
     ConnStateData * conn = http->getConn();
 
     int fd = conn != NULL ? conn->fd : -1;
+    if (fd >= 0 && fd_table[fd].closing()) { // too late, our conn is closing
+        // TODO: should we also quit when fd is negative?
+        debugs(33,3, HERE << "not sending more data to a closing FD " << fd);
+        return;
+    }
 
     char *buf = next()->readBuffer.data;
 
@@ -1885,13 +1886,23 @@ clientReplyContext::sendMoreData (StoreIOBuffer result)
         body_buf = buf;
     }
 
-#if USE_ZPH_QOS    
-    if (reqofs==0 && !logTypeIsATcpHit(http->logType) &&
-               Config.onoff.zph_preserve_miss_tos &&
-               Config.zph_preserve_miss_tos_mask)
+#if USE_ZPH_QOS
+    if (reqofs==0 && !logTypeIsATcpHit(http->logType))
     {
-       int tos = fd_table[fd].upstreamTOS & Config.zph_preserve_miss_tos_mask;
-       comm_set_tos(fd,tos);
+        assert(fd >= 0); // the beginning of this method implies fd may be -1
+        int tos = 0;
+        if (Config.zph_tos_peer && 
+             (http->request->hier.code==SIBLING_HIT || 
+                (Config.onoff.zph_tos_parent && http->request->hier.code==PARENT_HIT) ) )
+        {
+            tos = Config.zph_tos_peer;
+            debugs(33, 2, "ZPH: Peer hit with hier.code="<<http->request->hier.code<<", TOS="<<tos);
+        }
+        else if (Config.onoff.zph_preserve_miss_tos && Config.zph_preserve_miss_tos_mask) {
+            tos = fd_table[fd].upstreamTOS & Config.zph_preserve_miss_tos_mask;
+            debugs(33, 2, "ZPH: Preserving TOS on miss, TOS="<<tos);
+        }
+        comm_set_tos(fd,tos);
     }
 #endif    
 
index 0be698fcc1a9179034b492c0bc17be87bfbba1c8..5b6ca63393ee4370f375cce2f8f19de5ff60c9ab 100644 (file)
@@ -58,6 +58,7 @@
 #include "ClientRequestContext.h"
 #include "SquidTime.h"
 #include "wordlist.h"
+#include "inet_pton.h"
 
 #if USE_ADAPTATION
 #include "adaptation/AccessCheck.h"
@@ -71,6 +72,11 @@ static void adaptationAclCheckDoneWrapper(Adaptation::ServicePointer service, vo
 
 static const char *const crlf = "\r\n";
 
+#if FOLLOW_X_FORWARDED_FOR
+static void
+clientFollowXForwardedForCheck(int answer, void *data);
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
 CBDATA_CLASS_INIT(ClientRequestContext);
 
 void *
@@ -343,6 +349,10 @@ clientBeginRequest(const HttpRequestMethod& method, char const *url, CSCB * stre
 
     request->client_addr.SetNoAddr();
 
+#if FOLLOW_X_FORWARDED_FOR
+    request->indirect_client_addr.SetNoAddr();
+#endif /* FOLLOW_X_FORWARDED_FOR */
+    
     request->my_addr.SetNoAddr();      /* undefined for internal requests */
 
     request->my_addr.SetPort(0);
@@ -380,12 +390,131 @@ ClientRequestContext::httpStateIsValid()
     return false;
 }
 
+#if FOLLOW_X_FORWARDED_FOR
+/**
+ * clientFollowXForwardedForCheck() checks the indirect_client_addr
+ * against the followXFF ACL, or cleans up and passes control to
+ * clientAccessCheck().
+ */
+
+static void
+clientFollowXForwardedForCheck(int answer, void *data)
+{
+    ClientRequestContext *calloutContext = (ClientRequestContext *) data;
+    ClientHttpRequest *http = NULL;
+    HttpRequest *request = NULL;
+
+    if (!calloutContext->httpStateIsValid())
+        return;
+
+        http = calloutContext->http;
+    request = http->request;
+    /*
+     * answer should be be ACCESS_ALLOWED or ACCESS_DENIED if we are
+     * called as a result of ACL checks, or -1 if we are called when
+     * there's nothing left to do.
+     */
+    if (answer == ACCESS_ALLOWED &&
+        request->x_forwarded_for_iterator.size () != 0)
+    {
+        /*
+        * The IP address currently in request->indirect_client_addr
+        * is trusted to use X-Forwarded-For.  Remove the last
+        * comma-delimited element from x_forwarded_for_iterator and use
+        * it to to replace indirect_client_addr, then repeat the cycle.
+        */
+        const char *p;
+        const char *asciiaddr;
+        int l;
+        struct in_addr addr;
+        p = request->x_forwarded_for_iterator.buf();
+        l = request->x_forwarded_for_iterator.size();
+
+        /*
+        * XXX x_forwarded_for_iterator should really be a list of
+        * IP addresses, but it's a String instead.  We have to
+        * walk backwards through the String, biting off the last
+        * comma-delimited part each time.  As long as the data is in
+        * a String, we should probably implement and use a variant of
+        * strListGetItem() that walks backwards instead of forwards
+        * through a comma-separated list.  But we don't even do that;
+        * we just do the work in-line here.
+        */
+        /* skip trailing space and commas */
+        while (l > 0 && (p[l-1] == ',' || xisspace(p[l-1])))
+            l--;
+        request->x_forwarded_for_iterator.cut(l);
+        /* look for start of last item in list */
+        while (l > 0 && ! (p[l-1] == ',' || xisspace(p[l-1])))
+            l--;
+        asciiaddr = p+l;
+        if (xinet_pton(AF_INET, asciiaddr, &addr) != 0)
+        {
+            request->indirect_client_addr = addr;
+            request->x_forwarded_for_iterator.cut(l);
+            if (! Config.onoff.acl_uses_indirect_client)
+            {
+                /*
+                * If acl_uses_indirect_client is off, then it's impossible
+                * to follow more than one level of X-Forwarded-For.
+                */
+                request->x_forwarded_for_iterator.clean();
+            }
+            calloutContext->acl_checklist =
+            clientAclChecklistCreate(Config.accessList.followXFF, http);
+            calloutContext->acl_checklist->
+            nonBlockingCheck(clientFollowXForwardedForCheck, data);
+            return;
+        }
+    } /*if (answer == ACCESS_ALLOWED &&
+        request->x_forwarded_for_iterator.size () != 0)*/
+
+    /* clean up, and pass control to clientAccessCheck */
+    if (Config.onoff.log_uses_indirect_client)
+    {
+        /*
+        * Ensure that the access log shows the indirect client
+        * instead of the direct client.
+        */
+        ConnStateData *conn = http->getConn();
+        conn->log_addr = request->indirect_client_addr;
+    }
+    request->x_forwarded_for_iterator.clean();
+    request->flags.done_follow_x_forwarded_for = 1;
+
+    /* If follow XFF is denied, we reset the indirect_client_addr
+       to the direct client. Thats the one we are configured to check for */
+    if (answer == ACCESS_DENIED) {
+        request->indirect_client_addr = request->client_addr;
+    }
+    /* on a failure, leave it as undefined state ?? */
+    else if (answer != ACCESS_ALLOWED) {
+        debugs(28, DBG_CRITICAL, "Follow X-Forwarded-For encountered an error. Ignoring address: " << request->indirect_client_addr );
+        request->indirect_client_addr = request->client_addr;
+    }
+
+    /* process actual access ACL as normal. */
+    calloutContext->clientAccessCheck();
+}
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
 /* This is the entry point for external users of the client_side routines */
 void
 ClientRequestContext::clientAccessCheck()
 {
-    acl_checklist =
-        clientAclChecklistCreate(Config.accessList.http, http);
+#if FOLLOW_X_FORWARDED_FOR
+    if (!http->request->flags.done_follow_x_forwarded_for &&
+        Config.accessList.followXFF &&
+        http->request->header.has(HDR_X_FORWARDED_FOR))
+    {
+        http->request->x_forwarded_for_iterator = 
+            http->request->header.getList(HDR_X_FORWARDED_FOR);
+        clientFollowXForwardedForCheck(ACCESS_ALLOWED, this);
+        return;
+    }
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
+    acl_checklist = clientAclChecklistCreate(Config.accessList.http, http);
     acl_checklist->nonBlockingCheck(clientAccessCheckDoneWrapper, this);
 }
 
@@ -811,6 +940,9 @@ ClientRequestContext::clientRedirectDone(char *result)
         new_request->http_ver = old_request->http_ver;
         new_request->header.append(&old_request->header);
         new_request->client_addr = old_request->client_addr;
+#if FOLLOW_X_FORWARDED_FOR
+        new_request->indirect_client_addr = old_request->indirect_client_addr;
+#endif /* FOLLOW_X_FORWARDED_FOR */
         new_request->my_addr = old_request->my_addr;
         new_request->flags = old_request->flags;
         new_request->flags.redirected = 1;
index 62894d799d74f30350af62e8f8db59be7734271a..b2f5b7fcd5b35445729cecf8963ff01d65cd729e 100644 (file)
@@ -118,6 +118,7 @@ public:
     {
         unsigned int accel:1;
         unsigned int intercepted:1;
+        unsigned int spoof_client_ip:1;
         unsigned int internal:1;
         unsigned int done_copying:1;
         unsigned int purging:1;
index 9d227a627037258d65a76bab939833c7c9dddf52..8977a5b970cd409ea985c8faf0a46b55a311589e 100644 (file)
@@ -49,6 +49,7 @@
 #include "CommCalls.h"
 #include "IPAddress.h"
 #include "IPInterception.h"
+#include "DescriptorSet.h"
 
 #if defined(_SQUID_CYGWIN_)
 #include <sys/ioctl.h>
@@ -67,6 +68,10 @@ typedef enum {
        IOCB_WRITE
 } iocb_type;
 
+static void commStopHalfClosedMonitor(int fd);
+static IOCB commHalfClosedReader;
+
+
 struct comm_io_callback_t {
        iocb_type type;
        int fd;
@@ -176,8 +181,6 @@ commio_cancel_callback(int fd, comm_io_callback_t *ccb)
        assert(ccb->active());
 
        ccb->xerrno = 0;
-//     delete ccb->callback;
-       ccb->callback = NULL;
        ccb->callback = NULL;
 }
 
@@ -224,6 +227,11 @@ private:
 
 /* STATIC */
 
+static DescriptorSet *TheHalfClosed = NULL; /// the set of half-closed FDs
+static bool WillCheckHalfClosed = false; /// true if check is scheduled
+static EVH commHalfClosedCheck;
+static void commPlanHalfClosedCheck();
+
 static comm_err_t commBind(int s, struct addrinfo &);
 static void commSetReuseAddr(int);
 static void commSetNoLinger(int);
@@ -334,17 +342,25 @@ comm_read(int fd, char *buf, int size, IOCB *handler, void *handler_data)
 void
 comm_read(int fd, char *buf, int size, AsyncCall::Pointer &callback)
 {
-    /* Make sure we're not reading anything and we're not closing */
-    assert(isOpen(fd));
-    assert(!fd_table[fd].flags.closing);
+    debugs(5, 5, "comm_read, queueing read for FD " << fd << "; asynCall " << callback);
 
-    debugs(5, 4, "comm_read, queueing read for FD " << fd);
+    /* Make sure we are open and not closing */
+    assert(isOpen(fd));
+    assert(!fd_table[fd].closing());
+    comm_io_callback_t *ccb = COMMIO_FD_READCB(fd);
+
+    // Make sure we are either not reading or just passively monitoring.
+    // Active/passive conflicts are OK and simply cancel passive monitoring.
+    if (ccb->active()) {
+        // if the assertion below fails, we have an active comm_read conflict
+        assert(fd_table[fd].halfClosedReader != NULL);
+        commStopHalfClosedMonitor(fd);
+        assert(!ccb->active());
+    }
 
     /* Queue the read */
-    /* XXX ugly */
-    commio_set_callback(fd, IOCB_READ, COMMIO_FD_READCB(fd),
-        callback, (char *)buf, NULL, size);
-    commSetSelect(fd, COMM_SELECT_READ, commHandleRead, COMMIO_FD_READCB(fd), 0);
+    commio_set_callback(fd, IOCB_READ, ccb, callback, (char *)buf, NULL, size);
+    commSetSelect(fd, COMM_SELECT_READ, commHandleRead, ccb, 0);
 }
 
 /**
@@ -431,6 +447,8 @@ comm_read_cancel(int fd, IOCB *callback, void *data)
         return;
        }
 
+    call->cancel("old comm_read_cancel");
+
     typedef CommIoCbParams Params;
     const Params &params = GetCommParams<Params>(cb->callback);
 
@@ -463,7 +481,7 @@ comm_read_cancel(int fd, AsyncCall::Pointer &callback)
     }
 
     AsyncCall::Pointer call = cb->callback;
-    assert(call != NULL); // XXX: should never fails (active() checks for callback==NULL)
+    assert(call != NULL); // XXX: should never fail (active() checks for callback==NULL)
     
     /* Ok, we can be reasonably sure we won't lose any data here! */
     assert(call == callback);
@@ -709,9 +727,10 @@ comm_openex(int sock_type,
 
 #endif
 
-#if IPV6_SPECIAL_V4MAPPED && defined(_SQUID_MSWIN_)
+#if IPV6_SPECIAL_V4MAPPED
 
     /* Windows Vista supports Dual-Sockets. BUT defaults them to V6ONLY. Turn it OFF. */
+    /* Other OS may have this administratively disabled for general use. Same deal. */
     if( addr.IsIPv6() )
         comm_set_v6only(new_socket, 0);
 
@@ -986,11 +1005,16 @@ ConnectStateData::commResetFD()
      * the original socket
      */
 
+    /* MUST be done before binding or face OS Error: "(99) Cannot assign requested address"... */
+    if( F->flags.transparent ) {
+        comm_set_transparent(fd);
+    }
+
     AI = NULL;
     F->local_addr.GetAddrInfo(AI);
 
     if (commBind(fd, *AI) != COMM_OK) {
-        debugs(5, 0, HERE << "bind: " << xstrerror());
+        debugs(5, DBG_CRITICAL, "WARNING: Reset of FD " << fd << " for " << F->local_addr << " failed to bind: " << xstrerror());
         F->local_addr.FreeAddrInfo(AI);
         return 0;
     }
@@ -1265,6 +1289,10 @@ comm_connect_addr(int sock, const IPAddress &address)
 
     }
 
+/* Squid seems to be working fine without this code. With this code,
+ * we leak memory on many connect requests because of EINPROGRESS.
+ * If you find that this code is needed, please file a bug report. */
+#if 0
 #ifdef _SQUID_LINUX_
     /* 2007-11-27:
      * Linux Debian replaces our allocated AI pointer with garbage when 
@@ -1275,6 +1303,7 @@ comm_connect_addr(int sock, const IPAddress &address)
     if(errno != 0) {
         AI = NULL;
     }
+#endif
 #endif
 
     address.FreeAddrInfo(AI);
@@ -1378,11 +1407,8 @@ comm_old_accept(int fd, ConnectionDetail &details)
 
     commSetNonBlocking(sock);
 
-    if(fd_table[fd].flags.transparent == 1) {
-        /* AYJ: do we actually need to set this again on every accept? */
-        //comm_set_transparent(sock);
-        F->flags.transparent = 1;
-    }
+    /* IFF the socket is (tproxy) transparent, pass the flag down to allow spoofing */
+    F->flags.transparent = fd_table[fd].flags.transparent;
 
     PROF_stop(comm_accept);
     return sock;
@@ -1488,6 +1514,19 @@ CommRead::doCallback(comm_err_t errcode, int xerrno)
     }
 }
 
+void 
+comm_close_start(int fd, void *data)
+{
+#if USE_SSL
+    fde *F = &fd_table[fd];
+    if (F->ssl)
+        ssl_shutdown_method(fd);
+
+#endif
+
+}
+
+
 void 
 comm_close_complete(int fd, void *data)
 {
@@ -1504,9 +1543,6 @@ comm_close_complete(int fd, void *data)
 
     close(fd);
 
-    if (AbortChecker::Instance().isMonitoring(fd))
-        AbortChecker::Instance().stopMonitoring(fd);
-
     fdc_table[fd] = AcceptFD(fd);
 
     statCounter.syscalls.sock.closes++;
@@ -1531,23 +1567,20 @@ comm_close_complete(int fd, void *data)
 void
 _comm_close(int fd, char const *file, int line)
 {
-    fde *F = NULL;
-
-    debugs(5, 5, "comm_close: FD " << fd);
+    debugs(5, 3, "comm_close: start closing FD " << fd);
     assert(fd >= 0);
     assert(fd < Squid_MaxFD);
-    F = &fd_table[fd];
+
+    fde *F = &fd_table[fd];
     fdd_table[fd].close_file = file;
     fdd_table[fd].close_line = line;
 
-    if (F->flags.closing)
+    if (F->closing())
         return;
 
     if (shutting_down && (!F->flags.open || F->type == FD_FILE))
         return;
 
-    assert(F->flags.open);
-
     /* The following fails because ipc.c is doing calls to pipe() to create sockets! */
     assert(isOpen(fd));
 
@@ -1555,18 +1588,21 @@ _comm_close(int fd, char const *file, int line)
 
     PROF_start(comm_close);
 
-    F->flags.closing = 1;
+    F->flags.close_request = 1;
 
-#if USE_SSL
-
-    if (F->ssl)
-        ssl_shutdown_method(fd);
-
-#endif
+    AsyncCall::Pointer startCall=commCbCall(5,4, "comm_close_start",
+                                           CommCloseCbPtrFun(comm_close_start, NULL));
+    typedef CommCloseCbParams Params;
+    Params &startParams = GetCommParams<Params>(startCall);
+    startParams.fd = fd;
+    ScheduleCallHere(startCall);
 
+    // a half-closed fd may lack a reader, so we stop monitoring explicitly
+    if (commHasHalfClosedMonitor(fd))
+        commStopHalfClosedMonitor(fd);
     commSetTimeout(fd, -1, NULL, NULL);
 
-    /* new-style read/write handler stuff */
+    // notify read/write handlers
     if (commio_has_callback(fd, IOCB_WRITE, COMMIO_FD_WRITECB(fd))) {
         commio_finish_callback(fd, COMMIO_FD_WRITECB(fd), COMM_ERR_CLOSING, errno);
     }
@@ -1574,7 +1610,7 @@ _comm_close(int fd, char const *file, int line)
         commio_finish_callback(fd, COMMIO_FD_READCB(fd), COMM_ERR_CLOSING, errno);
     }
 
-    /* Do callbacks for read/accept routines, if any */
+    // notify accept handlers
     fdc_table[fd].notify(-1, COMM_ERR_CLOSING, 0, ConnectionDetail());
 
     commCallCloseHandlers(fd);
@@ -1585,12 +1621,13 @@ _comm_close(int fd, char const *file, int line)
     comm_empty_os_read_buffers(fd);
     
 
-    AsyncCall::Pointer call=commCbCall(5,4, "comm_close_complete",
+    AsyncCall::Pointer completeCall=commCbCall(5,4, "comm_close_complete",
                                       CommCloseCbPtrFun(comm_close_complete, NULL));
-    typedef CommCloseCbParams Params;
-    Params &params = GetCommParams<Params>(call);
-    params.fd = fd;
-    ScheduleCallHere(call);
+    Params &completeParams = GetCommParams<Params>(completeCall);
+    completeParams.fd = fd;
+    // must use async call to wait for all callbacks 
+    // scheduled before comm_close() to finish
+    ScheduleCallHere(completeCall);
 
     PROF_stop(comm_close);
 }
@@ -1855,23 +1892,23 @@ commSetTcpKeepalive(int fd, int idle, int interval, int timeout)
     if (timeout && interval) {
        int count = (timeout + interval - 1) / interval;
        if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPCNT, &count, sizeof(on)) < 0)
-           debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+           debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
     }
 #endif
 #ifdef TCP_KEEPIDLE
     if (idle) {
        if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &idle, sizeof(on)) < 0)
-           debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+           debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
     }
 #endif
 #ifdef TCP_KEEPINTVL
     if (interval) {
        if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &interval, sizeof(on)) < 0)
-           debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+           debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
     }
 #endif
     if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (char *) &on, sizeof(on)) < 0)
-       debug(5, 1) ("commSetKeepalive: FD %d: %s\n", fd, xstrerror());
+       debugs(5, 1, "commSetKeepalive: FD " << fd << ": " << xstrerror());
 }
 
 void
@@ -1900,10 +1937,15 @@ comm_init(void) {
     RESERVED_FD = XMIN(100, Squid_MaxFD / 4);
 
     conn_close_pool = memPoolCreate("close_handler", sizeof(close_handler));
+
+    TheHalfClosed = new DescriptorSet;
 }
 
 void
 comm_exit(void) {
+    delete TheHalfClosed;
+    TheHalfClosed = NULL;
+
     safe_free(fd_table);
     safe_free(fdd_table);
     if (fdc_table) {
@@ -1994,20 +2036,18 @@ comm_write(int fd, const char *buf, int size, IOCB * handler, void *handler_data
 void
 comm_write(int fd, const char *buf, int size, AsyncCall::Pointer &callback, FREE * free_func)
 {
-    assert(!fd_table[fd].flags.closing);
-
-    debugs(5, 5, "comm_write: FD " << fd << ": sz " << size << ": asynCall " << callback  << ".");
+    debugs(5, 5, "comm_write: FD " << fd << ": sz " << size << ": asynCall " << callback);
 
-    if (commio_has_callback(fd, IOCB_WRITE, COMMIO_FD_WRITECB(fd))) {
-        /* This means that the write has been scheduled, but has not
-         * triggered yet 
-         */
-        fatalf ("comm_write: fd %d: pending callback!\n", fd);
-    }
+    /* Make sure we are open, not closing, and not writing */
+    assert(isOpen(fd));
+    assert(!fd_table[fd].closing());
+    comm_io_callback_t *ccb = COMMIO_FD_WRITECB(fd);
+    assert(!ccb->active());
 
-    commio_set_callback(fd, IOCB_WRITE, COMMIO_FD_WRITECB(fd),
-        callback, (char *)buf, free_func, size);
-    commSetSelect(fd, COMM_SELECT_WRITE, commHandleWrite, COMMIO_FD_WRITECB(fd), 0);
+    /* Queue the write */
+    commio_set_callback(fd, IOCB_WRITE, ccb, callback,
+       (char *)buf, free_func, size);
+    commSetSelect(fd, COMM_SELECT_WRITE, commHandleWrite, ccb, 0);
 }
 
 
@@ -2145,8 +2185,7 @@ comm_listen(int sock) {
 #ifdef SO_ACCEPTFILTER
        struct accept_filter_arg afa;
        bzero(&afa, sizeof(afa));
-       debug(5, 0) ("Installing accept filter '%s' on FD %d\n",
-       Config.accept_filter, sock);
+       debugs(5, DBG_CRITICAL, "Installing accept filter '" << Config.accept_filter << "' on FD " << sock);
        xstrncpy(afa.af_name, Config.accept_filter, sizeof(afa.af_name));
        x = setsockopt(sock, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
        if (x < 0)
@@ -2166,7 +2205,6 @@ comm_listen(int sock) {
     return sock;
 }
 
-// AcceptFD::callback() wrapper
 void
 comm_accept(int fd, IOACB *handler, void *handler_data) {
     debugs(5, 5, "comm_accept: FD " << fd << " handler: " << (void*)handler);
@@ -2233,7 +2271,7 @@ AcceptFD::acceptOne() {
 
         if (newfd == COMM_NOMESSAGE) {
             /* register interest again */
-            debugs(5, 5, "AcceptFD::acceptOne eof: FD " << fd <<
+            debugs(5, 5, HERE << "try later: FD " << fd <<
                 " handler: " << *theCallback);
             commSetSelect(fd, COMM_SELECT_READ, comm_accept_try, NULL, 0);
             return false;
@@ -2286,7 +2324,7 @@ comm_accept_try(int fd, void *) {
 void CommIO::Initialise() {
     /* Initialize done pipe signal */
     int DonePipe[2];
-    pipe(DonePipe);
+    if(pipe(DonePipe)) {}
     DoneFD = DonePipe[1];
     DoneReadFD = DonePipe[0];
     fd_open(DoneReadFD, FD_PIPE, "async-io completetion event: main");
@@ -2366,130 +2404,96 @@ AcceptLimiter::kick() {
     comm_accept (temp.acceptFD, temp.theFunction, temp.theData);
 }
 
+/// Start waiting for a possibly half-closed connection to close 
+// by scheduling a read callback to a monitoring handler that 
+// will close the connection on read errors.
 void
-commMarkHalfClosed(int fd) {
-    assert (isOpen(fd));
-    AbortChecker::Instance().monitor(fd);
-}
-
-int commIsHalfClosed(int fd) {
-    assert (isOpen(fd));
-
-    return AbortChecker::Instance().isMonitoring(fd);
-}
-
-void
-commCheckHalfClosed(void *data) {
-    AbortChecker::Instance().doIOLoop();
-    eventAdd("commCheckHalfClosed", commCheckHalfClosed, NULL, 1.0, false);
+commStartHalfClosedMonitor(int fd) {
+    debugs(5, 5, HERE << "adding FD " << fd << " to " << *TheHalfClosed);
+    assert(isOpen(fd));
+    assert(!commHasHalfClosedMonitor(fd));
+    (void)TheHalfClosed->add(fd); // could also assert the result
+    commPlanHalfClosedCheck(); // may schedule check if we added the first FD
 }
 
-AbortChecker &AbortChecker::Instance() {return Instance_;}
-
-AbortChecker AbortChecker::Instance_;
-
+static
 void
-AbortChecker::AbortCheckReader(int fd, char *, size_t size, comm_err_t flag, int xerrno, void *data) {
-    assert (size == 0);
-    /* sketch:
-     * if the read is ok and 0, the conn is still open.
-     * if the read is a fail, close the conn
-     */
-
-    if (flag != COMM_OK && flag != COMM_ERR_CLOSING) {
-        debugs(5, 3, "AbortChecker::AbortCheckReader: FD " << fd << " aborted");
-        comm_close(fd);
+commPlanHalfClosedCheck()
+{
+    if (!WillCheckHalfClosed && !TheHalfClosed->empty()) {
+        eventAdd("commHalfClosedCheck", &commHalfClosedCheck, NULL, 1.0, 1);
+        WillCheckHalfClosed = true;
     }
 }
 
+/// iterates over all descriptors that may need half-closed tests and
+/// calls comm_read for those that do; re-schedules the check if needed
+static
 void
-AbortChecker::monitor(int fd) {
-    assert (!contains(fd));
-
-    add
-        (fd);
-
-    debugs(5, 3, "AbortChecker::monitor: monitoring half closed FD " << fd << " for aborts");
-}
-
-void
-AbortChecker::stopMonitoring (int fd) {
-    assert (contains (fd));
-
-    remove
-        (fd);
-
-    debugs(5, 3, "AbortChecker::stopMonitoring: stopped monitoring half closed FD " << fd << " for aborts");
-}
-
-#include "splay.h"
-void
-AbortChecker::doIOLoop() {
-    fds->walk(RemoveCheck, this);
-    fds->walk(AddCheck, this);
-}
-
-void
-AbortChecker::AddCheck (int const &fd, void *data) {
-    AbortChecker *me = (AbortChecker *)data;
-    me->addCheck(fd);
-}
-
-void
-AbortChecker::RemoveCheck (int const &fd, void *data) {
-    AbortChecker *me = (AbortChecker *)data;
-    me->removeCheck(fd);
-}
-
+commHalfClosedCheck(void *) {
+    debugs(5, 5, HERE << "checking " << *TheHalfClosed);
+
+    typedef DescriptorSet::const_iterator DSCI;
+    const DSCI end = TheHalfClosed->end();
+    for (DSCI i = TheHalfClosed->begin(); i != end; ++i) {
+        const int fd = *i;
+        if (!fd_table[fd].halfClosedReader) { // not reading already
+            AsyncCall::Pointer call = commCbCall(5,4, "commHalfClosedReader",
+                CommIoCbPtrFun(&commHalfClosedReader, NULL));
+            comm_read(fd, NULL, 0, call);
+            fd_table[fd].halfClosedReader = call;
+        }
+    }
 
-int
-AbortChecker::IntCompare (int const &lhs, int const &rhs) {
-    return lhs - rhs;
+    WillCheckHalfClosed = false; // as far as we know
+    commPlanHalfClosedCheck(); // may need to check again
 }
 
+/// checks whether we are waiting for possibly half-closed connection to close
+// We are monitoring if the read handler for the fd is the monitoring handler.
 bool
-AbortChecker::isMonitoring(int fd) const {
-    return contains(fd);
+commHasHalfClosedMonitor(int fd) {
+    return TheHalfClosed->has(fd);
 }
 
-bool
-AbortChecker::contains (int const fd) const {
-    fds = fds->splay(fd, IntCompare);
+/// stop waiting for possibly half-closed connection to close
+static void
+commStopHalfClosedMonitor(int const fd) {
+    debugs(5, 5, HERE << "removing FD " << fd << " from " << *TheHalfClosed);
 
-    if (splayLastResult != 0)
-        return false;
+    // cancel the read if one was scheduled
+    AsyncCall::Pointer reader = fd_table[fd].halfClosedReader;
+    if (reader != NULL)
+        comm_read_cancel(fd, reader);
+    fd_table[fd].halfClosedReader = NULL;
 
-    return true;
+    TheHalfClosed->del(fd);
 }
 
-void
-
-AbortChecker::remove
-    (int const fd) {
+/// I/O handler for the possibly half-closed connection monitoring code
+static void
+commHalfClosedReader(int fd, char *, size_t size, comm_err_t flag, int, void *) {
+    // there cannot be more data coming in on half-closed connections
+    assert(size == 0); 
+    assert(commHasHalfClosedMonitor(fd)); // or we would have canceled the read
 
-    fds = fds->remove
-          (fd, IntCompare);
-}
+    fd_table[fd].halfClosedReader = NULL; // done reading, for now
 
-void
+    // nothing to do if fd is being closed
+    if (flag == COMM_ERR_CLOSING)
+        return;
 
-AbortChecker::add
-    (int const fd) {
-    fds = fds->insert (fd, IntCompare);
-}
+    // if read failed, close the connection
+    if (flag != COMM_OK) {
+        debugs(5, 3, "commHalfClosedReader: closing FD " << fd);
+        comm_close(fd);
+        return;
+    }
 
-void
-AbortChecker::addCheck (int const fd) {
-    /* assert comm_is_open (fd); */
-    comm_read(fd, NULL, 0, AbortCheckReader, NULL);
+    // continue waiting for close or error
+    commPlanHalfClosedCheck(); // make sure this fd will be checked again
 }
 
-void
-AbortChecker::removeCheck (int const fd) {
-    /*
-      comm_read_cancel(fd, AbortCheckReader, NULL);
-    */
-}
 
 CommRead::CommRead() : fd(-1), buf(NULL), len(0), callback(NULL) {}
 
@@ -2508,13 +2512,13 @@ DeferredReadManager::~DeferredReadManager() {
 /* explicit instantiation required for some systems */
 
 /// \cond AUTODOCS-IGNORE
-template cbdata_type List<DeferredRead>::CBDATA_List;
+template cbdata_type CbDataList<DeferredRead>::CBDATA_CbDataList;
 /// \endcond
 
 void
 DeferredReadManager::delayRead(DeferredRead const &aRead) {
     debugs(5, 3, "Adding deferred read on FD " << aRead.theRead.fd);
-    List<DeferredRead> *temp = deferredReads.push_back(aRead);
+    CbDataList<DeferredRead> *temp = deferredReads.push_back(aRead);
     comm_add_close_handler (aRead.theRead.fd, CloseHandler, temp);
 }
 
@@ -2523,13 +2527,13 @@ DeferredReadManager::CloseHandler(int fd, void *thecbdata) {
     if (!cbdataReferenceValid (thecbdata))
         return;
 
-    List<DeferredRead> *temp = (List<DeferredRead> *)thecbdata;
+    CbDataList<DeferredRead> *temp = (CbDataList<DeferredRead> *)thecbdata;
 
     temp->element.markCancelled();
 }
 
 DeferredRead
-DeferredReadManager::popHead(ListContainer<DeferredRead> &deferredReads) {
+DeferredReadManager::popHead(CbDataListContainer<DeferredRead> &deferredReads) {
     assert (!deferredReads.empty());
 
     if (!deferredReads.head->element.cancelled)
@@ -2542,7 +2546,7 @@ DeferredReadManager::popHead(ListContainer<DeferredRead> &deferredReads) {
 
 void
 DeferredReadManager::kickReads(int const count) {
-    /* if we had List::size() we could consolidate this and flushReads */
+    /* if we had CbDataList::size() we could consolidate this and flushReads */
 
     if (count < 1) {
         flushReads();
@@ -2562,9 +2566,9 @@ DeferredReadManager::kickReads(int const count) {
 
 void
 DeferredReadManager::flushReads() {
-    ListContainer<DeferredRead> reads;
+    CbDataListContainer<DeferredRead> reads;
     reads = deferredReads;
-    deferredReads = ListContainer<DeferredRead>();
+    deferredReads = CbDataListContainer<DeferredRead>();
 
     while (!reads.empty()) {
         DeferredRead aRead = popHead(reads);
index d1c249efcca567e09dce45b7ade967ec74c504da..55678480d926722fe81d9cf4e64074886e4971bf 100644 (file)
@@ -101,11 +101,19 @@ extern void comm_read_cancel(int fd, AsyncCall::Pointer &callback);
 extern int comm_udp_recvfrom(int fd, void *buf, size_t len, int flags, IPAddress &from);
 extern int comm_udp_recv(int fd, void *buf, size_t len, int flags);
 extern ssize_t comm_udp_send(int s, const void *buf, size_t len, int flags);
-extern void commMarkHalfClosed(int);
-extern int commIsHalfClosed(int);
-extern void commCheckHalfClosed(void *);
 extern bool comm_has_incomplete_write(int);
 
+/** The read channel has closed and the caller does not expect more data
+ * but needs to detect connection aborts. The current detection method uses
+ * 0-length reads: We read until the error occurs or the writer closes
+ * the connection. If there is a read error, we close the connection.
+ */
+extern void commStartHalfClosedMonitor(int fd);
+extern bool commHasHalfClosedMonitor(int fd);
+// XXX: remove these wrappers which minimize client_side.cc changes in a commit
+inline void commMarkHalfClosed(int fd) { commStartHalfClosedMonitor(fd); }
+inline bool commIsHalfClosed(int fd) { return commHasHalfClosedMonitor(fd); }
+
 /* Not sure where these should live yet */
 
 class Acceptor
@@ -133,53 +141,6 @@ private:
     Vector<Acceptor> deferred;
 };
 
-/* App layer doesn't want any more data from the socket, as the read channel is
- * closed, but we need to detect aborts, so this lets us do so.
- */
-
-class AbortChecker
-{
-
-public:
-    static AbortChecker &Instance();
-    /* the current method of checking, is via a 0 length read every second.
-     * if nothing is returned by the next IO loop, we let it be.
-     * If an error occurs, we close the conn.
-     * Note that some tcp environments may allow direct polling for the socket status
-     * and this could be adjusted to use that method for the test. (in which case
-     * the singleton should be refactored to have the tcp engine register the
-     * instance with it).
-     */
-    static IOCB AbortCheckReader;
-
-    bool isMonitoring(int fd) const;
-    void monitor (int);
-    void stopMonitoring (int);
-    void doIOLoop();
-
-private:
-    static AbortChecker Instance_;
-    static void AddCheck (int const &, void *);
-    static int IntCompare (int const &, int const &);
-    static void RemoveCheck (int const &, void *);
-    AbortChecker() : fds (NULL), checking (false), lastCheck (0){}
-
-    mutable SplayNode<int> *fds;
-    bool checking;
-    time_t lastCheck;
-    bool contains (int const) const;
-
-    void remove
-        (int const);
-
-    void add
-        (int const);
-
-    void addCheck (int const);
-
-    void removeCheck (int const);
-};
-
 /* A comm engine that calls comm_select */
 
 class CommSelectEngine : public AsyncEngine
index 758fd8817ce7e946c6ada68a3abfb3b62038a9d2..87f4e9a80a71f502c84792c7a2a5197c80ab93bc 100644 (file)
@@ -70,6 +70,7 @@ static int max_poll_time = 1000;
 
 static struct epoll_event *pevents;
 
+static void commEPollRegisterWithCacheManager(void);
 
 
 /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
@@ -97,6 +98,8 @@ comm_select_init(void)
     if (kdpfd < 0) {
         fatalf("comm_select_init: epoll_create(): %s\n",xstrerror());
     }
+
+    commEPollRegisterWithCacheManager();
 }
 
 static const char* epolltype_atoi(int x)
@@ -214,12 +217,13 @@ commResetSelect(int fd)
 
 static void commIncomingStats(StoreEntry * sentry);
 
-void
-commEPollRegisterWithCacheManager(CacheManager& manager)
+static void
+commEPollRegisterWithCacheManager(void)
 {
-    manager.registerAction("comm_epoll_incoming",
-                           "comm_incoming() stats",
-                           commIncomingStats, 0, 1);
+    CacheManager::GetInstance()->
+        registerAction("comm_epoll_incoming",
+                       "comm_incoming() stats",
+                        commIncomingStats, 0, 1);
 }
 
 static void
index 9df46272ef4b08f7017de296647193c534b12da5..720570f008ba114ef44e5fe5ad9328e779727ede 100644 (file)
 #ifndef SQUID_COMM_EPOLL_H
 #define SQUID_COMM_EPOLL_H
 
-/* forward decls */
-
-class CacheManager;
-
-extern void commEPollRegisterWithCacheManager(CacheManager & manager);
-
 #endif /* SQUID_COMM_EPOLL_H */
index bd60c5fbcff6a1cd302608c0fbf17b943c26aa55..391ffab871bdd49e59020bce9ce82a372e908d06 100644 (file)
@@ -91,6 +91,7 @@ static int kqmax;                /* max structs to buffer */
 static int kqoff;                /* offset into the buffer */
 static int max_poll_time = 1000;
 
+static void commKQueueRegisterWithCacheManager(void);
 
 /* XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
 /* Private functions */
@@ -177,6 +178,8 @@ comm_select_init(void)
     kqlst = (struct kevent *)xmalloc(sizeof(*kqlst) * kqmax);
     zero_timespec.tv_sec = 0;
     zero_timespec.tv_nsec = 0;
+
+    commKQueueRegisterWithCacheManager();
 }
 
 /*
@@ -324,8 +327,8 @@ comm_quick_poll_required(void)
     max_poll_time = 10;
 }
 
-void
-commKQueueRegisterWithCacheManager(CacheManager & manager)
+static void
+commKQueueRegisterWithCacheManager(void)
 {
 }
 
index d726b29cd963634f65059b17a9dcbf657de5cc38..33517c35fc672e642e64757273aa3b8ce7c88301 100644 (file)
 #ifndef SQUID_COMM_KQUEUE_H
 #define SQUID_COMM_KQUEUE_H
 
-/* forward decls */
-
-class CacheManager;
-
-extern void commKQueueRegisterWithCacheManager(CacheManager & manager);
-
 #endif /* SQUID_COMM_KQUEUE_H */
index da2fc42c2a5b768b89d1e4cf1487a08462d04fe7..dd2be81a9b7efa194b8fa942c87f5d28c9b0570e 100644 (file)
@@ -601,18 +601,21 @@ comm_poll_dns_incoming(void)
     statHistCount(&statCounter.comm_dns_incoming, nevents);
 }
 
-void
-comm_select_init(void)
-{}
 
-void
-commPollRegisterWithCacheManager(CacheManager & manager)
+static void
+commPollRegisterWithCacheManager(void)
 {
-    manager.registerAction("comm_poll_incoming",
-                           "comm_incoming() stats",
-                           commIncomingStats, 0, 1);
+    CacheManager::GetInstance()->
+        registerAction("comm_poll_incoming",
+                       "comm_incoming() stats",
+                       commIncomingStats, 0, 1);
 }
 
+void
+comm_select_init(void)
+{
+    commPollRegisterWithCacheManager();
+}
 
 static void
 commIncomingStats(StoreEntry * sentry)
index 3c0f69321ee53ffb19c3d837378f08711b8676d1..e3ee514daf6cc0786990ed599e4451ff39368c3e 100644 (file)
 #ifndef SQUID_COMM_POLL_H
 #define SQUID_COMM_POLL_H
 
-/* forward decls */
-
-class CacheManager;
-
-extern void commPollRegisterWithCacheManager(CacheManager & manager);
 
 #endif /* SQUID_COMM_POLL_H */
index 9d778197deb1c758fff6fd303afe911006607bea..aa96b3ec207bca4d788308a784f8ec170a1a7d09 100644 (file)
@@ -654,6 +654,15 @@ comm_select_dns_incoming(void)
     statHistCount(&statCounter.comm_dns_incoming, nevents);
 }
 
+static void
+commSelectRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("comm_select_incoming",
+                       "comm_incoming() stats",
+                       commIncomingStats, 0, 1);
+}
+
 void
 comm_select_init(void)
 {
@@ -662,14 +671,8 @@ comm_select_init(void)
     FD_ZERO(&global_readfds);
     FD_ZERO(&global_writefds);
     nreadfds = nwritefds = 0;
-}
 
-void
-commSelectRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("comm_select_incoming",
-                           "comm_incoming() stats",
-                           commIncomingStats, 0, 1);
+    commSelectRegisterWithCacheManager();
 }
 
 /*
index ac9d37dfe545a6b5ef7593c77339c2c4a9e7bd72..c80ac3108bd46f5d6384a505c03c9b1d35a99248 100644 (file)
 #ifndef SQUID_COMM_SELECT_H
 #define SQUID_COMM_SELECT_H
 
-/* forward decls */
-
-class CacheManager;
-
-extern void commSelectRegisterWithCacheManager(CacheManager & manager);
 
 #endif /* SQUID_COMM_SELECT_H */
index a09ea5e160002d03170ec5027f6d9f71872dd31f..d7ec4878764a326742088c943b84a51cd081eed0 100644 (file)
@@ -676,6 +676,15 @@ comm_select_dns_incoming(void)
     statHistCount(&statCounter.comm_dns_incoming, nevents);
 }
 
+static void
+commSelectRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+            registerAction("comm_select_incoming",
+                           "comm_incoming() stats",
+                           commIncomingStats, 0, 1);
+}
+
 void
 comm_select_init(void)
 {
@@ -684,14 +693,8 @@ comm_select_init(void)
     FD_ZERO(&global_readfds);
     FD_ZERO(&global_writefds);
     nreadfds = nwritefds = 0;
-}
 
-void
-commSelectRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("comm_select_incoming",
-                           "comm_incoming() stats",
-                           commIncomingStats, 0, 1);
+    commSelectRegisterWithCacheManager();
 }
 
 /*
old mode 100755 (executable)
new mode 100644 (file)
index b6cfdfe..25d15ee
@@ -465,7 +465,7 @@ _db_init(const char *logfile, const char *options) {
 #if HAVE_SYSLOG && defined(LOG_LOCAL4)
 
     if (opt_syslog_enable)
-        openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, syslog_facility);
+        openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, syslog_facility);
 
 #endif /* HAVE_SYSLOG */
 
index f5dcaf88635ac55ba91e60ba2dbaeb00b37a4bbd..ae1c701c3cc563de232904979f76892534be8521 100644 (file)
  */
 #define N_COUNT_HOUR_HIST (86400 * 3) / (60 * COUNT_INTERVAL)
 
-/* were to look for errors if config path fails */
-#ifndef DEFAULT_SQUID_ERROR_DIR
-#define DEFAULT_SQUID_ERROR_DIR "/usr/local/squid/etc/errors"
-#endif
-
 /* handy to determine the #elements in a static array */
 #define countof(arr) (sizeof(arr)/sizeof(*arr))
 
index 407726890f7b7133aa82e70fc20598a346ec91f8..31efc28c46001d434954a22dae31f98ee87b2ec1 100644 (file)
@@ -550,17 +550,20 @@ time_t DelayPools::LastUpdate = 0;
 unsigned short DelayPools::pools_ (0);
 
 void
-DelayPools::Init()
+DelayPools::RegisterWithCacheManager(void)
 {
-    LastUpdate = getCurrentTime();
+    CacheManager::GetInstance()->
+        registerAction("delay", "Delay Pool Levels", Stats, 0, 1);
 }
 
 void
-DelayPools::RegisterWithCacheManager(CacheManager & manager)
+DelayPools::Init()
 {
-    manager.registerAction("delay", "Delay Pool Levels", Stats, 0, 1);
+    LastUpdate = getCurrentTime();
+    RegisterWithCacheManager();
 }
 
+
 void
 DelayPools::InitDelayData()
 {
index 69897e1a463561cf122d69503d0406bd27019dbf..0053483f82a221e321a4cfc1bcc13d75ec9e87f6 100644 (file)
@@ -133,8 +133,6 @@ file_close(int fd)
      */
     assert(F->write_handler == NULL);
 
-    F->flags.closing = 1;
-
 #if CALL_FSYNC_BEFORE_CLOSE
 
     fsync(fd);
index 0df6d429d1b4d102fe5a5686e0ac70efe3af95ad..2b0b0a7451701bf9fdb1770d91539b8d334b145c 100644 (file)
@@ -55,11 +55,20 @@ dnsStats(StoreEntry * sentry)
     helperStats(sentry, dnsservers);
 }
 
+static void
+dnsRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance->
+        registerAction("dns", "Dnsserver Statistics", dnsStats, 0, 1);
+}
+
 void
 dnsInit(void)
 {
     wordlist *w;
 
+    dnsRegisterWithCacheManager();
+
     if (!Config.Program.dnsserver)
         return;
 
@@ -85,14 +94,6 @@ dnsInit(void)
     helperOpenServers(dnsservers);
 }
 
-void
-dnsRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("dns",
-                           "Dnsserver Statistics",
-                           dnsStats, 0, 1);
-}
-
 void
 dnsShutdown(void)
 {
old mode 100755 (executable)
new mode 100644 (file)
index 7d33916..f3b8d24
@@ -390,7 +390,7 @@ idnsParseWIN32SearchList(const char * Separator)
            t = (char *) xmalloc(Size);
            RegQueryValueEx(hndKey, "Domain", NULL, &Type, (LPBYTE) t,
                &Size);
-           debugs(78, 1, "Adding domain " << token << " from Registry");
+           debugs(78, 1, "Adding domain " << t << " from Registry");
            idnsAddPathComponent(t);
            xfree(t);
        }
@@ -414,7 +414,7 @@ idnsParseWIN32SearchList(const char * Separator)
 
         RegCloseKey(hndKey);
     }
-    if (npc == 0 && ((const char *) t = getMyHostname())) {
+    if (npc == 0 && (t = (char *) getMyHostname())) {
        t = strchr(t, '.');
        if (t)
            idnsAddPathComponent(t + 1);
@@ -445,7 +445,7 @@ idnsParseWIN32Registry(void)
 
             if (Result == ERROR_SUCCESS && Size) {
                 t = (char *) xmalloc(Size);
-                RegQueryValueEx(hndKey, "DhcpNameServer", NULL, &Type, t,
+                RegQueryValueEx(hndKey, "DhcpNameServer", NULL, &Type, (LPBYTE) t,
                                 &Size);
                 token = strtok(t, ", ");
 
@@ -462,7 +462,7 @@ idnsParseWIN32Registry(void)
 
             if (Result == ERROR_SUCCESS && Size) {
                 t = (char *) xmalloc(Size);
-                RegQueryValueEx(hndKey, "NameServer", NULL, &Type, t, &Size);
+                RegQueryValueEx(hndKey, "NameServer", NULL, &Type, (LPBYTE) t, &Size);
                 token = strtok(t, ", ");
 
                 while (token) {
@@ -516,7 +516,7 @@ idnsParseWIN32Registry(void)
                         if (Result == ERROR_SUCCESS && Size) {
                             t = (char *) xmalloc(Size);
                             RegQueryValueEx(hndKey2, "DhcpNameServer", NULL,
-                                            &Type, t, &Size);
+                                            &Type, (LPBYTE) t, &Size);
                             token = strtok(t, ", ");
 
                             while (token) {
@@ -534,7 +534,7 @@ idnsParseWIN32Registry(void)
                         if (Result == ERROR_SUCCESS && Size) {
                             t = (char *) xmalloc(Size);
                             RegQueryValueEx(hndKey2, "NameServer", NULL, &Type,
-                                            t, &Size);
+                                            (LPBYTE) t, &Size);
                             token = strtok(t, ", ");
 
                             while (token) {
@@ -575,7 +575,7 @@ idnsParseWIN32Registry(void)
 
             if (Result == ERROR_SUCCESS && Size) {
                 t = (char *) xmalloc(Size);
-                RegQueryValueEx(hndKey, "NameServer", NULL, &Type, t, &Size);
+                RegQueryValueEx(hndKey, "NameServer", NULL, &Type, (LPBYTE) t, &Size);
                 token = strtok(t, ", ");
 
                 while (token) {
@@ -1309,6 +1309,13 @@ idnsRcodeCount(int rcode, int attempt)
 
 /* ====================================================================== */
 
+static void
+idnsRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("idns", "Internal DNS Statistics", idnsStats, 0, 1);
+}
+
 void
 idnsInit(void)
 {
@@ -1381,12 +1388,8 @@ idnsInit(void)
         idns_lookup_hash = hash_create((HASHCMP *) strcmp, 103, hash_string);
         init++;
     }
-}
 
-void
-idnsRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("idns", "Internal DNS Statistics", idnsStats, 0, 1);
+    idnsRegisterWithCacheManager();
 }
 
 void
index 29a0df2e22824f725e46ccf3e9f056c9a2f50856..14a2877a0cfb9850f4523049805ed8d44f39dfc9 100644 (file)
@@ -517,8 +517,12 @@ main(int argc, char *argv[])
     for (;;) {
         memset(request, '\0', REQ_SZ);
 
-        if (fgets(request, REQ_SZ, stdin) == NULL)
-            exit(1);
+       if (fgets(request, REQ_SZ, stdin) == NULL) {
+#ifdef _SQUID_MSWIN_
+           WSACleanup();
+#endif
+           exit(1);
+       }
 
         t = strrchr(request, '\n');
 
index 24fdd08dabb3f83b6a8d2644aa4effff22fef6d5..5ab13f8c7c6f1fdee27897b9be08e229cfe61115 100644 (file)
@@ -173,10 +173,10 @@ typedef enum {
     CD_PARENT_HIT,
     CD_SIBLING_HIT,
 #endif
-#if USE_CARP
     CARP,
-#endif
     ANY_OLD_PARENT,
+    USERHASH_PARENT,
+    SOURCEHASH_PARENT,
     HIER_MAX
 } hier_code;
 
@@ -545,4 +545,15 @@ enum {
     DISABLE_PMTU_TRANSPARENT
 };
 
+#if USE_HTCP
+/*
+ * This should be in htcp.h but because neighborsHtcpClear is defined in
+ * protos.h it has to be here.
+ */
+typedef enum {
+    HTCP_CLR_PURGE,
+    HTCP_CLR_INVALIDATION,
+} htcp_clr_reason;
+#endif
+
 #endif /* SQUID_ENUMS_H */
index e5fd72a5ca64fd9d8c58e1eb4878ac8d2067470f..d4a39640072feb73d6320c0afcd8c3df427427f8 100644 (file)
@@ -32,6 +32,7 @@
  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
  *
  */
+#include "config.h"
 
 #include "errorpage.h"
 #include "AuthUserRequest.h"
  */
 
 
+#ifndef DEFAULT_SQUID_ERROR_DIR
+/** Where to look for errors if config path fails.
+ \note Please use ./configure --datadir=/path instead of patching
+ */
+#define DEFAULT_SQUID_ERROR_DIR   DEFAULT_SQUID_DATA_DIR"/errors"
+#endif
+
 /// \ingroup ErrorPageInternal
 CBDATA_CLASS_INIT(ErrorState);
 
@@ -87,12 +95,12 @@ error_hard_text[] = {
 
                         {
                             ERR_SQUID_SIGNATURE,
-                            "\n<BR clear=\"all\">\n"
-                            "<HR noshade size=\"1px\">\n"
-                            "<ADDRESS>\n"
+                            "\n<br>\n"
+                            "<hr>\n"
+                            "<div id=\"footer\">\n"
                             "Generated %T by %h (%s)\n"
-                            "</ADDRESS>\n"
-                            "</BODY></HTML>\n"
+                            "</div>\n"
+                            "</body></html>\n"
                         },
                         {
                             TCP_RESET,
@@ -114,14 +122,11 @@ static char **error_text = NULL;
 /// \ingroup ErrorPageInternal
 static int error_page_count = 0;
 
-static char *errorTryLoadText(const char *page_name, const char *dir);
+static char *errorTryLoadText(const char *page_name, const char *dir, bool silent = false);
 static char *errorLoadText(const char *page_name);
 static const char *errorFindHardText(err_type type);
 static ErrorDynamicPageInfo *errorDynamicPageInfoCreate(int id, const char *page_name);
 static void errorDynamicPageInfoDestroy(ErrorDynamicPageInfo * info);
-static MemBuf *errorBuildContent(ErrorState * err);
-static int errorDump(ErrorState * err, MemBuf * mb);
-static const char *errorConvert(char token, ErrorState * err);
 static IOCB errorSendComplete;
 
 
@@ -149,20 +154,30 @@ errorInitialize(void)
 
     for (i = ERR_NONE, ++i; i < error_page_count; ++i) {
         safe_free(error_text[i]);
-        /* hard-coded ? */
 
-        if ((text = errorFindHardText(i)))
+        if ((text = errorFindHardText(i))) {
+            /**\par
+             * Index any hard-coded error text into defaults.
+             */
             error_text[i] = xstrdup(text);
-        else if (i < ERR_MAX) {
-            /* precompiled ? */
+
+        } else if (i < ERR_MAX) {
+            /**\par
+             * Index precompiled fixed template files from one of two sources:
+             *  (a) default language translation directory (error_default_language)
+             *  (b) admin specified custom directory (error_directory)
+             */
             error_text[i] = errorLoadText(err_type_str[i]);
+
         } else {
-            /* dynamic */
+            /** \par
+             * Index any unknown file names used by deny_info.
+             */
             ErrorDynamicPageInfo *info = ErrorDynamicPages.items[i - ERR_MAX];
             assert(info && info->id == i && info->page_name);
 
             if (strchr(info->page_name, ':') == NULL) {
-                /* Not on redirected errors... */
+                /** But only if they are not redirection URL. */
                 error_text[i] = errorLoadText(info->page_name);
             }
         }
@@ -200,17 +215,39 @@ errorFindHardText(err_type type)
     return NULL;
 }
 
-
-/// \ingroup ErrorPageInternal
+/**
+ * \ingroup ErrorPageInternal
+ *
+ * Load into the in-memory error text Index a file probably available at:
+ *  (a) admin specified custom directory (error_directory)
+ *  (b) default language translation directory (error_default_language)
+ *  (c) English sub-directory where errors should ALWAYS exist
+ */
 static char *
 errorLoadText(const char *page_name)
 {
-    /* test configured location */
-    char *text = errorTryLoadText(page_name, Config.errorDirectory);
-    /* test default location if failed */
+    char *text = NULL;
+
+    /** test error_directory configured location */
+    if(Config.errorDirectory)
+        text = errorTryLoadText(page_name, Config.errorDirectory);
+
+#if USE_ERR_LOCALES
+    /** test error_default_language location */
+    if(!text && Config.errorDefaultLanguage) {
+        char dir[256];
+        snprintf(dir,256,"%s/%s", DEFAULT_SQUID_ERROR_DIR, Config.errorDefaultLanguage);
+        text = errorTryLoadText(page_name, dir);
+        if(!text) {
+            debugs(1, DBG_CRITICAL, "Unable to load default error language files. Reset to backups.");
+        }
+    }
+#endif
 
-    if (!text && strcmp(Config.errorDirectory, DEFAULT_SQUID_ERROR_DIR))
-        text = errorTryLoadText(page_name, DEFAULT_SQUID_ERROR_DIR);
+    /* test default location if failed (templates == English translation base templates) */
+    if (!text) {
+        text = errorTryLoadText(page_name, DEFAULT_SQUID_ERROR_DIR"/templates");
+    }
 
     /* giving up if failed */
     if (!text)
@@ -221,7 +258,7 @@ errorLoadText(const char *page_name)
 
 /// \ingroup ErrorPageInternal
 static char *
-errorTryLoadText(const char *page_name, const char *dir)
+errorTryLoadText(const char *page_name, const char *dir, bool silent)
 {
     int fd;
     char path[MAXPATHLEN];
@@ -234,7 +271,9 @@ errorTryLoadText(const char *page_name, const char *dir)
     fd = file_open(path, O_RDONLY | O_TEXT);
 
     if (fd < 0) {
-        debugs(4, 0, "errorTryLoadText: '" << path << "': " << xstrerror());
+        /* with dynamic locale negotiation we may see some failures before a success. */
+        if(!silent)
+            debugs(4, DBG_CRITICAL, HERE << "'" << path << "': " << xstrerror());
         return NULL;
     }
 
@@ -245,7 +284,7 @@ errorTryLoadText(const char *page_name, const char *dir)
     }
 
     if (len < 0) {
-        debugs(4, 0, "errorTryLoadText: failed to fully read: '" << path << "': " << xstrerror());
+        debugs(4, DBG_CRITICAL, HERE << "failed to fully read: '" << path << "': " << xstrerror());
     }
 
     file_close(fd);
@@ -278,7 +317,7 @@ static void
 errorDynamicPageInfoDestroy(ErrorDynamicPageInfo * info)
 {
     assert(info);
-    xfree(info->page_name);
+    safe_free(info->page_name);
     delete info;
 }
 
@@ -332,6 +371,7 @@ errorCon(err_type type, http_status status, HttpRequest * request)
 {
     ErrorState *err = new ErrorState;
     err->page_id = type;       /* has to be reset manually if needed */
+    err->err_language = NULL;
     err->type = type;
     err->httpStatus = status;
 
@@ -346,7 +386,6 @@ errorCon(err_type type, http_status status, HttpRequest * request)
 void
 errorAppendEntry(StoreEntry * entry, ErrorState * err)
 {
-    HttpReply *rep;
     assert(entry->mem_obj != NULL);
     assert (entry->isEmpty());
     debugs(4, 4, "Creating an error page for entry " << entry <<
@@ -375,15 +414,7 @@ errorAppendEntry(StoreEntry * entry, ErrorState * err)
 
     entry->lock();
     entry->buffer();
-    rep = errorBuildReply(err);
-    /* Add authentication header */
-    /*! \todo alter errorstate to be accel on|off aware. The 0 on the next line
-     * depends on authenticate behaviour: all schemes to date send no extra
-     * data on 407/401 responses, and do not check the accel state on 401/407
-     * responses 
-     */
-    authenticateFixHeader(rep, err->auth_user_request, err->request, 0, 1);
-    entry->replaceHttpReply(rep);
+    entry->replaceHttpReply( err->BuildHttpReply() );
     EBIT_CLR(entry->flags, ENTRY_FWD_HDR_WAIT);
     entry->flush();
     entry->complete();
@@ -410,7 +441,7 @@ errorSend(int fd, ErrorState * err)
     /* moved in front of errorBuildBuf @?@ */
     err->flags.flag_cbdata = 1;
 
-    rep = errorBuildReply(err);
+    rep = err->BuildHttpReply();
 
     comm_write_mbuf(fd, rep->pack(), errorSendComplete, err);
 
@@ -458,66 +489,68 @@ errorStateFree(ErrorState * err)
     safe_free(err->ftp.reply);
     AUTHUSERREQUESTUNLOCK(err->auth_user_request, "errstate");
     safe_free(err->err_msg);
+#if USE_ERR_LOCALES
+    if(err->err_language != Config.errorDefaultLanguage)
+#endif
+        safe_free(err->err_language);
     cbdataFree(err);
 }
 
-/// \ingroup ErrorPageInternal
-static int
-errorDump(ErrorState * err, MemBuf * mb)
+int
+ErrorState::Dump(MemBuf * mb)
 {
-    HttpRequest *r = err->request;
     MemBuf str;
     const char *p = NULL;      /* takes priority over mb if set */
     char ntoabuf[MAX_IPSTRLEN];
 
     str.reset();
     /* email subject line */
-    str.Printf("CacheErrorInfo - %s", errorPageName(err->type));
+    str.Printf("CacheErrorInfo - %s", errorPageName(type));
     mb->Printf("?subject=%s", rfc1738_escape_part(str.buf));
     str.reset();
     /* email body */
     str.Printf("CacheHost: %s\r\n", getMyHostname());
     /* - Err Msgs */
-    str.Printf("ErrPage: %s\r\n", errorPageName(err->type));
+    str.Printf("ErrPage: %s\r\n", errorPageName(type));
 
-    if (err->xerrno) {
-        str.Printf("Err: (%d) %s\r\n", err->xerrno, strerror(err->xerrno));
+    if (xerrno) {
+        str.Printf("Err: (%d) %s\r\n", xerrno, strerror(xerrno));
     } else {
         str.Printf("Err: [none]\r\n");
     }
 
-    if (err->auth_user_request->denyMessage())
-        str.Printf("Auth ErrMsg: %s\r\n", err->auth_user_request->denyMessage());
+    if (auth_user_request->denyMessage())
+        str.Printf("Auth ErrMsg: %s\r\n", auth_user_request->denyMessage());
 
-    if (err->dnsserver_msg) {
-        str.Printf("DNS Server ErrMsg: %s\r\n", err->dnsserver_msg);
+    if (dnsserver_msg) {
+        str.Printf("DNS Server ErrMsg: %s\r\n", dnsserver_msg);
     }
 
     /* - TimeStamp */
     str.Printf("TimeStamp: %s\r\n\r\n", mkrfc1123(squid_curtime));
 
     /* - IP stuff */
-    str.Printf("ClientIP: %s\r\n", err->src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
+    str.Printf("ClientIP: %s\r\n", src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
 
-    if (r && r->hier.host) {
-        str.Printf("ServerIP: %s\r\n", r->hier.host);
+    if (request && request->hier.host) {
+        str.Printf("ServerIP: %s\r\n", request->hier.host);
     }
 
     str.Printf("\r\n");
     /* - HTTP stuff */
     str.Printf("HTTP Request:\r\n");
 
-    if (NULL != r) {
+    if (NULL != request) {
         Packer p;
         str.Printf("%s %s HTTP/%d.%d\n",
-                   RequestMethodStr(r->method),
-                   r->urlpath.size() ? r->urlpath.buf() : "/",
-                   r->http_ver.major, r->http_ver.minor);
+                   RequestMethodStr(request->method),
+                   request->urlpath.size() ? request->urlpath.buf() : "/",
+                   request->http_ver.major, request->http_ver.minor);
         packerToMemInit(&p, &str);
-        r->header.packInto(&p);
+        request->header.packInto(&p);
         packerClean(&p);
-    } else if (err->request_hdrs) {
-        p = err->request_hdrs;
+    } else if (request_hdrs) {
+        p = request_hdrs;
     } else {
         p = "[none]";
     }
@@ -525,11 +558,11 @@ errorDump(ErrorState * err, MemBuf * mb)
     str.Printf("\r\n");
     /* - FTP stuff */
 
-    if (err->ftp.request) {
-        str.Printf("FTP Request: %s\r\n", err->ftp.request);
-        str.Printf("FTP Reply: %s\r\n", err->ftp.reply);
+    if (ftp.request) {
+        str.Printf("FTP Request: %s\r\n", ftp.request);
+        str.Printf("FTP Reply: %s\r\n", ftp.reply);
         str.Printf("FTP Msg: ");
-        wordlistCat(err->ftp.server_msg, &str);
+        wordlistCat(ftp.server_msg, &str);
         str.Printf("\r\n");
     }
 
@@ -542,11 +575,9 @@ errorDump(ErrorState * err, MemBuf * mb)
 /// \ingroup ErrorPageInternal
 #define CVT_BUF_SZ 512
 
-/// \ingroup ErrorPageInternal
-static const char *
-errorConvert(char token, ErrorState * err)
+const char *
+ErrorState::Convert(char token)
 {
-    HttpRequest *r = err->request;
     static MemBuf mb;
     const char *p = NULL;      /* takes priority over mb if set */
     int do_quote = 1;
@@ -558,8 +589,8 @@ errorConvert(char token, ErrorState * err)
 
     case 'a':
 
-        if (r && r->auth_user_request)
-            p = r->auth_user_request->username();
+        if (request && request->auth_user_request)
+            p = request->auth_user_request->username();
 
         if (!p)
             p = "-";
@@ -567,24 +598,24 @@ errorConvert(char token, ErrorState * err)
         break;
 
     case 'B':
-        p = r ? ftpUrlWith2f(r) : "[no URL]";
+        p = request ? ftpUrlWith2f(request) : "[no URL]";
 
         break;
 
     case 'c':
-        p = errorPageName(err->type);
+        p = errorPageName(type);
 
         break;
 
     case 'e':
-        mb.Printf("%d", err->xerrno);
+        mb.Printf("%d", xerrno);
 
         break;
 
     case 'E':
 
-        if (err->xerrno)
-            mb.Printf("(%d) %s", err->xerrno, strerror(err->xerrno));
+        if (xerrno)
+            mb.Printf("(%d) %s", xerrno, strerror(xerrno));
         else
             mb.Printf("[No Error]");
 
@@ -592,8 +623,8 @@ errorConvert(char token, ErrorState * err)
 
     case 'f':
         /* FTP REQUEST LINE */
-        if (err->ftp.request)
-            p = err->ftp.request;
+        if (ftp.request)
+            p = ftp.request;
         else
             p = "nothing";
 
@@ -601,8 +632,8 @@ errorConvert(char token, ErrorState * err)
 
     case 'F':
         /* FTP REPLY LINE */
-        if (err->ftp.request)
-            p = err->ftp.reply;
+        if (ftp.request)
+            p = ftp.reply;
         else
             p = "nothing";
 
@@ -610,7 +641,7 @@ errorConvert(char token, ErrorState * err)
 
     case 'g':
         /* FTP SERVER MESSAGE */
-        wordlistCat(err->ftp.server_msg, &mb);
+        wordlistCat(ftp.server_msg, &mb);
 
         break;
 
@@ -620,24 +651,24 @@ errorConvert(char token, ErrorState * err)
         break;
 
     case 'H':
-        if (r) {
-            if (r->hier.host)
-                p = r->hier.host;
+        if (request) {
+            if (request->hier.host)
+                p = request->hier.host;
             else
-                p = r->GetHost();
+                p = request->GetHost();
         } else
             p = "[unknown host]";
 
         break;
 
     case 'i':
-        mb.Printf("%s", err->src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
+        mb.Printf("%s", src_addr.NtoA(ntoabuf,MAX_IPSTRLEN));
 
         break;
 
     case 'I':
-        if (r && r->hier.host) {
-            mb.Printf("%s", r->hier.host);
+        if (request && request->hier.host) {
+            mb.Printf("%s", request->hier.host);
         } else
             p = "[unknown]";
 
@@ -653,12 +684,12 @@ errorConvert(char token, ErrorState * err)
         break;
 
     case 'm':
-        p = err->auth_user_request->denyMessage("[not available]");
+        p = auth_user_request->denyMessage("[not available]");
 
         break;
 
     case 'M':
-        p = r ? RequestMethodStr(r->method) : "[unknown method]";
+        p = request ? RequestMethodStr(request->method) : "[unknown method]";
 
         break;
 
@@ -668,8 +699,8 @@ errorConvert(char token, ErrorState * err)
         break;
 
     case 'p':
-        if (r) {
-            mb.Printf("%d", (int) r->port);
+        if (request) {
+            mb.Printf("%d", (int) request->port);
         } else {
             p = "[unknown port]";
         }
@@ -677,22 +708,22 @@ errorConvert(char token, ErrorState * err)
         break;
 
     case 'P':
-        p = r ? ProtocolStr[r->protocol] : "[unknown protocol]";
+        p = request ? ProtocolStr[request->protocol] : "[unknown protocol]";
         break;
 
     case 'R':
 
-        if (NULL != r) {
+        if (NULL != request) {
             Packer p;
             mb.Printf("%s %s HTTP/%d.%d\n",
-                      RequestMethodStr(r->method),
-                      r->urlpath.size() ? r->urlpath.buf() : "/",
-                      r->http_ver.major, r->http_ver.minor);
+                      RequestMethodStr(request->method),
+                      request->urlpath.size() ? request->urlpath.buf() : "/",
+                      request->http_ver.major, request->http_ver.minor);
             packerToMemInit(&p, &mb);
-            r->header.packInto(&p);
+            request->header.packInto(&p);
             packerClean(&p);
-        } else if (err->request_hdrs) {
-            p = err->request_hdrs;
+        } else if (request_hdrs) {
+            p = request_hdrs;
         } else {
             p = "[no request]";
         }
@@ -706,14 +737,14 @@ errorConvert(char token, ErrorState * err)
     case 'S':
         /* signature may contain %-escapes, recursion */
 
-        if (err->page_id != ERR_SQUID_SIGNATURE) {
-            const int saved_id = err->page_id;
-            err->page_id = ERR_SQUID_SIGNATURE;
-            MemBuf *sign_mb = errorBuildContent(err);
+        if (page_id != ERR_SQUID_SIGNATURE) {
+            const int saved_id = page_id;
+            page_id = ERR_SQUID_SIGNATURE;
+            MemBuf *sign_mb = BuildContent();
             mb.Printf("%s", sign_mb->content());
             sign_mb->clean();
             delete sign_mb;
-            err->page_id = saved_id;
+            page_id = saved_id;
             do_quote = 0;
         } else {
             /* wow, somebody put %S into ERR_SIGNATURE, stop recursion */
@@ -731,11 +762,11 @@ errorConvert(char token, ErrorState * err)
         break;
 
     case 'U':
-        p = r ? urlCanonicalClean(r) : err->url ? err->url : "[no URL]";
+        p = request ? urlCanonicalClean(request) : url ? url : "[no URL]";
         break;
 
     case 'u':
-        p = r ? urlCanonical(r) : err->url ? err->url : "[no URL]";
+        p = request ? urlCanonical(request) : url ? url : "[no URL]";
         break;
 
     case 'w':
@@ -749,21 +780,21 @@ errorConvert(char token, ErrorState * err)
 
     case 'W':
         if (Config.adminEmail && Config.onoff.emailErrData)
-            errorDump(err, &mb);
+            Dump(&mb);
 
         break;
 
     case 'z':
-        if (err->dnsserver_msg)
-            p = err->dnsserver_msg;
+        if (dnsserver_msg)
+            p = dnsserver_msg;
         else
             p = "[unknown]";
 
         break;
 
     case 'Z':
-        if (err->err_msg)
-            p = err->err_msg;
+        if (err_msg)
+            p = err_msg;
         else
             p = "[unknown]";
 
@@ -796,10 +827,10 @@ errorConvert(char token, ErrorState * err)
 }
 
 HttpReply *
-errorBuildReply(ErrorState * err)
+ErrorState::BuildHttpReply()
 {
     HttpReply *rep = new HttpReply;
-    const char *name = errorPageName(err->page_id);
+    const char *name = errorPageName(page_id);
     /* no LMT for error pages; error pages expire immediately */
     HttpVersion version(1, 0);
 
@@ -807,15 +838,15 @@ errorBuildReply(ErrorState * err)
         /* Redirection */
         rep->setHeaders(version, HTTP_MOVED_TEMPORARILY, NULL, "text/html", 0, 0, squid_curtime);
 
-        if (err->request) {
-            char *quoted_url = rfc1738_escape_part(urlCanonical(err->request));
+        if (request) {
+            char *quoted_url = rfc1738_escape_part(urlCanonical(request));
             httpHeaderPutStrf(&rep->header, HDR_LOCATION, name, quoted_url);
         }
 
-        httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%d %s", err->httpStatus, "Access Denied");
+        httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%d %s", httpStatus, "Access Denied");
     } else {
-        MemBuf *content = errorBuildContent(err);
-        rep->setHeaders(version, err->httpStatus, NULL, "text/html", content->contentSize(), 0, squid_curtime);
+        MemBuf *content = BuildContent();
+        rep->setHeaders(version, httpStatus, NULL, "text/html", content->contentSize(), 0, squid_curtime);
         /*
          * include some information for downstream caches. Implicit
          * replaceable content. This isn't quite sufficient. xerrno is not
@@ -824,8 +855,34 @@ errorBuildReply(ErrorState * err)
          * might want to know. Someone _will_ want to know OTOH, the first
          * X-CACHE-MISS entry should tell us who.
          */
-        httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%s %d",
-                          name, err->xerrno);
+        httpHeaderPutStrf(&rep->header, HDR_X_SQUID_ERROR, "%s %d", name, xerrno);
+
+#if USE_ERR_LOCALES
+        /*
+         * If error page auto-negotiate is enabled in any way, send the Vary.
+         * RFC 2616 section 13.6 and 14.44 says MAY and SHOULD do this.
+         * We have even better reasons though:
+         * see http://wiki.squid-cache.org/KnowledgeBase/VaryNotCaching
+         */
+        if(!Config.errorDirectory) {
+            /* We 'negotiated' this ONLY from the Accept-Language. */
+            httpHeaderDelById(&rep->header, HDR_VARY);
+            httpHeaderPutStrf(&rep->header, HDR_VARY, "Accept-Language");
+        }
+
+        /* add the Content-Language header according to RFC section 14.12 */
+        if(err_language) {
+            httpHeaderPutStrf(&rep->header, HDR_CONTENT_LANGUAGE, "%s", err_language);
+        }
+        else
+#endif /* USE_ERROR_LOCALES */
+        {
+            /* default templates are in English */
+            /* language is known unless error_directory override used */
+            if(!Config.errorDirectory)
+                httpHeaderPutStrf(&rep->header, HDR_CONTENT_LANGUAGE, "en");
+        }
+
         httpBodySet(&rep->body, content);
         /* do not memBufClean() or delete the content, it was absorbed by httpBody */
     }
@@ -833,25 +890,106 @@ errorBuildReply(ErrorState * err)
     return rep;
 }
 
-/// \ingroup ErrorPageInternal
-static MemBuf *
-errorBuildContent(ErrorState * err)
+MemBuf *
+ErrorState::BuildContent()
 {
     MemBuf *content = new MemBuf;
-    const char *m;
+    const char *m = NULL;
     const char *p;
     const char *t;
-    assert(err != NULL);
-    assert(err->page_id > ERR_NONE && err->page_id < error_page_count);
-    content->init();
-    m = error_text[err->page_id];
+
+    assert(page_id > ERR_NONE && page_id < error_page_count);
+
+#if USE_ERR_LOCALES
+    String hdr;
+    char dir[256];
+    int l = 0;
+
+    /** error_directory option in squid.conf overrides translations.
+     * Otherwise locate the Accept-Language header
+     */
+    if(!Config.errorDirectory && request->header.getList(HDR_ACCEPT_LANGUAGE, &hdr) ) {
+
+        const char *buf = hdr.buf(); // raw header string for parsing
+        int pos = 0; // current parsing position in header string
+        char *reset = NULL; // where to reset the p pointer for each new tag file
+        char *dt = NULL;
+
+        /* prep the directory path string to prevent snprintf ... */
+        l = strlen(DEFAULT_SQUID_ERROR_DIR);
+        memcpy(dir, DEFAULT_SQUID_ERROR_DIR, l);
+        dir[ l++ ] = '/';
+        reset = dt = dir + l;
+
+        debugs(4, 6, HERE << "Testing Header: '" << hdr << "'");
+
+        while( pos < hdr.size() ) {
+
+/*
+ * Header value format:
+ *  - sequence of whitespace delimited tags
+ *  - each tag may suffix with ';'.* which we can ignore.
+ *  - IFF a tag contains only two characters we can wildcard ANY translations matching: <it> '-'? .*
+ *    with preference given to an exact match.
+ */
+            while(pos < hdr.size() && buf[pos] != ';' && buf[pos] != ',' && !xisspace(buf[pos]) && dt < (dir+256) ) {
+                *dt++ = xtolower(buf[pos++]);
+            }
+            *dt++ = '\0'; // nul-terminated the filename content string before system use.
+
+            debugs(4, 9, HERE << "STATE: dt='" << dt << "', reset='" << reset << "', reset[1]='" << reset[1] << "', pos=" << pos << ", buf='" << &buf[pos] << "'");
+
+            /* if we found anything we might use, try it. */
+            if(*reset != '\0') {
+
+                debugs(4, 6, HERE << "Found language '" << reset << "', testing for available template in: '" << dir << "'");
+                m = errorTryLoadText( err_type_str[page_id], dir, false);
+
+                if(m) {
+                    /* store the language we found for the Content-Language reply header */
+                    err_language = xstrdup(reset);
+                    break;
+                }
+
+#if HAVE_GLOB
+                if( (dt - reset) == 2) {
+                    /* TODO glob the error directory for sub-dirs matching: <tag> '-*'   */
+                    /* use first result. */
+                    debugs(4,2, HERE << "wildcard fallback errors not coded yet.");
+                }
+#endif
+            }
+
+            dt = reset; // reset for next tag testing. we replace the failed name instead of cloning.
+
+            // IFF we terminated the tag on ';' we need to skip the 'q=' bit to the next ',' or end.
+            while(pos < hdr.size() && buf[pos] != ',') pos++;
+            if(buf[pos] == ',') pos++;
+        }
+    }
+#endif /* USE_ERR_LOCALES */
+
+    /** \par
+     * If client-specific error templates are not enabled or available.
+     * fall back to the old style squid.conf settings.
+     */
+    if(!m) {
+        m = error_text[page_id];
+#if USE_ERR_LOCALES
+        if(!Config.errorDirectory)
+            err_language = Config.errorDefaultLanguage;
+#endif
+        debugs(4, 2, HERE << "No existing error page language negotiated for " << errorPageName(page_id) << ". Using default error file.");
+    }
+
     assert(m);
+    content->init();
 
     while ((p = strchr(m, '%'))) {
         content->append(m, p - m);     /* copy */
-        t = errorConvert(*++p, err);   /* convert */
+        t = Convert(*++p);             /* convert */
         content->Printf("%s", t);      /* copy */
-        m = p + 1;             /* advance */
+        m = p + 1;                     /* advance */
     }
 
     if (*m)
index 04a541aeb36270c688c886b4751a00b3c3d49bfb..243782ffd2616ca8dd86701725bdf933b221c1c9 100644 (file)
  */
 
 class AuthUserRequest;
+class HttpReply;
+class MemBuf;
 
 /// \ingroup ErrorPageAPI
 class ErrorState
 {
+public:
+    /**
+     * Allocates and initializes an error response
+     */
+    HttpReply *BuildHttpReply(void);
+
+private:
+    /**
+     * Locates error page template to be used for this error
+     * and constructs the HTML page content from it.
+     */
+    MemBuf *BuildContent(void);
+
+    /**
+     * Convert an error template into an error page.
+     */
+    const char *Convert(char token);
+
+    /**
+     * CacheManager / Debug dump of the ErrorState object.
+     * Writes output into the given MemBuf.
+     \retval 0 successful completion.
+     */
+    int Dump(MemBuf * mb);
 
 public:
     err_type type;
     int page_id;
+    char *err_language;
     http_status httpStatus;
     AuthUserRequest *auth_user_request;
     HttpRequest *request;
@@ -135,12 +162,6 @@ SQUIDCEXTERN void errorInitialize(void);
 /// \ingroup ErrorPageAPI
 SQUIDCEXTERN void errorClean(void);
 
-/**
- \ingroup ErrorPageInternal
- * Allocates and initializes an error response
- */
-SQUIDCEXTERN HttpReply *errorBuildReply(ErrorState * err);
-
 /**
  \ingroup ErrorPageAPI
  *
index f23e8d5e0743452af5e16a1c0f327b9aa3e66c39..9b069e619898ba0479b7e3838a18df0de874b628 100644 (file)
@@ -149,9 +149,10 @@ eventDelete(EVH * func, void *arg)
 }
 
 void
-eventInit(CacheManager &manager)
+eventInit(void)
 {
-    manager.registerAction("events", "Event Queue", eventDump, 0, 1);
+    CacheManager::GetInstance()->
+        registerAction("events", "Event Queue", eventDump, 0, 1);
 }
 
 static void
index 531c860167ce71ff58a44664141482dc76b16502..36b3952caffbcc61ef356fcf13711323ae7bb89b 100644 (file)
@@ -49,7 +49,7 @@ typedef void EVH(void *);
 extern void eventAdd(const char *name, EVH * func, void *arg, double when, int, bool cbdata=true);
 SQUIDCEXTERN void eventAddIsh(const char *name, EVH * func, void *arg, double delta_ish, int);
 SQUIDCEXTERN void eventDelete(EVH * func, void *arg);
-SQUIDCEXTERN void eventInit(CacheManager &);
+SQUIDCEXTERN void eventInit(void);
 SQUIDCEXTERN void eventFreeMemory(void);
 SQUIDCEXTERN int eventFind(EVH *, void *);
 
index 91c25544902159e3ccc69907620832a9078349dd..59200fe014d8cf2e62ce30b155e97b6f44a8e790 100644 (file)
@@ -55,6 +55,7 @@
 #endif
 #include "client_side.h"
 #include "HttpRequest.h"
+#include "HttpReply.h"
 #include "authenticate.h"
 #include "helper.h"
 #include "MemBuf.h"
@@ -133,7 +134,7 @@ public:
 
 struct _external_acl_format
 {
-    enum {
+    enum format_type {
         EXT_ACL_UNKNOWN,
         EXT_ACL_LOGIN,
 #if USE_IDENT
@@ -149,10 +150,17 @@ struct _external_acl_format
         EXT_ACL_PORT,
         EXT_ACL_PATH,
         EXT_ACL_METHOD,
-        EXT_ACL_HEADER,
-        EXT_ACL_HEADER_MEMBER,
-        EXT_ACL_HEADER_ID,
-        EXT_ACL_HEADER_ID_MEMBER,
+
+        EXT_ACL_HEADER_REQUEST,
+        EXT_ACL_HEADER_REQUEST_MEMBER,
+        EXT_ACL_HEADER_REQUEST_ID,
+        EXT_ACL_HEADER_REQUEST_ID_MEMBER,
+
+        EXT_ACL_HEADER_REPLY,
+        EXT_ACL_HEADER_REPLY_MEMBER,
+        EXT_ACL_HEADER_REPLY_ID,
+        EXT_ACL_HEADER_REPLY_ID_MEMBER,
+
 #if USE_SSL
         EXT_ACL_USER_CERT,
         EXT_ACL_CA_CERT,
@@ -208,6 +216,66 @@ free_external_acl(void *data)
         hashFreeMemory(p->cache);
 }
 
+/**
+ * Parse the External ACL format %<{.*} and %>{.*} token(s) to pass a specific
+ * request or reply header to external helper.
+ *
+ \param header   - the token being parsed (without the identifying prefix)
+ \param type     - format enum identifier for this element, pulled from identifying prefix
+ \param format   - structure to contain all the info about this format element.
+ */
+void
+parse_header_token(external_acl_format *format, char *header, const _external_acl_format::format_type type)
+{
+    /* header format */
+    char *member, *end;
+
+    /** Cut away the closing brace */
+    end = strchr(header, '}');
+    if (end && strlen(end) == 1)
+        *end = '\0';
+    else
+        self_destruct();
+
+    member = strchr(header, ':');
+
+    if (member) {
+        /* Split in header and member */
+        *member++ = '\0';
+
+        if (!xisalnum(*member))
+            format->separator = *member++;
+        else
+            format->separator = ',';
+
+        format->member = xstrdup(member);
+
+        if(type == _external_acl_format::EXT_ACL_HEADER_REQUEST)
+            format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER;
+        else
+            format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER;
+    } else {
+        format->type = type;
+    }
+
+    format->header = xstrdup(header);
+    format->header_id = httpHeaderIdByNameDef(header, strlen(header));
+
+    if (format->header_id != -1) {
+        if (member) {
+            if(type == _external_acl_format::EXT_ACL_HEADER_REQUEST)
+                format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_ID_MEMBER;
+            else
+                format->type = _external_acl_format::EXT_ACL_HEADER_REPLY_ID_MEMBER;
+        } else {
+            if(type == _external_acl_format::EXT_ACL_HEADER_REQUEST)
+                format->type = _external_acl_format::EXT_ACL_HEADER_REQUEST_ID;
+            else
+                format->type = _external_acl_format::EXT_ACL_HEADER_REPLY_ID;
+        }
+    }
+}
+
 void
 parse_externalAclHelper(external_acl ** list)
 {
@@ -299,44 +367,17 @@ parse_externalAclHelper(external_acl ** list)
         format = cbdataAlloc(external_acl_format);
 
         if (strncmp(token, "%{", 2) == 0) {
-            /* header format */
-            char *header, *member, *end;
-            header = token + 2;
-            end = strchr(header, '}');
-            /* cut away the closing brace */
-
-            if (end && strlen(end) == 1)
-                *end = '\0';
-            else
-                self_destruct();
-
-            member = strchr(header, ':');
-
-            if (member) {
-                /* Split in header and member */
-                *member++ = '\0';
-
-                if (!xisalnum(*member))
-                    format->separator = *member++;
-                else
-                    format->separator = ',';
-
-                format->member = xstrdup(member);
-
-                format->type = _external_acl_format::EXT_ACL_HEADER_MEMBER;
-            } else {
-                format->type = _external_acl_format::EXT_ACL_HEADER;
-            }
+            // deprecated. but assume the old configs all referred to request headers.
+            debugs(82, DBG_IMPORTANT, "WARNING: external_acl_type format %{...} is being replaced by %>{...} for : " << token);
+            parse_header_token(format, (token+2), _external_acl_format::EXT_ACL_HEADER_REQUEST);
+        }
 
-            format->header = xstrdup(header);
-            format->header_id = httpHeaderIdByNameDef(header, strlen(header));
+        if (strncmp(token, "%>{", 3) == 0) {
+            parse_header_token(format, (token+3), _external_acl_format::EXT_ACL_HEADER_REQUEST);
+       }
+        if (strncmp(token, "%<{", 3) == 0) {
+            parse_header_token(format, (token+3), _external_acl_format::EXT_ACL_HEADER_REPLY);
 
-            if (format->header_id != -1) {
-                if (member)
-                    format->type = _external_acl_format::EXT_ACL_HEADER_ID_MEMBER;
-                else
-                    format->type = _external_acl_format::EXT_ACL_HEADER_ID;
-            }
         } else if (strcmp(token, "%LOGIN") == 0) {
             format->type = _external_acl_format::EXT_ACL_LOGIN;
             a->require_auth = true;
@@ -450,16 +491,24 @@ dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl
         for (format = node->format; format; format = format->next) {
             switch (format->type) {
 
-            case _external_acl_format::EXT_ACL_HEADER:
+            case _external_acl_format::EXT_ACL_HEADER_REQUEST:
+            case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID:
+                storeAppendPrintf(sentry, " %%>{%s}", format->header);
+                break;
 
-            case _external_acl_format::EXT_ACL_HEADER_ID:
-                storeAppendPrintf(sentry, " %%{%s}", format->header);
+            case _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER:
+            case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID_MEMBER:
+                storeAppendPrintf(sentry, " %%>{%s:%s}", format->header, format->member);
                 break;
 
-            case _external_acl_format::EXT_ACL_HEADER_MEMBER:
+            case _external_acl_format::EXT_ACL_HEADER_REPLY:
+            case _external_acl_format::EXT_ACL_HEADER_REPLY_ID:
+                storeAppendPrintf(sentry, " %%<{%s}", format->header);
+                break;
 
-            case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER:
-                storeAppendPrintf(sentry, " %%{%s:%s}", format->header, format->member);
+            case _external_acl_format::EXT_ACL_HEADER_REPLY_MEMBER:
+            case _external_acl_format::EXT_ACL_HEADER_REPLY_ID_MEMBER:
+                storeAppendPrintf(sentry, " %%<{%s:%s}", format->header, format->member);
                 break;
 #define DUMP_EXT_ACL_TYPE(a) \
             case _external_acl_format::EXT_ACL_##a: \
@@ -503,9 +552,7 @@ dump_externalAclHelper(StoreEntry * sentry, const char *name, const external_acl
 
                 DUMP_EXT_ACL_TYPE(EXT_USER);
 
-            case _external_acl_format::EXT_ACL_UNKNOWN:
-
-            case _external_acl_format::EXT_ACL_END:
+            default:
                 fatal("unknown external_acl format error");
                 break;
             }
@@ -677,7 +724,7 @@ aclMatchExternal(external_acl_data *acl, ACLChecklist * ch)
         key = makeExternalAclKey(ch, acl);
 
         if (acl->def->require_auth)
-            ch->auth_user_request = NULL;
+            AUTHUSERREQUESTUNLOCK(ch->auth_user_request, "ACLChecklist via aclMatchExternal");
 
         if (!key) {
             /* Not sufficient data to process */
@@ -782,6 +829,7 @@ makeExternalAclKey(ACLChecklist * ch, external_acl_data * acl_data)
     wordlist *arg;
     external_acl_format *format;
     HttpRequest *request = ch->request;
+    HttpReply *reply = ch->reply;
     mb.reset();
 
     for (format = acl_data->def->format; format; format = format->next) {
@@ -850,25 +898,53 @@ makeExternalAclKey(ACLChecklist * ch, external_acl_data * acl_data)
             str = RequestMethodStr(request->method);
             break;
 
-        case _external_acl_format::EXT_ACL_HEADER:
+        case _external_acl_format::EXT_ACL_HEADER_REQUEST:
             sb = request->header.getByName(format->header);
             str = sb.buf();
             break;
 
-        case _external_acl_format::EXT_ACL_HEADER_ID:
+        case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID:
             sb = request->header.getStrOrList(format->header_id);
             str = sb.buf();
             break;
 
-        case _external_acl_format::EXT_ACL_HEADER_MEMBER:
+        case _external_acl_format::EXT_ACL_HEADER_REQUEST_MEMBER:
             sb = request->header.getByNameListMember(format->header, format->member, format->separator);
             str = sb.buf();
             break;
 
-        case _external_acl_format::EXT_ACL_HEADER_ID_MEMBER:
+        case _external_acl_format::EXT_ACL_HEADER_REQUEST_ID_MEMBER:
             sb = request->header.getListMember(format->header_id, format->member, format->separator);
             str = sb.buf();
             break;
+
+        case _external_acl_format::EXT_ACL_HEADER_REPLY:
+            if(reply) {
+                sb = reply->header.getByName(format->header);
+                str = sb.buf();
+            }
+            break;
+
+        case _external_acl_format::EXT_ACL_HEADER_REPLY_ID:
+            if(reply) {
+                sb = reply->header.getStrOrList(format->header_id);
+                str = sb.buf();
+            }
+            break;
+
+        case _external_acl_format::EXT_ACL_HEADER_REPLY_MEMBER:
+            if(reply) {
+                sb = reply->header.getByNameListMember(format->header, format->member, format->separator);
+                str = sb.buf();
+            }
+            break;
+
+        case _external_acl_format::EXT_ACL_HEADER_REPLY_ID_MEMBER:
+            if(reply) {
+                sb = reply->header.getListMember(format->header_id, format->member, format->separator);
+                str = sb.buf();
+            }
+            break;
 #if USE_SSL
 
         case _external_acl_format::EXT_ACL_USER_CERT_RAW:
@@ -1293,6 +1369,15 @@ externalAclStats(StoreEntry * sentry)
     }
 }
 
+static void
+externalAclRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("external_acl",
+                       "External ACL stats",
+                       externalAclStats, 0, 1);
+}
+
 void
 externalAclInit(void)
 {
@@ -1323,14 +1408,8 @@ externalAclInit(void)
         firstTimeInit = 0;
         CBDATA_INIT_TYPE_FREECB(externalAclState, free_externalAclState);
     }
-}
 
-void
-externalAclRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("external_acl",
-                           "External ACL stats",
-                           externalAclStats, 0, 1);
+    externalAclRegisterWithCacheManager();
 }
 
 void
index bc5e1226fa0956850104b17a45aad4887c1139f3..d4931af13b1c996cc2a3fe74b2223653d29fef54 100644 (file)
--- a/src/fd.cc
+++ b/src/fd.cc
@@ -103,8 +103,7 @@ fd_close(int fd)
     F->flags.open = 0;
     fdUpdateBiggest(fd, 0);
     Number_FD--;
-    F->clear();
-    F->timeout = 0;
+    *F = fde();
 }
 
 #ifdef _SQUID_MSWIN_
@@ -269,7 +268,7 @@ fdDumpOpen(void)
         debugs(51, 1, "Open FD "<< std::left<< std::setw(10) << 
                (F->bytes_read && F->bytes_written ? "READ/WRITE" :
                 F->bytes_read ? "READING" : F->bytes_written ? "WRITING" : 
-                null_string)  <<
+                "UNSTARTED")  <<
                " "<< std::right << std::setw(4) << i  << " " << F->desc);
     }
 }
index 517c54dfce9a804beda181971c4462eb5e714c75..7965e9bcff642b279d6146a8301b81c54d9e26ac 100644 (file)
--- a/src/fde.h
+++ b/src/fde.h
@@ -44,11 +44,9 @@ class fde
 
 public:
     fde() { clear(); };
-    /** Clear the fde class properly back to NULL equivalent. */
-    inline void clear() {
-        memset(this, 0, sizeof(fde));
-        local_addr.SetEmpty(); // IPAddress likes to be setup nicely.
-    }
+    
+    /// True if comm_close for this fd has been called
+    bool closing() { return flags.close_request; }
 
     /* NOTE: memset is used on fdes today. 20030715 RBC */
     static void DumpStats (StoreEntry *);
@@ -70,9 +68,8 @@ public:
     struct
     {
        unsigned int open:1;
-       unsigned int close_request:1;
+       unsigned int close_request:1; // file_ or comm_close has been called
        unsigned int write_daemon:1;
-       unsigned int closing:1;
        unsigned int socket_eof:1;
        unsigned int nolinger:1;
        unsigned int nonblocking:1;
@@ -104,6 +101,7 @@ public:
     time_t timeout;
     void *lifetime_data;
     AsyncCall::Pointer closeHandler;
+    AsyncCall::Pointer halfClosedReader; /// read handler for half-closed fds
     CommWriteStateData *wstate;         /* State data for comm_write */
     READ_HANDLER *read_method;
     WRITE_HANDLER *write_method;
@@ -119,6 +117,17 @@ public:
     unsigned char upstreamTOS;                 /* see FwdState::dispatch()  */
 #endif
 
+private:
+    /** Clear the fde class back to NULL equivalent. */
+    inline void clear() {
+        timeoutHandler = NULL;
+        closeHandler = NULL;
+        halfClosedReader = NULL;
+        // XXX: the following memset may corrupt or leak new or changed members
+        memset(this, 0, sizeof(fde));
+        local_addr.SetEmpty(); // IPAddress likes to be setup nicely.
+    }
+    
 };
 
 #endif /* SQUID_FDE_H */
index 41875152db55406236be305abcd2e27767d13b58..91da4cbbaf65af803a575b3510da012a16988513 100644 (file)
@@ -190,7 +190,7 @@ FwdState::~FwdState()
     debugs(17, 3, HERE << "FwdState destructor done");
 }
 
-/*
+/**
  * This is the entry point for client-side to start forwarding
  * a transaction.  It is a static method that may or may not
  * allocate a FwdState.
@@ -256,7 +256,7 @@ FwdState::fwdStart(int client_fd, StoreEntry *entry, HttpRequest *request)
         return;
 
     case PROTO_CACHEOBJ:
-        cachemgrStart(client_fd, request, entry);
+        CacheManager::GetInstance()->Start(client_fd, request, entry);
         return;
 
     case PROTO_URN:
@@ -283,7 +283,7 @@ FwdState::fwdStart(int client_fd, StoreEntry *entry, HttpRequest *request)
 void
 FwdState::fail(ErrorState * errorState)
 {
-    debugs(17, 3, "fwdFail: " << err_type_str[errorState->type] << " \"" << httpStatusString(errorState->httpStatus) << "\"\n\t" << entry->url()  );
+    debugs(17, 3, HERE << err_type_str[errorState->type] << " \"" << httpStatusString(errorState->httpStatus) << "\"\n\t" << entry->url()  );
 
     if (err)
         errorStateFree(err);
@@ -294,20 +294,20 @@ FwdState::fail(ErrorState * errorState)
         errorState->request = HTTPMSGLOCK(request);
 }
 
-/*
+/**
  * Frees fwdState without closing FD or generating an abort
  */
 void
 FwdState::unregister(int fd)
 {
-    debugs(17, 3, "fwdUnregister: " << entry->url()  );
+    debugs(17, 3, HERE << entry->url()  );
     assert(fd == server_fd);
     assert(fd > -1);
     comm_remove_close_handler(fd, fwdServerClosedWrapper, this);
     server_fd = -1;
 }
 
-/*
+/**
  * server-side modules call fwdComplete() when they are done
  * downloading an object.  Then, we either 1) re-forward the
  * request somewhere else if needed, or 2) call storeComplete()
@@ -318,7 +318,7 @@ FwdState::complete()
 {
     StoreEntry *e = entry;
     assert(entry->store_status == STORE_PENDING);
-    debugs(17, 3, "fwdComplete: " << e->url() << "\n\tstatus " << entry->getReply()->sline.status  );
+    debugs(17, 3, HERE << e->url() << "\n\tstatus " << entry->getReply()->sline.status  );
 #if URL_CHECKSUM_DEBUG
 
     entry->mem_obj->checkUrlChecksum();
@@ -699,7 +699,7 @@ FwdState::connectDone(int aServerFD, comm_err_t status, int xerrno)
 
         ErrorState *anErr = errorCon(ERR_DNS_FAIL, HTTP_SERVICE_UNAVAILABLE, request);
 
-        anErr->dnsserver_msg = xstrdup(dns_error_message);
+        anErr->dnsserver_msg = xstrdup(dns_error_message_safe());
 
         fail(anErr);
 
@@ -1177,14 +1177,15 @@ FwdState::initModule()
         logfile = logfileOpen(Config.Log.forward, 0, 1);
 
 #endif
+
+    RegisterWithCacheManager();
 }
 
 void
-FwdState::RegisterWithCacheManager(CacheManager & manager)
+FwdState::RegisterWithCacheManager(void)
 {
-    manager.registerAction("forward",
-                           "Request Forwarding Statistics",
-                           fwdStats, 0, 1);
+    CacheManager::GetInstance()->
+         registerAction("forward", "Request Forwarding Statistics", fwdStats, 0, 1);
 }
 
 void
@@ -1223,14 +1224,11 @@ FwdState::updateHierarchyInfo()
     FwdServer *fs = servers;
     assert(fs);
 
-    // some callers use one condition, some use the other; are they the same?
-    assert((fs->code == HIER_DIRECT) == !fs->_peer);
-
     const char *nextHop = NULL;
 
-    if (fs->_peer) { 
-        // went to peer, log peer domain name
-        nextHop = fs->_peer->host;
+    if (fs->_peer) {
+        // went to peer, log peer host name
+        nextHop = fs->_peer->name;
     } else {
         // went DIRECT, must honor log_ip_on_direct
 
@@ -1239,7 +1237,7 @@ FwdState::updateHierarchyInfo()
         nextHop = fd_table[server_fd].ipaddr;
         if (!Config.onoff.log_ip_on_direct || !nextHop[0])
             nextHop = request->GetHost(); // domain name
-       }
+    }
 
     assert(nextHop);
     hierarchyNote(&request->hier, fs->code, nextHop);
index bec382078e27163eb2aa2749d46532255d384828..b9a9b90e1a005ba6caea00d495a19104df8fbf45 100644 (file)
@@ -3,7 +3,6 @@
 
 /* forward decls */
 
-class CacheManager;
 class ErrorState;
 
 #include "comm.h"
@@ -25,7 +24,6 @@ public:
     typedef RefCount<FwdState> Pointer;
     ~FwdState();
     static void initModule();
-    static void RegisterWithCacheManager(CacheManager & manager);
 
     static void fwdStart(int fd, StoreEntry *, HttpRequest *);
     void startComplete(FwdServer *);
@@ -66,6 +64,7 @@ private:
     void updateHierarchyInfo();
     void completed();
     void retryOrBail();
+    static void RegisterWithCacheManager(void);
 
 #if WIP_FWD_LOG
 
index ea3c13c26b2b8de41633b1d2d32af66f0e27c462..70b1f95ff882862a8d85c23f2aaa47426eb5f82c 100644 (file)
@@ -582,6 +582,16 @@ fqdncache_nbgethostbyaddr(IPAddress &addr, FQDNH * handler, void *handlerData)
 #endif
 }
 
+/// \ingroup FQDNCacheInternal
+static void
+fqdncacheRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("fqdncache", "FQDN Cache Stats and Contents",
+                       fqdnStats, 0, 1);
+
+}
+
 /**
  \ingroup FQDNCacheAPI
  *
@@ -593,6 +603,8 @@ fqdncache_init(void)
 {
     int n;
 
+    fqdncacheRegisterWithCacheManager();
+
     if (fqdn_table)
         return;
 
@@ -616,16 +628,6 @@ fqdncache_init(void)
                 sizeof(fqdncache_entry), 0);
 }
 
-/// \ingroup FQDNCacheAPI
-void
-fqdncacheRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("fqdncache",
-                           "FQDN Cache Stats and Contents",
-                           fqdnStats, 0, 1);
-
-}
-
 /**
  \ingroup FQDNCacheAPI
  *
@@ -939,3 +941,14 @@ snmp_netFqdnFn(variable_list * Var, snint * ErrP)
 }
 
 #endif /*SQUID_SNMP */
+
+/// XXX: a hack to work around the missing DNS error info
+// see http://www.squid-cache.org/bugs/show_bug.cgi?id=2459
+const char *
+dns_error_message_safe()
+{
+    if (dns_error_message)
+               return dns_error_message;
+       debugs(35,DBG_IMPORTANT, "Internal error: lost DNS error info");
+       return "lost DNS error";
+}
index c2a8a6a7f0d75ce49fa7dda81dfd394439209cb4..e28a7db5c5e7e92e7e8d0f466e7bc517bbe0b96d 100644 (file)
@@ -36,7 +36,7 @@ check_PROGRAMS=testHeaders
 
 ## Special Universal .h dependency test script
 ## aborts if error encountered
-testHeaders: ufs/*.h coss/*.h
+testHeaders: $(top_srcdir)/src/fs/ufs/*.h $(top_srcdir)/src/fs/coss/*.h
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "ufs" || exit 1
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "coss" || exit 1
 ## diskd/ has no .h files
index 74c1b5485b1a4abae506fd342f8956b14e89f2b7..6bc7a5d111eb8c0b0bd912dba1b8cfa57407f53c 100644 (file)
@@ -52,6 +52,7 @@ StoreFScoss::GetInstance()
 StoreFScoss::StoreFScoss()
 {
     FsAdd(*this);
+    registerWithCacheManager();
 }
 
 char const *
@@ -84,9 +85,9 @@ StoreFScoss::setup()
 }
 
 void
-StoreFScoss::registerWithCacheManager(CacheManager & manager)
+StoreFScoss::registerWithCacheManager()
 {
-    manager.registerAction("coss", "COSS Stats", Stats, 0, 1);
+    CacheManager::GetInstance()->registerAction("coss", "COSS Stats", Stats, 0, 1);
 }
 
 void
index 2cbd335d866902ef5d47ae938f1c18028f777b44..69ac6dd98853dfa334eaa60f5f5c695435cdca09 100644 (file)
@@ -86,7 +86,7 @@ public:
     virtual char const *type() const;
     virtual SwapDir *createSwapDir();
     virtual void done();
-    virtual void registerWithCacheManager(CacheManager & manager);
+    virtual void registerWithCacheManager(void);
     virtual void setup();
     /* Not implemented */
     StoreFScoss (StoreFScoss const &);
index 1a8aac4e34c821c95f2c5cdee8f1e85cb1278ca8..e9463d734b4d7e2075f4abe514938b81dd49ea1c 100644 (file)
@@ -122,6 +122,24 @@ class FtpStateData;
 /// \ingroup ServerProtocolFTPInternal
 typedef void (FTPSM) (FtpStateData *);
 
+/// common code for FTP control and data channels
+// does not own the channel descriptor, which is managed by FtpStateData
+class FtpChannel {
+public:
+    FtpChannel(): fd(-1) {}
+
+    /// called after the socket is opened, sets up close handler
+    void opened(int aFd, const AsyncCall::Pointer &aCloser);
+
+    void close(); /// clears the close handler and calls comm_close
+    void clear(); /// just resets fd and close handler
+
+    int fd; /// channel descriptor; \todo: remove because the closer has it
+
+private:
+    AsyncCall::Pointer closer; /// Comm close handler callback
+};
+
 /// \ingroup ServerProtocolFTPInternal
 class FtpStateData : public ServerStateData
 {
@@ -159,9 +177,10 @@ public:
     char *old_filepath;
     char typecode;
 
-    struct
+    // \todo: optimize ctrl and data structs member order, to minimize size
+    /// FTP control channel info; the channel is opened once per transaction
+    struct CtrlChannel: public FtpChannel
     {
-        int fd;
         char *buf;
         size_t size;
         size_t offset;
@@ -171,9 +190,9 @@ public:
         int replycode;
     } ctrl;
 
-    struct
+    /// FTP data channel info; the channel may be opened/closed a few times
+    struct DataChannel: public FtpChannel
     {
-        int fd;
         MemBuf *readBuf;
         char *host;
         u_short port;
@@ -183,7 +202,6 @@ public:
     struct _ftp_flags flags;
 
 private:
-    AsyncCall::Pointer closeHandler;
     CBDATA_CLASS(FtpStateData);
 
 public:
@@ -222,7 +240,8 @@ public:
     static CNCB ftpPasvCallback;
     static PF ftpDataWrite;
     void ftpTimeout(const CommTimeoutCbParams &io);
-    void ftpSocketClosed(const CommCloseCbParams &io);
+    void ctrlClosed(const CommCloseCbParams &io);
+    void dataClosed(const CommCloseCbParams &io);
     void ftpReadControlReply(const CommIoCbParams &io);
     void ftpWriteCommandCallback(const CommIoCbParams &io);
     void ftpAcceptDataConnection(const CommAcceptCbParams &io);
@@ -238,6 +257,7 @@ public:
 
     virtual bool doneWithServer() const;
     virtual bool haveControlChannel(const char *caller_name) const;
+    AsyncCall::Pointer dataCloser(); /// creates a Comm close callback
 
 private:
     // BodyConsumer for HTTP: consume request body.
@@ -395,11 +415,26 @@ FTPSM *FTP_SM_FUNCS[] =
         ftpReadMkdir           /* SENT_MKDIR */
     };
 
+/// handler called by Comm when FTP control channel is closed unexpectedly
+void 
+FtpStateData::ctrlClosed(const CommCloseCbParams &io)
+{
+    ctrl.clear();
+    deleteThis("FtpStateData::ctrlClosed");
+}
+
+/// handler called by Comm when FTP data channel is closed unexpectedly
 void 
-FtpStateData::ftpSocketClosed(const CommCloseCbParams &io)
+FtpStateData::dataClosed(const CommCloseCbParams &io)
 {
-    ctrl.fd = -1;
-    deleteThis("FtpStateData::ftpSocketClosed");
+    data.clear();
+    failed(ERR_FTP_FAILURE, 0);
+    /* failed closes ctrl.fd and frees ftpState */
+
+    /* NP: failure recovery may be possible when its only a data.fd failure.
+     *     is the ctrl.fd is still fine, we can send ABOR down it and retry.
+     *     Just need to watch out for wider Squid states like shutting down or reconfigure.
+     */
 }
 
 FtpStateData::FtpStateData(FwdState *theFwdState) : AsyncJob("FtpStateData"), ServerStateData(theFwdState)
@@ -408,8 +443,6 @@ FtpStateData::FtpStateData(FwdState *theFwdState) : AsyncJob("FtpStateData"), Se
     debugs(9, 3, HERE << "'" << url << "'" );
     statCounter.server.all.requests++;
     statCounter.server.ftp.requests++;
-    ctrl.fd = theFwdState->server_fd;
-    data.fd = -1;
     theSize = -1;
     mdtm = -1;
 
@@ -419,9 +452,9 @@ FtpStateData::FtpStateData(FwdState *theFwdState) : AsyncJob("FtpStateData"), Se
     flags.rest_supported = 1;
 
     typedef CommCbMemFunT<FtpStateData, CommCloseCbParams> Dialer;
-    closeHandler = asyncCall(9, 5, "FtpStateData::ftpSocketClosed",
-                                Dialer(this,&FtpStateData::ftpSocketClosed));
-    comm_add_close_handler(ctrl.fd, closeHandler);
+    AsyncCall::Pointer closer = asyncCall(9, 5, "FtpStateData::ctrlClosed",
+        Dialer(this, &FtpStateData::ctrlClosed));
+    ctrl.opened(theFwdState->server_fd, closer);
 
     if (request->method == METHOD_PUT)
         flags.put = 1;
@@ -436,10 +469,11 @@ FtpStateData::~FtpStateData()
         reply_hdr = NULL;
     }
 
-    if (data.fd > -1) {
-        int fd = data.fd;
-        data.fd = -1;
-        comm_close(fd);
+    data.close();
+
+    if (ctrl.fd >= 0) {
+        debugs(9, DBG_IMPORTANT, HERE << "Internal bug: FtpStateData left " <<
+            "control FD " << ctrl.fd << " open");
     }
 
     if (ctrl.buf) {
@@ -1209,14 +1243,9 @@ FtpStateData::dataComplete()
     debugs(9, 3,HERE);
 
     /* Connection closed; transfer done. */
-    if (data.fd > -1) {
-        /**
-         * Close data socket so it does not occupy resources while
-         * we wait.
-         */
-        comm_close(data.fd);
-        data.fd = -1;
-    }
+
+    /// Close data channel, if any, to conserve resources while we wait.
+    data.close();
 
     /* expect the "transfer complete" message on the control socket */
     /*
@@ -2453,12 +2482,8 @@ ftpSendPassive(FtpStateData * ftpState)
         return;
     }
 
-    /** \par
-      * Closes any old FTP-Data connection which may exist. */
-    if (ftpState->data.fd >= 0) {
-        comm_close(ftpState->data.fd);
-        ftpState->data.fd = -1;
-    }
+    /// Closes any old FTP-Data connection which may exist. */
+    ftpState->data.close();
 
     /** \par
       * Checks for previous EPSV/PASV failures on this server/session.
@@ -2499,17 +2524,7 @@ ftpSendPassive(FtpStateData * ftpState)
         return;
     }
 
-    /*
-     * No comm_add_close_handler() here.  If we have both ctrl and
-     * data FD's call ftpSocketClosed() upon close, then we have
-     * to delete the close handler which did NOT get called
-     * to prevent ftpSocketClosed() getting called twice.
-     * Instead we'll always call comm_close() on the ctrl FD.
-     *
-     * XXX this should not actually matter if the ftpState is cbdata
-     * managed correctly and comm close handlers are cbdata fenced
-     */
-    ftpState->data.fd = fd;
+    ftpState->data.opened(fd, ftpState->dataCloser());
 
     /** \par
       * Send EPSV (ALL,2,1) or PASV on the control channel.
@@ -2715,15 +2730,9 @@ ftpOpenListenSocket(FtpStateData * ftpState, int fallback)
     struct addrinfo *AI = NULL;
     int on = 1;
     int x = 0;
-    /*
-     * Tear down any old data connection if any. We are about to
-     * establish a new one.
-     */
 
-    if (ftpState->data.fd > 0) {
-        comm_close(ftpState->data.fd);
-        ftpState->data.fd = -1;
-    }
+    /// Close old data channel, if any. We may open a new one below.
+    ftpState->data.close();
 
     /*
      * Set up a listen socket on the same local address as the
@@ -2772,7 +2781,7 @@ ftpOpenListenSocket(FtpStateData * ftpState, int fallback)
         return -1;
     }
 
-    ftpState->data.fd = fd;
+    ftpState->data.opened(fd, ftpState->dataCloser());
     ftpState->data.port = comm_local_port(fd);
     ftpState->data.host = NULL;
     return fd;
@@ -2962,9 +2971,8 @@ void FtpStateData::ftpAcceptDataConnection(const CommAcceptCbParams &io)
 
     /**\par
      * Replace the Listen socket with the accepted data socket */
-    comm_close(data.fd);
-
-    data.fd = io.nfd;
+    data.close();
+    data.opened(io.nfd, dataCloser());
     data.port = io.details.peer.GetPort();
     io.details.peer.NtoA(data.host,SQUIDHOSTNAMELEN);
 
@@ -3705,6 +3713,8 @@ FtpStateData::appendSuccessHeader()
 void
 FtpStateData::haveParsedReplyHeaders()
 {
+    ServerStateData::haveParsedReplyHeaders();
+
     StoreEntry *e = entry;
 
     e->timestampsSet();
@@ -3725,7 +3735,7 @@ HttpReply *
 FtpStateData::ftpAuthRequired(HttpRequest * request, const char *realm)
 {
     ErrorState *err = errorCon(ERR_CACHE_ACCESS_DENIED, HTTP_UNAUTHORIZED, request);
-    HttpReply *newrep = errorBuildReply(err);
+    HttpReply *newrep = err->BuildHttpReply();
     errorStateFree(err);
     /* add Authenticate header */
     newrep->header.putAuth("Basic", realm);
@@ -3795,7 +3805,11 @@ void
 FtpStateData::doneSendingRequestBody()
 {
     debugs(9,3, HERE);
-    ftpWriteTransferDone(this);
+    dataComplete();
+/* NP: RFC 959  3.3.  DATA CONNECTION MANAGEMENT
+ * if transfer type is 'stream' call dataComplete()
+ * otherwise leave open. (reschedule control channel read?)
+ */
 }
 
 /**
@@ -3828,16 +3842,10 @@ FtpStateData::closeServer()
 
     if (ctrl.fd > -1) {
         fwd->unregister(ctrl.fd);
-       comm_remove_close_handler(ctrl.fd, closeHandler);
-        closeHandler = NULL;
-        comm_close(ctrl.fd);
-        ctrl.fd = -1;
+        ctrl.close();
     }
 
-    if (data.fd > -1) {
-        comm_close(data.fd);
-        data.fd = -1;
-    }
+    data.close();
 }
 
 /**
@@ -3889,7 +3897,51 @@ FtpStateData::abortTransaction(const char *reason)
         comm_close(ctrl.fd);
         return;
     }
-    
+
     fwd->handleUnregisteredServerEnd();
     deleteThis("FtpStateData::abortTransaction");
 }
+
+/// creates a data channel Comm close callback
+AsyncCall::Pointer
+FtpStateData::dataCloser()
+{
+    typedef CommCbMemFunT<FtpStateData, CommCloseCbParams> Dialer;
+    return asyncCall(9, 5, "FtpStateData::dataClosed",
+        Dialer(this, &FtpStateData::dataClosed));
+}
+
+/// configures the channel with a descriptor and registers a close handler
+void
+FtpChannel::opened(int aFd, const AsyncCall::Pointer &aCloser)
+{
+    assert(fd < 0);
+    assert(closer == NULL);
+
+    assert(aFd >= 0);
+    assert(aCloser != NULL);
+
+    fd = aFd;
+    closer = aCloser;
+    comm_add_close_handler(fd, closer);
+}
+
+/// planned close: removes the close handler and calls comm_close
+void
+FtpChannel::close()
+{
+    if (fd >= 0) {
+        comm_remove_close_handler(fd, closer);
+        closer = NULL;
+        comm_close(fd); // we do not expect to be called back
+        fd = -1;
+    }
+}
+
+/// just resets fd and close handler
+void
+FtpChannel::clear()
+{
+    fd = -1;
+    closer = NULL;
+}
index 1694bd852113f1ee7b79d5ebb91d9015960c0af2..3af974ff1199fb9ccef41622fbb709c6be765766 100644 (file)
@@ -64,14 +64,14 @@ extern "C"
     extern char config_input_line[BUFSIZ];
     extern const char *DefaultConfigFile;      /* DEFAULT_CONFIG_FILE */
     extern const char *cfg_filename;   /* NULL */
-    extern const char *const appname;  /* "squid" */
+//MOVED:version.h:APP_SHORTNAME    extern const char *const appname;   /* "squid" */
     extern const char *const dash_str; /* "-" */
     extern const char *const null_string;      /* "" */
     extern const char *const version_string;   /* VERSION */
-    extern const char *const full_appname_string;      /* PACKAGE "/" VERSION */
+//MOVED:versions.h:APP_FULLNAME    extern const char *const full_appname_string;       /* PACKAGE "/" VERSION */
     extern const char *const appname_string;   /* PACKAGE */
-    extern char * visible_appname_string;
     extern const char *const w_space;  /* " \t\n\r" */
+    extern char const * visible_appname_string; /* NULL */
     extern const char *fdTypeStr[];
     extern const char *hier_strings[];
     extern const char *memStatusStr[];
@@ -95,7 +95,6 @@ extern "C"
     extern int neighbors_do_private_keys;      /* 1 */
     extern int opt_catch_signals;      /* 1 */
     extern int opt_debug_stderr;       /* -1 */
-    extern int opt_dns_tests;  /* 1 */
     extern int opt_foreground_rebuild; /* 0 */
     extern char *opt_forwarded_for;    /* NULL */
     extern int opt_reload_hit_only;    /* 0 */
index c989abd0bc686ebad5853d9f79373de4adc8bb64..96f4f2d55feab6b7bbade7c0ede3b28eb2748245 100644 (file)
@@ -176,6 +176,7 @@ struct _htcpStuff
     int rr;
     int f1;
     int response;
+    int reason;
     u_int32_t msg_id;
     htcpSpecifier S;
     htcpDetail D;
@@ -246,9 +247,7 @@ static ssize_t htcpBuildTstOpData(char *buf, size_t buflen, htcpStuff * stuff);
 static void htcpFreeSpecifier(htcpSpecifier * s);
 static void htcpFreeDetail(htcpDetail * s);
 
-static void htcpHandle(char *buf, int sz, IPAddress &from);
-
-static void htcpHandleData(char *buf, int sz, IPAddress &from);
+static void htcpHandleMsg(char *buf, int sz, IPAddress &from);
 
 static void htcpHandleMon(htcpDataHeader *, char *buf, int sz, IPAddress &from);
 
@@ -438,6 +437,26 @@ htcpBuildTstOpData(char *buf, size_t buflen, htcpStuff * stuff)
     return 0;
 }
 
+static ssize_t
+htcpBuildClrOpData(char *buf, size_t buflen, htcpStuff * stuff)
+{
+    u_short reason;
+    
+    switch (stuff->rr) {
+    case RR_REQUEST:
+        debugs(31, 3, "htcpBuildClrOpData: RR_REQUEST");
+        reason = htons((u_short)stuff->reason);
+        xmemcpy(buf, &reason, 2);
+        return htcpBuildSpecifier(buf + 2, buflen - 2, stuff) + 2;
+    case RR_RESPONSE:
+        break;
+    default:
+        fatal_dump("htcpBuildClrOpData: bad RR value");
+    }
+    
+    return 0;
+}
+
 static ssize_t
 htcpBuildOpData(char *buf, size_t buflen, htcpStuff * stuff)
 {
@@ -451,7 +470,7 @@ htcpBuildOpData(char *buf, size_t buflen, htcpStuff * stuff)
         break;
 
     case HTCP_CLR:
-        /* nothing to be done */
+        off = htcpBuildClrOpData(buf + off, buflen, stuff);
         break;
 
     default:
@@ -581,7 +600,7 @@ htcpSend(const char *buf, int len, IPAddress &to)
                         len);
 
     if (x < 0)
-        debugs(31, 1, "htcpSend: FD " << htcpOutSocket << " sendto: " << xstrerror());
+        debugs(31, 3, "htcpSend: FD " << htcpOutSocket << " sendto: " << xstrerror());
     else
         statCounter.htcp.pkts_sent++;
 }
@@ -633,7 +652,7 @@ htcpUnpackSpecifier(char *buf, int sz)
     buf += 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackSpecifier: failed to unpack METHOD");
+        debugs(31, 3, "htcpUnpackSpecifier: failed to unpack METHOD");
         htcpFreeSpecifier(s);
         return NULL;
     }
@@ -651,7 +670,7 @@ htcpUnpackSpecifier(char *buf, int sz)
     sz -= 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackSpecifier: failed to unpack URI");
+        debugs(31, 3, "htcpUnpackSpecifier: failed to unpack URI");
         htcpFreeSpecifier(s);
         return NULL;
     }
@@ -674,7 +693,7 @@ htcpUnpackSpecifier(char *buf, int sz)
     sz -= 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackSpecifier: failed to unpack VERSION");
+        debugs(31, 3, "htcpUnpackSpecifier: failed to unpack VERSION");
         htcpFreeSpecifier(s);
         return NULL;
     }
@@ -697,7 +716,7 @@ htcpUnpackSpecifier(char *buf, int sz)
     sz -= 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackSpecifier: failed to unpack REQ-HDRS");
+        debugs(31, 3, "htcpUnpackSpecifier: failed to unpack REQ-HDRS");
         htcpFreeSpecifier(s);
         return NULL;
     }
@@ -751,7 +770,7 @@ htcpUnpackDetail(char *buf, int sz)
     buf += 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackDetail: failed to unpack RESP_HDRS");
+        debugs(31, 3, "htcpUnpackDetail: failed to unpack RESP_HDRS");
         htcpFreeDetail(d);
         return NULL;
     }
@@ -769,7 +788,7 @@ htcpUnpackDetail(char *buf, int sz)
     sz -= 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackDetail: failed to unpack ENTITY_HDRS");
+        debugs(31, 3, "htcpUnpackDetail: failed to unpack ENTITY_HDRS");
         htcpFreeDetail(d);
         return NULL;
     }
@@ -792,7 +811,7 @@ htcpUnpackDetail(char *buf, int sz)
     sz -= 2;
 
     if (l > sz) {
-        debugs(31, 1, "htcpUnpackDetail: failed to unpack CACHE_HDRS");
+        debugs(31, 3, "htcpUnpackDetail: failed to unpack CACHE_HDRS");
         htcpFreeDetail(d);
         return NULL;
     }
@@ -917,7 +936,7 @@ htcpTstReply(htcpDataHeader * dhdr, StoreEntry * e, htcpSpecifier * spec, IPAddr
 
     if (!pktlen)
     {
-        debugs(31, 1, "htcpTstReply: htcpBuildPacket() failed");
+        debugs(31, 3, "htcpTstReply: htcpBuildPacket() failed");
         return;
     }
 
@@ -955,7 +974,7 @@ htcpClrReply(htcpDataHeader * dhdr, int purgeSucceeded, IPAddress &from)
 
     if (pktlen == 0)
     {
-        debugs(31, 1, "htcpClrReply: htcpBuildPacket() failed");
+        debugs(31, 3, "htcpClrReply: htcpBuildPacket() failed");
         return;
     }
 
@@ -1102,7 +1121,7 @@ htcpHandleTstResponse(htcpDataHeader * hdr, char *buf, int sz, IPAddress &from)
 
     if (!key)
     {
-        debugs(31, 1, "htcpHandleTstResponse: No query key for response id '" << hdr->msg_id << "' from '" << from << "'");
+        debugs(31, 3, "htcpHandleTstResponse: No query key for response id '" << hdr->msg_id << "' from '" << from << "'");
         return;
     }
 
@@ -1110,7 +1129,7 @@ htcpHandleTstResponse(htcpDataHeader * hdr, char *buf, int sz, IPAddress &from)
 
     if ( *peer != from || peer->GetPort() != from.GetPort() )
     {
-        debugs(31, 1, "htcpHandleTstResponse: Unexpected response source " << from );
+        debugs(31, 3, "htcpHandleTstResponse: Unexpected response source " << from );
         return;
     }
 
@@ -1133,7 +1152,7 @@ htcpHandleTstResponse(htcpDataHeader * hdr, char *buf, int sz, IPAddress &from)
         d = htcpUnpackDetail(buf, sz);
 
         if (d == NULL) {
-            debugs(31, 1, "htcpHandleTstResponse: bad DETAIL");
+            debugs(31, 3, "htcpHandleTstResponse: bad DETAIL");
             return;
         }
 
@@ -1287,25 +1306,93 @@ htcpHandleClr(htcpDataHeader * hdr, char *buf, int sz, IPAddress &from)
     htcpFreeSpecifier(s);
 }
 
+/*
+ * Forward a CLR request to all peers who have requested that CLRs be
+ * forwarded to them.
+ */
 static void
+htcpForwardClr(char *buf, int sz)
+{
+    peer *p;
+    
+    for (p = Config.peers; p; p = p->next) {
+        if (!p->options.htcp) {
+            continue;
+        }
+        if (!p->options.htcp_forward_clr) {
+            continue;
+        }
+        
+        htcpSend(buf, sz, p->in_addr);
+    }
+}
 
-htcpHandleData(char *buf, int sz, IPAddress &from)
+/*
+ * Do the first pass of handling an HTCP message.  This used to be two
+ * separate functions, htcpHandle and htcpHandleData.  They were merged to
+ * allow for forwarding HTCP packets easily to other peers if desired.
+ *
+ * This function now works out what type of message we have received and then
+ * hands it off to other functions to break apart message-specific data.
+ */
+static void
+htcpHandleMsg(char *buf, int sz, IPAddress &from)
 {
+    htcpHeader htcpHdr;
     htcpDataHeader hdr;
+    char *hbuf;
+    int hsz;
+    assert (sz >= 0);
 
-    if ((size_t)sz < sizeof(htcpDataHeader))
+    if ((size_t)sz < sizeof(htcpHeader))
     {
-        debugs(31, 1, "htcpHandleData: msg size less than htcpDataHeader size");
+        debugs(31, 3, "htcpHandle: msg size less than htcpHeader size");
         return;
     }
 
-    if (!old_squid_format)
+    htcpHexdump("htcpHandle", buf, sz);
+    xmemcpy(&htcpHdr, buf, sizeof(htcpHeader));
+    htcpHdr.length = ntohs(htcpHdr.length);
+
+    if (htcpHdr.minor == 0)
+        old_squid_format = 1;
+    else
+        old_squid_format = 0;
+
+    debugs(31, 3, "htcpHandle: htcpHdr.length = " << htcpHdr.length);
+    debugs(31, 3, "htcpHandle: htcpHdr.major = " << htcpHdr.major);
+    debugs(31, 3, "htcpHandle: htcpHdr.minor = " << htcpHdr.minor);
+
+    if (sz != htcpHdr.length)
     {
-        xmemcpy(&hdr, buf, sizeof(hdr));
-    } else
+        debugs(31, 3, "htcpHandle: sz/" << sz << " != htcpHdr.length/" <<
+               htcpHdr.length << " from " << from );
+
+        return;
+    }
+
+    if (htcpHdr.major != 0)
+    {
+        debugs(31, 3, "htcpHandle: Unknown major version " << htcpHdr.major << " from " << from );
+
+        return;
+    }
+
+    hbuf = buf + sizeof(htcpHeader);
+    hsz = sz - sizeof(htcpHeader);
+
+    if ((size_t)hsz < sizeof(htcpDataHeader))
     {
+        debugs(31, 3, "htcpHandleData: msg size less than htcpDataHeader size");
+        return;
+    }
+
+    if (!old_squid_format)
+    {
+        xmemcpy(&hdr, hbuf, sizeof(hdr));
+    } else {
         htcpDataHeaderSquid hdrSquid;
-        xmemcpy(&hdrSquid, buf, sizeof(hdrSquid));
+        xmemcpy(&hdrSquid, hbuf, sizeof(hdrSquid));
         hdr.length = hdrSquid.length;
         hdr.opcode = hdrSquid.opcode;
         hdr.response = hdrSquid.response;
@@ -1317,12 +1404,11 @@ htcpHandleData(char *buf, int sz, IPAddress &from)
 
     hdr.length = ntohs(hdr.length);
     hdr.msg_id = ntohl(hdr.msg_id);
-    debugs(31, 3, "htcpHandleData: sz = " << sz);
+    debugs(31, 3, "htcpHandleData: hsz = " << hsz);
     debugs(31, 3, "htcpHandleData: length = " << hdr.length);
 
-    if (hdr.opcode >= HTCP_END)
-    {
-        debugs(31, 1, "htcpHandleData: client " << from << ", opcode " << hdr.opcode << " out of range");
+    if (hdr.opcode >= HTCP_END) {
+        debugs(31, 3, "htcpHandleData: client " << from << ", opcode " << hdr.opcode << " out of range");
         return;
     }
 
@@ -1332,9 +1418,8 @@ htcpHandleData(char *buf, int sz, IPAddress &from)
     debugs(31, 3, "htcpHandleData: RR = " << hdr.RR);
     debugs(31, 3, "htcpHandleData: msg_id = " << hdr.msg_id);
 
-    if (sz < hdr.length)
-    {
-        debugs(31, 1, "htcpHandleData: sz < hdr.length");
+    if (hsz < hdr.length) {
+        debugs(31, 3, "htcpHandleData: sz < hdr.length");
         return;
     }
 
@@ -1342,88 +1427,33 @@ htcpHandleData(char *buf, int sz, IPAddress &from)
      * set sz = hdr.length so we ignore any AUTH fields following
      * the DATA.
      */
-    sz = (int) hdr.length;
+    hsz = (int) hdr.length;
+    hbuf += sizeof(htcpDataHeader);
+    hsz -= sizeof(htcpDataHeader);
+    debugs(31, 3, "htcpHandleData: hsz = " << hsz);
 
-    buf += sizeof(htcpDataHeader);
-
-    sz -= sizeof(htcpDataHeader);
-
-    debugs(31, 3, "htcpHandleData: sz = " << sz);
-
-    htcpHexdump("htcpHandleData", buf, sz);
-
-    switch (hdr.opcode)
-    {
+    htcpHexdump("htcpHandleData", hbuf, hsz);
 
+    switch (hdr.opcode) {
     case HTCP_NOP:
-        htcpHandleNop(&hdr, buf, sz, from);
+        htcpHandleNop(&hdr, hbuf, hsz, from);
         break;
-
     case HTCP_TST:
-        htcpHandleTst(&hdr, buf, sz, from);
+        htcpHandleTst(&hdr, hbuf, hsz, from);
         break;
-
     case HTCP_MON:
-        htcpHandleMon(&hdr, buf, sz, from);
+        htcpHandleMon(&hdr, hbuf, hsz, from);
         break;
-
     case HTCP_SET:
-        htcpHandleSet(&hdr, buf, sz, from);
+        htcpHandleSet(&hdr, hbuf, hsz, from);
         break;
-
     case HTCP_CLR:
-        htcpHandleClr(&hdr, buf, sz, from);
+        htcpHandleClr(&hdr, hbuf, hsz, from);
+        htcpForwardClr(buf, sz);
         break;
-
     default:
-        return;
-    }
-}
-
-static void
-
-htcpHandle(char *buf, int sz, IPAddress &from)
-{
-    htcpHeader htcpHdr;
-    assert (sz >= 0);
-
-    if ((size_t)sz < sizeof(htcpHeader))
-    {
-        debugs(31, 1, "htcpHandle: msg size less than htcpHeader size");
-        return;
-    }
-
-    htcpHexdump("htcpHandle", buf, sz);
-    xmemcpy(&htcpHdr, buf, sizeof(htcpHeader));
-    htcpHdr.length = ntohs(htcpHdr.length);
-
-    if (htcpHdr.minor == 0)
-        old_squid_format = 1;
-    else
-        old_squid_format = 0;
-
-    debugs(31, 3, "htcpHandle: htcpHdr.length = " << htcpHdr.length);
-    debugs(31, 3, "htcpHandle: htcpHdr.major = " << htcpHdr.major);
-    debugs(31, 3, "htcpHandle: htcpHdr.minor = " << htcpHdr.minor);
-
-    if (sz != htcpHdr.length)
-    {
-        debugs(31, 1, "htcpHandle: sz/" << sz << " != htcpHdr.length/" <<
-               htcpHdr.length << " from " << from );
-
-        return;
-    }
-
-    if (htcpHdr.major != 0)
-    {
-        debugs(31, 1, "htcpHandle: Unknown major version " << htcpHdr.major << " from " << from );
-
-        return;
+        break;
     }
-
-    buf += sizeof(htcpHeader);
-    sz -= sizeof(htcpHeader);
-    htcpHandleData(buf, sz, from);
 }
 
 static void
@@ -1442,7 +1472,7 @@ htcpRecv(int fd, void *data)
     if (len)
         statCounter.htcp.pkts_recv++;
 
-    htcpHandle(buf, len, from);
+    htcpHandleMsg(buf, len, from);
 
     commSetSelect(fd, COMM_SELECT_READ, htcpRecv, NULL, 0);
 }
@@ -1456,19 +1486,18 @@ htcpRecv(int fd, void *data)
 void
 htcpInit(void)
 {
-    IPAddress sendOn;
-
     if (Config.Port.htcp <= 0) {
         debugs(31, 1, "HTCP Disabled.");
         return;
     }
-    sendOn = Config.Addrs.udp_outgoing;
-    sendOn.SetPort(Config.Port.htcp);
+
+    IPAddress incomingAddr = Config.Addrs.udp_incoming;
+    incomingAddr.SetPort(Config.Port.htcp);
 
     enter_suid();
     htcpInSocket = comm_open(SOCK_DGRAM,
                              IPPROTO_UDP,
-                             sendOn,
+                             incomingAddr,
                              COMM_NONBLOCKING,
                              "HTCP Socket");
     leave_suid();
@@ -1481,10 +1510,13 @@ htcpInit(void)
     debugs(31, 1, "Accepting HTCP messages on port " << Config.Port.htcp << ", FD " << htcpInSocket << ".");
 
     if (!Config.Addrs.udp_outgoing.IsNoAddr()) {
+        IPAddress outgoingAddr = Config.Addrs.udp_outgoing;
+        outgoingAddr.SetPort(Config.Port.htcp);
+
         enter_suid();
         htcpOutSocket = comm_open(SOCK_DGRAM,
                                   IPPROTO_UDP,
-                                  sendOn,
+                                  outgoingAddr,
                                   COMM_NONBLOCKING,
                                   "Outgoing HTCP Socket");
         leave_suid();
@@ -1523,51 +1555,31 @@ htcpQuery(StoreEntry * e, HttpRequest * req, peer * p)
         return;
 
     old_squid_format = p->options.htcp_oldsquid;
-
     memset(&flags, '\0', sizeof(flags));
-
     snprintf(vbuf, sizeof(vbuf), "%d/%d",
              req->http_ver.major, req->http_ver.minor);
-
     stuff.op = HTCP_TST;
-
     stuff.rr = RR_REQUEST;
-
     stuff.f1 = 1;
-
     stuff.response = 0;
-
     stuff.msg_id = ++msg_id_counter;
-
     stuff.S.method = (char *) RequestMethodStr(req->method);
-
     stuff.S.uri = (char *) e->url();
-
     stuff.S.version = vbuf;
-
     HttpStateData::httpBuildRequestHeader(req, req, e, &hdr, flags);
-
     mb.init();
-
     packerToMemInit(&pa, &mb);
-
     hdr.packInto(&pa);
-
     hdr.clean();
-
     packerClean(&pa);
-
     stuff.S.req_hdrs = mb.buf;
-
     pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff);
-
     mb.clean();
-
     if (!pktlen) {
-        debugs(31, 1, "htcpQuery: htcpBuildPacket() failed");
+        debugs(31, 3, "htcpQuery: htcpBuildPacket() failed");
         return;
     }
-
+    
     htcpSend(pkt, (int) pktlen, p->in_addr);
 
     queried_id[stuff.msg_id % N_QUERIED_KEYS] = stuff.msg_id;
@@ -1577,6 +1589,77 @@ htcpQuery(StoreEntry * e, HttpRequest * req, peer * p)
     debugs(31, 3, "htcpQuery: key (" << save_key << ") " << storeKeyText(save_key));
 }
 
+/*
+ * Send an HTCP CLR message for a specified item to a given peer.
+ */
+void
+htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, peer * p, htcp_clr_reason reason)
+{
+    static char pkt[8192];
+    ssize_t pktlen;
+    char vbuf[32];
+    htcpStuff stuff;
+    HttpHeader hdr(hoRequest);
+    Packer pa;
+    MemBuf mb;
+    http_state_flags flags;
+
+    if (htcpInSocket < 0)
+       return;
+
+    old_squid_format = p->options.htcp_oldsquid;
+    memset(&flags, '\0', sizeof(flags));
+    snprintf(vbuf, sizeof(vbuf), "%d/%d",
+       req->http_ver.major, req->http_ver.minor);
+    stuff.op = HTCP_CLR;
+    stuff.rr = RR_REQUEST;
+    stuff.f1 = 0;
+    stuff.response = 0;
+    stuff.msg_id = ++msg_id_counter;
+    switch (reason) {
+    case HTCP_CLR_INVALIDATION:
+       stuff.reason = 1;
+       break;
+    default:
+       stuff.reason = 0;
+       break;
+    }
+    stuff.S.method = (char *) RequestMethodStr(req->method);
+    if (e == NULL || e->mem_obj == NULL) {
+       if (uri == NULL) {
+            return;
+       }
+       stuff.S.uri = xstrdup(uri);
+    } else {
+       stuff.S.uri = (char *) e->url();
+    }
+    stuff.S.version = vbuf;
+    if (reason != HTCP_CLR_INVALIDATION) {
+        HttpStateData::httpBuildRequestHeader(req, req, e, &hdr, flags);
+        mb.init();
+        packerToMemInit(&pa, &mb);
+        hdr.packInto(&pa);
+        hdr.clean();
+        packerClean(&pa);
+       stuff.S.req_hdrs = mb.buf;
+    } else {
+        stuff.S.req_hdrs = NULL;
+    }
+    pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff);
+    if (reason != HTCP_CLR_INVALIDATION) {
+        mb.clean();
+    }
+    if (e == NULL) {
+       xfree(stuff.S.uri);
+    }
+    if (!pktlen) {
+       debugs(31, 3, "htcpClear: htcpBuildPacket() failed");
+       return;
+    }
+    
+    htcpSend(pkt, (int) pktlen, p->in_addr);
+}
+
 /*
  * htcpSocketShutdown only closes the 'in' socket if it is
  * different than the 'out' socket.
index 09dff47119ab049236f2e1d4aeb7fe029a6099eb..c0f02c0f9dce8c6513032389dfc04d9ec93acfab 100644 (file)
@@ -69,6 +69,9 @@ SQUIDCEXTERN void htcpInit(void);
 /// \ingroup ServerProtocolHTCP
 SQUIDCEXTERN void htcpQuery(StoreEntry * e, HttpRequest * req, peer * p);
 
+/// \ingroup ServerProtocolHTCP
+SQUIDCEXTERN void htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, peer * p, htcp_clr_reason reason);
+
 /// \ingroup ServerProtocolHTCP
 SQUIDCEXTERN void htcpSocketShutdown(void);
 
index 844f323b2d8114a6b3b544343165d0074b7c1b4c..0db0fd268d25afeec7c691745c98a37dcefe579d 100644 (file)
@@ -76,7 +76,7 @@ static void copyOneHeaderFromClientsideRequestToUpstreamRequest(const HttpHeader
         HttpHeader * hdr_out, int we_do_ranges, http_state_flags);
 
 HttpStateData::HttpStateData(FwdState *theFwdState) : AsyncJob("HttpStateData"), ServerStateData(theFwdState),
-        header_bytes_read(0), reply_bytes_read(0), httpChunkDecoder(NULL)
+        lastChunk(0), header_bytes_read(0), reply_bytes_read(0), httpChunkDecoder(NULL)
 {
     debugs(11,5,HERE << "HttpStateData " << this << " created");
     ignoreCacheControl = false;
@@ -274,6 +274,9 @@ httpMaybeRemovePublic(StoreEntry * e, http_status status)
 
     if (pe != NULL) {
         assert(e != pe);
+#if USE_HTCP
+        neighborsHtcpClear(e, NULL, e->mem_obj->request, e->mem_obj->method, HTCP_CLR_INVALIDATION);
+#endif
         pe->release();
     }
 
@@ -288,51 +291,11 @@ httpMaybeRemovePublic(StoreEntry * e, http_status status)
 
     if (pe != NULL) {
         assert(e != pe);
+#if USE_HTCP
+        neighborsHtcpClear(e, NULL, e->mem_obj->request, HttpRequestMethod(METHOD_HEAD), HTCP_CLR_INVALIDATION);
+#endif
         pe->release();
     }
-
-    if (forbidden)
-        return;
-
-    /// \todo AYJ: given the coment below + new behaviour of accepting METHOD_UNKNOWN, should we invert this test
-    ///                removing the object unless the method is nown to be safely kept?
-    switch (e->mem_obj->method.id()) {
-
-    case METHOD_PUT:
-
-    case METHOD_DELETE:
-
-    case METHOD_PROPPATCH:
-
-    case METHOD_MKCOL:
-
-    case METHOD_MOVE:
-
-    case METHOD_BMOVE:
-
-    case METHOD_BDELETE:
-        /** \par
-         * Remove any cached GET object if it is believed that the
-         * object may have changed as a result of other methods
-         */
-
-        if (e->mem_obj->request)
-            pe = storeGetPublicByRequestMethod(e->mem_obj->request, METHOD_GET);
-        else
-            pe = storeGetPublic(e->mem_obj->url, METHOD_GET);
-
-        if (pe != NULL) {
-            assert(e != pe);
-            pe->release();
-        }
-
-        break;
-
-    default:
-        /* Keep GCC happy. The methods above are all mutating HTTP methods
-         */
-        break;
-    }
 }
 
 void
@@ -774,6 +737,8 @@ HttpStateData::processReplyHeader()
 void
 HttpStateData::haveParsedReplyHeaders()
 {
+    ServerStateData::haveParsedReplyHeaders();
+
     Ctx ctx = ctx_enter(entry->mem_obj->url);
     HttpReply *rep = finalReply();
 
@@ -917,16 +882,16 @@ HttpStateData::persistentConnStatus() const
     if (!flags.headers_parsed)
         return INCOMPLETE_MSG;
 
+    if (eof) // already reached EOF
+        return COMPLETE_NONPERSISTENT_MSG;
+
     /* In chunked responce we do not know the content length but we are absolutelly 
      * sure about the end of response, so we are calling the statusIfComplete to
      * decide if we can be persistant 
      */
-    if (eof && flags.chunked)
+    if (lastChunk && flags.chunked)
        return statusIfComplete();
 
-    if (eof) // already reached EOF
-        return COMPLETE_NONPERSISTENT_MSG;
-
     const int64_t clen = vrep->bodySize(request->method);
 
     debugs(11, 5, "persistentConnStatus: clen=" << clen);
@@ -1157,8 +1122,8 @@ HttpStateData::decodeAndWriteReplyBody()
     data=decodedData.content();
     addVirginReplyBody(data, len);
     if (done) {
-       eof = 1;
-       flags.do_next_read = 0;
+        lastChunk = 1;
+        flags.do_next_read = 0;
     }
     SQUID_EXIT_THROWING_CODE(status);
     return status;
index db8fdf2753f15999db5d73279199883b2830d48c..59bc5d71d1aafe61359928db8178b62fc3cdd631 100644 (file)
@@ -64,6 +64,7 @@ public:
 
     peer *_peer;               /* peer request made to */
     int eof;                   /* reached end-of-object? */
+    int lastChunk;             /* reached last chunk of a chunk-encoded reply */
     HttpRequest *orig_request;
     int fd;
     http_state_flags flags;
index 9c534ff1aa0fed80a63293e28a00464d362bac02..2c5b592cbf3140c05059d2c4e696e8137e4bf526 100644 (file)
@@ -194,7 +194,7 @@ icpLogIcp(const IPAddress &caddr, log_type logcode, int len, const char *url, in
 
     al.cache.caddr = caddr;
 
-    al.cache.size = len;
+    al.cache.replySize = len;
 
     al.cache.code = logcode;
 
index d7acd6fab0b5938fb4bc00ef8cea9c9ed7bb1914..5e9b6836b98fea0feaace1b621439587bba8d216 100644 (file)
@@ -1,4 +1,3 @@
-
 /*
  * $Id: ident.cc,v 1.78 2007/12/14 23:11:47 amosjeffries Exp $
  *
@@ -34,6 +33,7 @@
  */
 
 #include "squid.h"
+#include "ident.h"
 #include "comm.h"
 #include "MemBuf.h"
 
diff --git a/src/ident.h b/src/ident.h
new file mode 100644 (file)
index 0000000..a00043e
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * $Id$
+ */
+#ifndef SQUID_IDENT_H
+#define SQUID_IDENT_H
+
+/*
+ \defgroup IdentAPI Ident Lookup API
+ \ingroup SquidComponents
+ *
+ */
+
+#include "config.h"
+
+#if USE_IDENT
+
+#include "cbdata.h"
+
+class IPAddress;
+
+/// \ingroup IdentAPI
+SQUIDCEXTERN void identStart(IPAddress &me, IPAddress &my_peer, IDCB * callback, void *cbdata);
+
+/// \ingroup IdentAPI
+SQUIDCEXTERN void identInit(void);
+
+#endif /* USE_IDENT */
+#endif /* SQUID_IDENT_H */
index d8498631343dceb8a03a259f44ec0c90f671f768..74be02a7ebc3f3379beec3e859a9ec429b86a98a 100644 (file)
@@ -142,7 +142,6 @@ static IDNSCB ipcacheHandleReply;
 #endif
 static IPH ipcacheHandleCnameRecurse;
 static int ipcacheExpiredEntry(ipcache_entry *);
-static int ipcache_testname(void);
 #if USE_DNSSERVERS
 static int ipcacheParse(ipcache_entry *, const char *buf);
 #else
@@ -168,24 +167,6 @@ static long ipcache_high = 200;
 extern int _dns_ttl_;
 #endif
 
-/// \ingroup IPCacheInternal
-static int
-ipcache_testname(void)
-{
-    wordlist *w = NULL;
-    debugs(14, 1, "Performing DNS Tests...");
-
-    if ((w = Config.dns_testname_list) == NULL)
-        return 1;
-
-    for (; w; w = w->next) {
-        if (gethostbyname(w->key) != NULL)
-            return 1;
-    }
-
-    return 0;
-}
-
 /**
  \ingroup IPCacheInternal
  *
@@ -700,6 +681,14 @@ ipcacheHandleReply(void *data, rfc1035_rr * answers, int na, const char *error_m
  \param handler                Pointer to the function to be called when the reply
  *                     from the IP cache (or the DNS if the IP cache misses)
  \param handlerData    Information that is passed to the handler and does not affect the IP cache.
+ *
+ * XXX: on hits and some errors, the handler is called immediately instead
+ * of scheduling an async call. This reentrant behavior means that the
+ * user job must be extra careful after calling ipcache_nbgethostbyname,
+ * especially if the handler destroys the job. Moreover, the job has 
+ * no way of knowing whether the reentrant call happened. commConnectStart
+ * protects the job by scheduling an async call, but some user code calls 
+ * ipcache_nbgethostbyname directly.
  */
 void
 ipcache_nbgethostbyname(const char *name, IPH * handler, void *handlerData)
@@ -770,6 +759,17 @@ ipcache_nbgethostbyname(const char *name, IPH * handler, void *handlerData)
 #endif
 }
 
+/// \ingroup IPCacheInternal
+static void
+ipcacheRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("ipcache",
+                       "IP Cache Stats and Contents",
+                       stat_ipcache_get, 0, 1);
+}
+
+
 /**
  \ingroup IPCacheAPI
  *
@@ -781,19 +781,9 @@ void
 ipcache_init(void)
 {
     int n;
-    debugs(14, 3, "Initializing IP Cache...");
+    debugs(14, DBG_IMPORTANT, "Initializing IP Cache...");
     memset(&IpcacheStats, '\0', sizeof(IpcacheStats));
     memset(&lru_list, '\0', sizeof(lru_list));
-    /* test naming lookup */
-
-    if (!opt_dns_tests) {
-        debugs(14, 4, "ipcache_init: Skipping DNS name lookup tests.");
-    } else if (!ipcache_testname()) {
-        fatal("ipcache_init: DNS name lookup tests failed.");
-    } else {
-        debugs(14, 1, "Successful DNS name lookup tests...");
-    }
-
     memset(&static_addrs, '\0', sizeof(ipcache_addrs));
 
     static_addrs.in_addrs = (IPAddress *)xcalloc(1, sizeof(IPAddress));
@@ -806,15 +796,8 @@ ipcache_init(void)
     n = hashPrime(ipcache_high / 4);
     ip_table = hash_create((HASHCMP *) strcmp, n, hash4);
     memDataInit(MEM_IPCACHE_ENTRY, "ipcache_entry", sizeof(ipcache_entry), 0);
-}
 
-/// \ingroup IPCacheAPI
-void
-ipcacheRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("ipcache",
-                           "IP Cache Stats and Contents",
-                           stat_ipcache_get, 0, 1);
+    ipcacheRegisterWithCacheManager();
 }
 
 /**
index 28693e0183e9aec16ac60a86e15e7752fb90a039..38e08fe333eea262e8f0cd2bd91ba036e30b2cab 100644 (file)
@@ -35,7 +35,6 @@
 #include "squid.h"
 #include "AccessLogEntry.h"
 #include "authenticate.h"
-#include "CacheManager.h"
 #include "ConfigParser.h"
 #include "errorpage.h"
 #include "event.h"
@@ -43,6 +42,7 @@
 #include "ExternalACL.h"
 #include "Store.h"
 #include "ICP.h"
+#include "ident.h"
 #include "HttpReply.h"
 #include "pconn.h"
 #include "Mem.h"
@@ -115,12 +115,14 @@ static volatile int do_shutdown = 0;
 static volatile int shutdown_status = 0;
 
 static void mainRotate(void);
-static void mainReconfigure(void);
+static void mainReconfigureStart(void);
+static void mainReconfigureFinish(void*);
 static void mainInitialize(void);
 static void usage(void);
 static void mainParseOptions(int argc, char *argv[]);
 static void sendSignal(void);
 static void serverConnectionsOpen(void);
+static void serverConnectionsClose(void);
 static void watch_child(char **);
 static void setEffectiveUser(void);
 #if MEM_GEN_TRACE
@@ -131,8 +133,6 @@ static void SquidShutdown(void);
 static void mainSetCwd(void);
 static int checkRunningPid(void);
 
-static CacheManager manager;
-
 #ifndef _SQUID_MSWIN_
 static const char *squid_start_script = "squid_start";
 #endif
@@ -178,7 +178,7 @@ SignalEngine::checkEvents(int timeout)
     PROF_start(SignalEngine_checkEvents);
 
     if (do_reconfigure) {
-        mainReconfigure();
+        mainReconfigureStart();
         do_reconfigure = 0;
     } else if (do_rotate) {
         mainRotate();
@@ -213,9 +213,9 @@ usage(void)
 {
     fprintf(stderr,
 #if USE_WIN32_SERVICE
-            "Usage: %s [-cdhirvzCDFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal] [-n name] [-O CommandLine]\n"
+            "Usage: %s [-cdhirvzCFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal] [-n name] [-O CommandLine]\n"
 #else
-            "Usage: %s [-cdhvzCDFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal]\n"
+            "Usage: %s [-cdhvzCFNRVYX] [-s | -l facility] [-f config-file] [-[au] port] [-k signal]\n"
 #endif
             "       -a port   Specify HTTP port number (default: %d).\n"
             "       -d level  Write debugging to stderr also.\n"
@@ -239,7 +239,7 @@ usage(void)
             "       -v        Print version.\n"
             "       -z        Create swap directories\n"
             "       -C        Do not catch fatal signals.\n"
-            "       -D        Disable initial DNS tests.\n"
+            "       -D        OBSOLETE. Scheduled for removal.\n"
             "       -F        Don't serve any requests until store is rebuilt.\n"
             "       -N        No daemon mode.\n"
 #if USE_WIN32_SERVICE
@@ -251,7 +251,7 @@ usage(void)
             "       -V        Virtual host httpd-accelerator.\n"
             "       -X        Force full debugging.\n"
             "       -Y        Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.\n",
-            appname, CACHE_HTTP_PORT, DefaultConfigFile, CACHE_ICP_PORT);
+            APP_SHORTNAME, CACHE_HTTP_PORT, DefaultConfigFile, CACHE_ICP_PORT);
     exit(1);
 }
 
@@ -285,8 +285,8 @@ mainParseOptions(int argc, char *argv[])
 
         case 'D':
             /** \par D
-             * Unset/disable global option for optional DNS tests. opt_dns_tests */
-            opt_dns_tests = 0;
+             * OBSOLETE: WAS: override to prevent optional startup DNS tests. */
+            debugs(1,DBG_CRITICAL, "WARNING: -D command-line option is obsolete.");
             break;
 
         case 'F':
@@ -629,13 +629,13 @@ serverConnectionsOpen(void)
     asnInit();
     ACL::Initialize();
     peerSelectInit();
-#if USE_CARP
 
     carpInit();
-#endif
+    peerUserHashInit();
+    peerSourceHashInit();
 }
 
-void
+static void
 serverConnectionsClose(void)
 {
     assert(shutting_down || reconfiguring);
@@ -664,11 +664,12 @@ serverConnectionsClose(void)
 }
 
 static void
-mainReconfigure(void)
+mainReconfigureStart(void)
 {
     debugs(1, 1, "Reconfiguring Squid Cache (version " << version_string << ")...");
     reconfiguring = 1;
-    /* Already called serverConnectionsClose and ipcacheShutdownServers() */
+
+    // Initiate asynchronous closing sequence
     serverConnectionsClose();
     icpConnectionClose();
 #if USE_HTCP
@@ -695,9 +696,18 @@ mainReconfigure(void)
     accessLogClose();
     useragentLogClose();
     refererCloseLog();
+
+    eventAdd("mainReconfigureFinish", &mainReconfigureFinish, NULL, 0, 1,
+        false);
+}
+
+static void
+mainReconfigureFinish(void *) {
+    debugs(1, 3, "finishing reconfiguring");
+
     errorClean();
     enter_suid();              /* root to read config file */
-    parseConfigFile(ConfigFile, manager);
+    parseConfigFile(ConfigFile);
     setUmask(Config.umask);
     Mem::Report();
     setEffectiveUser();
@@ -734,7 +744,6 @@ mainReconfigure(void)
     serverConnectionsOpen();
 
     neighbors_init();
-    neighborsRegisterWithCacheManager(manager);
 
     storeDirOpenSwapLogs();
 
@@ -970,78 +979,17 @@ mainInitialize(void)
 
         FwdState::initModule();
         /* register the modules in the cache manager menus */
-        accessLogRegisterWithCacheManager(manager);
-        asnRegisterWithCacheManager(manager);
-        authenticateRegisterWithCacheManager(&Config.authConfiguration, manager);
-#if USE_CARP
 
-        carpRegisterWithCacheManager(manager);
-#endif
-
-        cbdataRegisterWithCacheManager(manager);
+        cbdataRegisterWithCacheManager();
         /* These use separate calls so that the comm loops can eventually
          * coexist.
          */
-#ifdef USE_EPOLL
-
-        commEPollRegisterWithCacheManager(manager);
-#endif
-#ifdef USE_KQUEUE
-
-        commKQueueRegisterWithCacheManager(manager);
-#endif
-#ifdef USE_POLL
 
-        commPollRegisterWithCacheManager(manager);
-#endif
-#if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
-
-        commSelectRegisterWithCacheManager(manager);
-#endif
-
-        clientdbRegisterWithCacheManager(manager);
-#if DELAY_POOLS
-
-        DelayPools::RegisterWithCacheManager(manager);
-#endif
-
-        DiskIOModule::RegisterAllModulesWithCacheManager(manager);
-#if USE_DNSSERVERS
-
-        dnsRegisterWithCacheManager(manager);
-#endif
-
-        eventInit(manager);
-        externalAclRegisterWithCacheManager(manager);
-        fqdncacheRegisterWithCacheManager(manager);
-        FwdState::RegisterWithCacheManager(manager);
-        httpHeaderRegisterWithCacheManager(manager);
-#if !USE_DNSSERVERS
-
-        idnsRegisterWithCacheManager(manager);
-#endif
-
-        ipcacheRegisterWithCacheManager(manager);
-        Mem::RegisterWithCacheManager(manager);
-        netdbRegisterWitHCacheManager(manager);
-        PconnModule::GetInstance()->registerWithCacheManager(manager);
-        redirectRegisterWithCacheManager(manager);
-        refreshRegisterWithCacheManager(manager);
-        statRegisterWithCacheManager(manager);
-        storeDigestRegisterWithCacheManager(manager);
-        StoreFileSystem::RegisterAllFsWithCacheManager(manager);
-        storeRegisterWithCacheManager(manager);
-        storeLogRegisterWithCacheManager(manager);
-#if DEBUGSTRINGS
-
-        StringRegistry::Instance().registerWithCacheManager(manager);
-#endif
-
-#if    USE_XPROF_STATS
-
-        xprofRegisterWithCacheManager(manager);
-#endif
+        eventInit();
 
+       // TODO: pconn is a good candidate for new-style registration
+        // PconnModule::GetInstance()->registerWithCacheManager();
+       //   moved to PconnModule::PconnModule()
     }
 
 #if USE_WCCP
@@ -1058,7 +1006,7 @@ mainInitialize(void)
 
     neighbors_init();
 
-    neighborsRegisterWithCacheManager(manager);
+    // neighborsRegisterWithCacheManager(); //moved to neighbors_init()
 
     if (Config.chroot_dir)
         no_suid();
@@ -1135,8 +1083,6 @@ mainInitialize(void)
 #endif
 
         eventAdd("memPoolCleanIdlePools", Mem::CleanIdlePools, NULL, 15.0, 1);
-
-        eventAdd("commCheckHalfClosed", commCheckHalfClosed, NULL, 1.0, false);
     }
 
     configured_once = 1;
@@ -1287,7 +1233,7 @@ SquidMain(int argc, char **argv)
         /* we may want the parsing process to set this up in the future */
         Store::Root(new StoreController);
 
-        parse_err = parseConfigFile(ConfigFile, manager);
+        parse_err = parseConfigFile(ConfigFile);
 
         Mem::Report();
         
@@ -1437,7 +1383,7 @@ sendSignal(void)
         } else
 #ifdef _SQUID_MSWIN_
         {
-            fprintf(stderr, "%s: ERROR: Could not send ", appname);
+            fprintf(stderr, "%s: ERROR: Could not send ", APP_SHORTNAME);
             fprintf(stderr, "signal to Squid Service:\n");
             fprintf(stderr, "missing -n command line switch.\n");
             exit(1);
@@ -1451,13 +1397,13 @@ sendSignal(void)
         if (kill(pid, opt_send_signal) &&
                 /* ignore permissions if just running check */
                 !(opt_send_signal == 0 && errno == EPERM)) {
-            fprintf(stderr, "%s: ERROR: Could not send ", appname);
+            fprintf(stderr, "%s: ERROR: Could not send ", APP_SHORTNAME);
             fprintf(stderr, "signal %d to process %d: %s\n",
                     opt_send_signal, (int) pid, xstrerror());
             exit(1);
         }
     } else {
-        fprintf(stderr, "%s: ERROR: No running copy\n", appname);
+        fprintf(stderr, "%s: ERROR: No running copy\n", APP_SHORTNAME);
         exit(1);
     }
 
@@ -1558,7 +1504,7 @@ watch_child(char *argv[])
     if (*(argv[0]) == '(')
         return;
 
-    openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
+    openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
 
     if ((pid = fork()) < 0)
         syslog(LOG_ALERT, "fork failed: %s", xstrerror());
@@ -1602,7 +1548,7 @@ watch_child(char *argv[])
 
         if ((pid = fork()) == 0) {
             /* child */
-            openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
+            openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
             prog = xstrdup(argv[0]);
             argv[0] = xstrdup("(squid)");
             execvp(prog, argv);
@@ -1610,7 +1556,7 @@ watch_child(char *argv[])
         }
 
         /* parent */
-        openlog(appname, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
+        openlog(APP_SHORTNAME, LOG_PID | LOG_NDELAY | LOG_CONS, LOG_LOCAL4);
 
         syslog(LOG_NOTICE, "Squid Parent: child process %d started", pid);
 
@@ -1686,6 +1632,12 @@ watch_child(char *argv[])
 static void
 SquidShutdown()
 {
+    /* XXX: This function is called after the main loop has quit, which
+     * means that no AsyncCalls would be called, including close handlers.
+     * TODO: We need to close/shut/free everything that needs calls before
+     * exiting the loop.
+     */ 
+
 #if USE_WIN32_SERVICE
     WIN32_svcstatusupdate(SERVICE_STOP_PENDING, 10000);
 #endif
index 9f0bce2d3dea6eb3e9c3f7194c1aa806a65dfabb..21b748d2799ed02a965c9e3986888fb17fd1db6c 100644 (file)
@@ -428,6 +428,8 @@ Mem::Init(void)
         if (StrPools[i].pool->objectSize() != StrPoolsAttrs[i].obj_size)
             debugs(13, 1, "Notice: " << StrPoolsAttrs[i].name << " is " << StrPools[i].pool->objectSize() << " bytes instead of requested " << StrPoolsAttrs[i].obj_size << " bytes");
     }
+
+    RegisterWithCacheManager();
 }
 
 void
@@ -440,10 +442,9 @@ Mem::Report()
 }
 
 void
-Mem::RegisterWithCacheManager(CacheManager & manager)
+Mem::RegisterWithCacheManager(void)
 {
-    manager.registerAction("mem",
-                           "Memory Utilization",
+    CacheManager::GetInstance()->registerAction("mem", "Memory Utilization",
                            Mem::Stats, 0, 1);
 }
 
index 6fb4e7c07af0f2e7cfe32d89f7bfa4bfa7126ac8..c01498c8321d192f4f8608314c446bd8b9209f6c 100644 (file)
@@ -312,11 +312,16 @@ getRoundRobinParent(HttpRequest * request)
         if (!peerHTTPOkay(p, request))
             continue;
 
-        if (p->weight == 1) {
-            if (q && q->rr_count < p->rr_count)
-                continue;
-        } else if (p->weight == 0 || (q && q->rr_count < (p->rr_count / p->weight))) {
+        if (p->weight == 0)
             continue;
+
+        if (q) {
+            if (p->weight == q->weight) {
+                if (q->rr_count < p->rr_count)
+                    continue;
+            } else if ( (double) q->rr_count / q->weight < (double) p->rr_count / p->weight) {
+                continue;
+            }
         }
 
         q = p;
@@ -325,7 +330,7 @@ getRoundRobinParent(HttpRequest * request)
     if (q)
         q->rr_count++;
 
-    debugs(15, 3, "getRoundRobinParent: returning " << (q ? q->host : "NULL"));
+    debugs(15, 3, HERE << "returning " << (q ? q->host : "NULL"));
 
     return q;
 }
@@ -379,19 +384,67 @@ getWeightedRoundRobinParent(HttpRequest * request)
     return q;
 }
 
-/* This gets called every 5 minutes to clear the round-robin counter. */
+/**
+ * This gets called every 5 minutes to clear the round-robin counter.
+ * The exact timing is an arbitrary default, set on estimate timing of a
+ * large number of requests in a high-performance environment during the
+ * period. The larger the number of requests between cycled resets the
+ * more balanced the operations.
+ *
+ \param data   unused.
+ \todo Make the reset timing a selectable parameter in squid.conf
+ */
+static void 
+peerClearRRLoop(void *data)
+{
+    peerClearRR();
+    eventAdd("peerClearRR", peerClearRRLoop, data, 5 * 60.0, 0);
+}
+
+/**
+ * This gets called on startup and restart to kick off the peer round-robin
+ * maintenance event. It ensures that no matter how many times its called
+ * no more than one event is scheduled.
+ */
 void
-peerClearRR(void *data)
+peerClearRRStart(void)
 {
-    peer *p = (peer *)data;
-    p->rr_count -= p->rr_lastcount;
+    static int event_added = 0;
+    if (!event_added) {
+        peerClearRRLoop(NULL);
+    }
+}
 
-    if (p->rr_count < 0)
+/**
+ * Called whenever the round-robin counters need to be reset to a sane state.
+ * So far those times are:
+ \item On startup and reconfigure - to set the counters to sane initial settings.
+ \item When a peer has revived from dead, to prevent the revived peer being
+ *     flooded with requests which it has 'missed' during the down period.
+ */
+void
+peerClearRR()
+{
+    peer *p = NULL;
+    for (p = Config.peers; p; p = p->next) {
         p->rr_count = 0;
+    }
+}
 
-    p->rr_lastcount = p->rr_count;
+/**
+ * Perform all actions when a peer is detected revived.
+ */
+void
+peerAlive(peer *p)
+{
+    if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
+        debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
+        p->stats.logged_state = PEER_ALIVE;
+        peerClearRR();
+    }
 
-    eventAdd("peerClearRR", peerClearRR, p, 5 * 60.0, 0);
+    p->stats.last_reply = squid_curtime;
+    p->stats.probe_start = 0;
 }
 
 peer *
@@ -483,6 +536,21 @@ neighborRemove(peer * target)
     first_ping = Config.peers;
 }
 
+static void
+neighborsRegisterWithCacheManager()
+{
+    CacheManager *manager = CacheManager::GetInstance();
+    manager->registerAction("server_list",
+                           "Peer Cache Statistics",
+                           neighborDumpPeers, 0, 1);
+
+    if (theInIcpConnection >= 0) {
+        manager->registerAction("non_peers",
+                               "List of Unknown sites sending ICP messages",
+                               neighborDumpNonPeers, 0, 1);
+    }
+}
+
 void
 neighbors_init(void)
 {
@@ -494,6 +562,8 @@ neighbors_init(void)
     peer *next = NULL;
     int fd = theInIcpConnection;
 
+    neighborsRegisterWithCacheManager();
+
     /* setup addrinfo for use */
     nul.InitAddrInfo(AI);
 
@@ -544,28 +614,6 @@ neighbors_init(void)
     nul.FreeAddrInfo(AI);
 }
 
-void
-neighborsRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("server_list",
-                           "Peer Cache Statistics",
-                           neighborDumpPeers, 0, 1);
-
-    if (theInIcpConnection >= 0) {
-        manager.registerAction("non_peers",
-                               "List of Unknown sites sending ICP messages",
-                               neighborDumpNonPeers, 0, 1);
-    }
-
-    /* XXX FIXME: unregister if we were registered. Something like:
-     * else {
-     *   CacheManagerAction * action = manager.findAction("non_peers");
-     *   if (action != NULL)
-     *       manager.unregisterAction(action);
-     *  }
-     */
-}
-
 int
 neighborsUdpPing(HttpRequest * request,
                  StoreEntry * entry,
@@ -624,8 +672,7 @@ neighborsUdpPing(HttpRequest * request,
         debugs(15, 3, "neighborsUdpPing: reqnum = " << reqnum);
 
 #if USE_HTCP
-
-        if (p->options.htcp) {
+        if (p->options.htcp && !p->options.htcp_only_clr) {
             debugs(15, 3, "neighborsUdpPing: sending HTCP query");
             htcpQuery(entry, request, p);
         } else
@@ -857,13 +904,7 @@ peerNoteDigestLookup(HttpRequest * request, peer * p, lookup_t lookup)
 static void
 neighborAlive(peer * p, const MemObject * mem, const icp_common_t * header)
 {
-    if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
-        debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
-        p->stats.logged_state = PEER_ALIVE;
-    }
-
-    p->stats.last_reply = squid_curtime;
-    p->stats.probe_start = 0;
+    peerAlive(p);
     p->stats.pings_acked++;
 
     if ((icp_opcode) header->opcode <= ICP_END)
@@ -901,13 +942,7 @@ neighborUpdateRtt(peer * p, MemObject * mem)
 static void
 neighborAliveHtcp(peer * p, const MemObject * mem, const htcpReplyData * htcp)
 {
-    if (p->stats.logged_state == PEER_DEAD && p->tcp_up) {
-        debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
-        p->stats.logged_state = PEER_ALIVE;
-    }
-
-    p->stats.last_reply = squid_curtime;
-    p->stats.probe_start = 0;
+    peerAlive(p);
     p->stats.pings_acked++;
     p->htcp.counts[htcp->hit ? 1 : 0]++;
     p->htcp.version = htcp->version;
@@ -1317,19 +1352,30 @@ peerConnectSucceded(peer * p)
 {
     if (!p->tcp_up) {
         debugs(15, 2, "TCP connection to " << p->host << "/" << p->http_port << " succeded");
-        debugs(15, 1, "Detected REVIVED " << neighborTypeStr(p) << ": " << p->name);
-        p->stats.logged_state = PEER_ALIVE;
+        p->tcp_up = PEER_TCP_MAGIC_COUNT; // NP: so peerAlive(p) works properly.
+        peerAlive(p);
        if (!p->n_addresses)
            ipcache_nbgethostbyname(p->host, peerDNSConfigure, p);
     }
+    else
+        p->tcp_up = PEER_TCP_MAGIC_COUNT;
+}
 
-    p->tcp_up = PEER_TCP_MAGIC_COUNT;
+/// called by Comm when test_fd is closed while connect is in progress
+static void
+peerProbeClosed(int fd, void *data)
+{
+    peer *p = (peer*)data;
+    p->test_fd = -1;
+    // it is a failure because we failed to connect
+    peerConnectFailedSilent(p);
 }
 
 static void
 peerProbeConnectTimeout(int fd, void *data)
 {
     peer * p = (peer *)data;
+    comm_remove_close_handler(fd, &peerProbeClosed, p);
     comm_close(fd);
     p->test_fd = -1;
     peerConnectFailedSilent(p);
@@ -1359,6 +1405,7 @@ peerProbeConnect(peer * p)
     if (fd < 0)
         return ret;
 
+    comm_add_close_handler(fd, &peerProbeClosed, p);
     commSetTimeout(fd, ctimeout, peerProbeConnectTimeout, p);
 
     p->test_fd = fd;
@@ -1385,6 +1432,7 @@ peerProbeConnectDone(int fd, comm_err_t status, int xerrno, void *data)
         peerConnectFailedSilent(p);
     }
 
+    comm_remove_close_handler(fd, &peerProbeClosed, p);
     comm_close(fd);
     p->test_fd = -1;
     return;
@@ -1533,6 +1581,15 @@ dump_peer_options(StoreEntry * sentry, peer * p)
     if (p->options.roundrobin)
         storeAppendPrintf(sentry, " round-robin");
 
+    if (p->options.carp)
+        storeAppendPrintf(sentry, " carp");
+
+    if (p->options.userhash)
+        storeAppendPrintf(sentry, " userhash");
+
+    if (p->options.userhash)
+        storeAppendPrintf(sentry, " sourcehash");
+
     if (p->options.weighted_roundrobin)
         storeAppendPrintf(sentry, " weighted-round-robin");
 
@@ -1546,10 +1603,16 @@ dump_peer_options(StoreEntry * sentry, peer * p)
         storeAppendPrintf(sentry, " closest-only");
 
 #if USE_HTCP
-
     if (p->options.htcp)
         storeAppendPrintf(sentry, " htcp");
-
+       if (p->options.htcp_oldsquid)
+           storeAppendPrintf(sentry, " htcp-oldsquid");
+       if (p->options.htcp_no_clr)
+           storeAppendPrintf(sentry, " htcp-no-clr");
+       if (p->options.htcp_no_purge_clr)
+           storeAppendPrintf(sentry, " htcp-no-purge-clr");
+       if (p->options.htcp_only_clr)
+           storeAppendPrintf(sentry, " htcp-only-clr");
 #endif
 
     if (p->options.no_netdb_exchange)
@@ -1704,7 +1767,6 @@ dump_peers(StoreEntry * sentry, peer * peers)
 
 #if USE_HTCP
 void
-
 neighborsHtcpReply(const cache_key * key, htcpReplyData * htcp, const IPAddress &from)
 {
     StoreEntry *e = Store::Root().get(key);
@@ -1774,4 +1836,28 @@ neighborsHtcpReply(const cache_key * key, htcpReplyData * htcp, const IPAddress
     mem->ping_reply_callback(p, ntype, PROTO_HTCP, htcp, mem->ircb_data);
 }
 
+/*
+ * Send HTCP CLR messages to all peers configured to receive them.
+ */
+void
+neighborsHtcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestMethod &method, htcp_clr_reason reason)
+{
+    peer *p;
+    char buf[128];
+
+    for (p = Config.peers; p; p = p->next) {
+        if (!p->options.htcp) {
+            continue;
+        }
+        if (p->options.htcp_no_clr) {
+            continue;
+        }
+        if (p->options.htcp_no_purge_clr && reason == HTCP_CLR_PURGE) {
+            continue;
+        }
+        debugs(15, 3, "neighborsHtcpClear: sending CLR to " << p->in_addr.ToURL(buf, 128));
+        htcpClear(e, uri, req, method, p, reason);
+    }
+}
+
 #endif
index 434193d121104fa67a73c13cc3a8ec8d66ecb782..8fbedae2c114ce098fd5605546b81f7a371f720a 100644 (file)
@@ -884,8 +884,16 @@ netdbExchangeDone(void *data)
     cbdataFree(ex);
 }
 
+static void
+netdbRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("netdb", "Network Measurement Database", netdbDump, 0, 1);
+}
+
 #endif /* USE_ICMP */
 
+
 /* PUBLIC FUNCTIONS */
 
 void
@@ -894,6 +902,8 @@ netdbInit(void)
 #if USE_ICMP
     int n;
 
+    netdbRegisterWithCacheManager();
+
     if (addr_table)
         return;
 
@@ -912,17 +922,6 @@ netdbInit(void)
 #endif
 }
 
-void
-netdbRegisterWitHCacheManager(CacheManager & manager)
-{
-#if USE_ICMP
-    manager.registerAction("netdb",
-                           "Network Measurement Database",
-                           netdbDump, 0, 1);
-
-#endif
-}
-
 void
 netdbPingSite(const char *hostname)
 {
index 229657da8151bd353954f991f89a940b9b4ad9ea..c032d95927367388b10b8c0da32de6a8eba6bcb3 100644 (file)
@@ -328,6 +328,7 @@ PconnModule::PconnModule() : pools(NULL), poolCount(0)
     pools = (PconnPool **) xcalloc(MAX_NUM_PCONN_POOLS, sizeof(*pools));
     pconn_fds_pool = memPoolCreate("pconn_fds", PCONN_FDS_SZ * sizeof(int));
     debugs(48, 0, "persistent connection module initialized");
+    registerWithCacheManager();
 }
 
 PconnModule *
@@ -340,11 +341,12 @@ PconnModule::GetInstance()
 }
 
 void
-PconnModule::registerWithCacheManager(CacheManager & manager)
+PconnModule::registerWithCacheManager(void)
 {
-    manager.registerAction("pconn",
-                           "Persistent Connection Utilization Histograms",
-                           DumpWrapper, 0, 1);
+    CacheManager::GetInstance()->
+        registerAction("pconn",
+                       "Persistent Connection Utilization Histograms",
+                       DumpWrapper, 0, 1);
 }
 
 void
index 1991ef15628c6cc79827132c7b90d9fe502475ca..3253d88bb11655f8a7ecd46f4036f02186196b7a 100644 (file)
@@ -11,7 +11,6 @@
  \todo CLEANUP: Break multiple classes out of the generic pconn.h header
  */
 
-class CacheManager;
 class PconnPool;
 
 /* for CBDATA_CLASS2() macros */
@@ -90,7 +89,6 @@ private:
 };
 
 
-class CacheManager;
 class StoreEntry;
 class PconnPool;
 
@@ -107,7 +105,7 @@ public:
     static void DumpWrapper(StoreEntry *e);
 
     PconnModule();
-    void registerWithCacheManager(CacheManager & manager);
+    void registerWithCacheManager(void);
 
     void add(PconnPool *);
 
index cc9cc221422b4c540fcea335658095bfcbce602f..952f2341c93331b3906bec80356631cd72d2dcce 100644 (file)
@@ -63,10 +63,10 @@ const char *hier_strings[] =
         "CD_PARENT_HIT",
         "CD_SIBLING_HIT",
 #endif
-#if USE_CARP
         "CARP",
-#endif
         "ANY_PARENT",
+       "USERHASH",
+       "SOURCEHASH",
         "INVALID CODE"
     };
 
@@ -505,12 +505,12 @@ peerGetSomeParent(ps_state * ps)
 
     if ((p = getDefaultParent(request))) {
         code = DEFAULT_PARENT;
-#if USE_CARP
-
+    } else if ((p = peerUserHashSelectParent(request))) {
+        code = USERHASH_PARENT;
+    } else if ((p = peerSourceHashSelectParent(request))) {
+        code = SOURCEHASH_PARENT;
     } else if ((p = carpSelectParent(request))) {
         code = CARP;
-#endif
-
     } else if ((p = getRoundRobinParent(request))) {
         code = ROUNDROBIN_PARENT;
     } else if ((p = getWeightedRoundRobinParent(request))) {
diff --git a/src/peer_sourcehash.cc b/src/peer_sourcehash.cc
new file mode 100644 (file)
index 0000000..6dd8073
--- /dev/null
@@ -0,0 +1,234 @@
+
+/*
+ * $Id: carp.cc,v 1.27 2008/01/14 12:13:49 hno Exp $
+ *
+ * DEBUG: section 39    Peer source hash based selection
+ * AUTHOR: Henrik Nordstrom
+ * BASED ON: carp.cc
+ *
+ * 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.
+ *
+ */
+
+#include "squid.h"
+#include "CacheManager.h"
+#include "Store.h"
+#include "HttpRequest.h"
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+
+static int n_sourcehash_peers = 0;
+static peer **sourcehash_peers = NULL;
+static OBJH peerSourceHashCachemgr;
+static void peerSourceHashRegisterWithCacheManager(void);
+
+static int
+peerSortWeight(const void *a, const void *b)
+{
+    const peer *const *p1 = (const peer *const *)a;
+    const peer *const *p2 = (const peer *const *)b;
+    return (*p1)->weight - (*p2)->weight;
+}
+
+void
+peerSourceHashInit(void)
+{
+    int W = 0;
+    int K;
+    int k;
+    double P_last, X_last, Xn;
+    peer *p;
+    peer **P;
+    char *t;
+    /* Clean up */
+
+    for (k = 0; k < n_sourcehash_peers; k++) {
+        cbdataReferenceDone(sourcehash_peers[k]);
+    }
+
+    safe_free(sourcehash_peers);
+    n_sourcehash_peers = 0;
+    /* find out which peers we have */
+
+    for (p = Config.peers; p; p = p->next) {
+        if (!p->options.sourcehash)
+            continue;
+
+        assert(p->type == PEER_PARENT);
+
+        if (p->weight == 0)
+            continue;
+
+        n_sourcehash_peers++;
+
+        W += p->weight;
+    }
+
+    peerSourceHashRegisterWithCacheManager();
+
+    if (n_sourcehash_peers == 0)
+        return;
+
+    sourcehash_peers = (peer **)xcalloc(n_sourcehash_peers, sizeof(*sourcehash_peers));
+
+    /* Build a list of the found peers and calculate hashes and load factors */
+    for (P = sourcehash_peers, p = Config.peers; p; p = p->next) {
+        if (!p->options.sourcehash)
+            continue;
+
+        if (p->weight == 0)
+            continue;
+
+        /* calculate this peers hash */
+        p->sourcehash.hash = 0;
+
+        for (t = p->name; *t != 0; t++)
+            p->sourcehash.hash += ROTATE_LEFT(p->sourcehash.hash, 19) + (unsigned int) *t;
+
+        p->sourcehash.hash += p->sourcehash.hash * 0x62531965;
+
+        p->sourcehash.hash = ROTATE_LEFT(p->sourcehash.hash, 21);
+
+        /* and load factor */
+        p->sourcehash.load_factor = ((double) p->weight) / (double) W;
+
+        if (floor(p->sourcehash.load_factor * 1000.0) == 0.0)
+            p->sourcehash.load_factor = 0.0;
+
+        /* add it to our list of peers */
+        *P++ = cbdataReference(p);
+    }
+
+    /* Sort our list on weight */
+    qsort(sourcehash_peers, n_sourcehash_peers, sizeof(*sourcehash_peers), peerSortWeight);
+
+    /* Calculate the load factor multipliers X_k
+     *
+     * X_1 = pow ((K*p_1), (1/K))
+     * X_k = ([K-k+1] * [P_k - P_{k-1}])/(X_1 * X_2 * ... * X_{k-1})
+     * X_k += pow ((X_{k-1}, {K-k+1})
+     * X_k = pow (X_k, {1/(K-k+1)})
+     * simplified to have X_1 part of the loop
+     */
+    K = n_sourcehash_peers;
+
+    P_last = 0.0;              /* Empty P_0 */
+
+    Xn = 1.0;                  /* Empty starting point of X_1 * X_2 * ... * X_{x-1} */
+
+    X_last = 0.0;              /* Empty X_0, nullifies the first pow statement */
+
+    for (k = 1; k <= K; k++) {
+        double Kk1 = (double) (K - k + 1);
+        p = sourcehash_peers[k - 1];
+        p->sourcehash.load_multiplier = (Kk1 * (p->sourcehash.load_factor - P_last)) / Xn;
+        p->sourcehash.load_multiplier += pow(X_last, Kk1);
+        p->sourcehash.load_multiplier = pow(p->sourcehash.load_multiplier, 1.0 / Kk1);
+        Xn *= p->sourcehash.load_multiplier;
+        X_last = p->sourcehash.load_multiplier;
+        P_last = p->sourcehash.load_factor;
+    }
+}
+
+static void
+peerSourceHashRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("sourcehash", "peer sourcehash information", 
+                      peerSourceHashCachemgr, 0, 1);
+}
+
+peer *
+peerSourceHashSelectParent(HttpRequest * request)
+{
+    int k;
+    const char *c;
+    peer *p = NULL;
+    peer *tp;
+    unsigned int user_hash = 0;
+    unsigned int combined_hash;
+    double score;
+    double high_score = 0;
+    const char *key = NULL;
+    char ntoabuf[MAX_IPSTRLEN];
+
+    if (n_sourcehash_peers == 0)
+        return NULL;
+
+    key = request->client_addr.NtoA(ntoabuf, sizeof(ntoabuf));
+
+    /* calculate hash key */
+    debugs(39, 2, "peerSourceHashSelectParent: Calculating hash for " << key);
+
+    for (c = key; *c != 0; c++)
+        user_hash += ROTATE_LEFT(user_hash, 19) + *c;
+
+    /* select peer */
+    for (k = 0; k < n_sourcehash_peers; k++) {
+        tp = sourcehash_peers[k];
+        combined_hash = (user_hash ^ tp->sourcehash.hash);
+        combined_hash += combined_hash * 0x62531965;
+        combined_hash = ROTATE_LEFT(combined_hash, 21);
+        score = combined_hash * tp->sourcehash.load_multiplier;
+        debugs(39, 3, "peerSourceHashSelectParent: " << tp->name << " combined_hash " << combined_hash  << 
+               " score " << std::setprecision(0) << score);
+
+        if ((score > high_score) && peerHTTPOkay(tp, request)) {
+            p = tp;
+            high_score = score;
+        }
+    }
+
+    if (p)
+        debugs(39, 2, "peerSourceHashSelectParent: selected " << p->name);
+
+    return p;
+}
+
+static void
+peerSourceHashCachemgr(StoreEntry * sentry)
+{
+    peer *p;
+    int sumfetches = 0;
+    storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
+                      "Hostname",
+                      "Hash",
+                      "Multiplier",
+                      "Factor",
+                      "Actual");
+
+    for (p = Config.peers; p; p = p->next)
+        sumfetches += p->stats.fetches;
+
+    for (p = Config.peers; p; p = p->next) {
+        storeAppendPrintf(sentry, "%24s %10x %10f %10f %10f\n",
+                          p->name, p->sourcehash.hash,
+                          p->sourcehash.load_multiplier,
+                          p->sourcehash.load_factor,
+                          sumfetches ? (double) p->stats.fetches / sumfetches : -1.0);
+    }
+}
diff --git a/src/peer_userhash.cc b/src/peer_userhash.cc
new file mode 100644 (file)
index 0000000..e0baa41
--- /dev/null
@@ -0,0 +1,239 @@
+
+/*
+ * $Id: carp.cc,v 1.27 2008/01/14 12:13:49 hno Exp $
+ *
+ * DEBUG: section 39    Peer user hash based selection
+ * AUTHOR: Henrik Nordstrom
+ * BASED ON: carp.cc
+ *
+ * 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.
+ *
+ */
+
+#include "squid.h"
+#include "CacheManager.h"
+#include "Store.h"
+#include "HttpRequest.h"
+#include "AuthUserRequest.h"
+
+#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n))))
+
+static int n_userhash_peers = 0;
+static peer **userhash_peers = NULL;
+static OBJH peerUserHashCachemgr;
+static void peerUserHashRegisterWithCacheManager(void);
+
+static int
+peerSortWeight(const void *a, const void *b)
+{
+    const peer *const *p1 = (const peer *const *)a;
+    const peer *const *p2 = (const peer *const *)b;
+    return (*p1)->weight - (*p2)->weight;
+}
+
+void
+peerUserHashInit(void)
+{
+    int W = 0;
+    int K;
+    int k;
+    double P_last, X_last, Xn;
+    peer *p;
+    peer **P;
+    char *t;
+    /* Clean up */
+
+    for (k = 0; k < n_userhash_peers; k++) {
+        cbdataReferenceDone(userhash_peers[k]);
+    }
+
+    safe_free(userhash_peers);
+    n_userhash_peers = 0;
+    /* find out which peers we have */
+
+    
+    peerUserHashRegisterWithCacheManager();
+
+    for (p = Config.peers; p; p = p->next) {
+        if (!p->options.userhash)
+            continue;
+
+        assert(p->type == PEER_PARENT);
+
+        if (p->weight == 0)
+            continue;
+
+        n_userhash_peers++;
+
+        W += p->weight;
+    }
+
+    if (n_userhash_peers == 0)
+        return;
+
+    userhash_peers = (peer **)xcalloc(n_userhash_peers, sizeof(*userhash_peers));
+
+    /* Build a list of the found peers and calculate hashes and load factors */
+    for (P = userhash_peers, p = Config.peers; p; p = p->next) {
+        if (!p->options.userhash)
+            continue;
+
+        if (p->weight == 0)
+            continue;
+
+        /* calculate this peers hash */
+        p->userhash.hash = 0;
+
+        for (t = p->name; *t != 0; t++)
+            p->userhash.hash += ROTATE_LEFT(p->userhash.hash, 19) + (unsigned int) *t;
+
+        p->userhash.hash += p->userhash.hash * 0x62531965;
+
+        p->userhash.hash = ROTATE_LEFT(p->userhash.hash, 21);
+
+        /* and load factor */
+        p->userhash.load_factor = ((double) p->weight) / (double) W;
+
+        if (floor(p->userhash.load_factor * 1000.0) == 0.0)
+            p->userhash.load_factor = 0.0;
+
+        /* add it to our list of peers */
+        *P++ = cbdataReference(p);
+    }
+
+    /* Sort our list on weight */
+    qsort(userhash_peers, n_userhash_peers, sizeof(*userhash_peers), peerSortWeight);
+
+    /* Calculate the load factor multipliers X_k
+     *
+     * X_1 = pow ((K*p_1), (1/K))
+     * X_k = ([K-k+1] * [P_k - P_{k-1}])/(X_1 * X_2 * ... * X_{k-1})
+     * X_k += pow ((X_{k-1}, {K-k+1})
+     * X_k = pow (X_k, {1/(K-k+1)})
+     * simplified to have X_1 part of the loop
+     */
+    K = n_userhash_peers;
+
+    P_last = 0.0;              /* Empty P_0 */
+
+    Xn = 1.0;                  /* Empty starting point of X_1 * X_2 * ... * X_{x-1} */
+
+    X_last = 0.0;              /* Empty X_0, nullifies the first pow statement */
+
+    for (k = 1; k <= K; k++) {
+        double Kk1 = (double) (K - k + 1);
+        p = userhash_peers[k - 1];
+        p->userhash.load_multiplier = (Kk1 * (p->userhash.load_factor - P_last)) / Xn;
+        p->userhash.load_multiplier += pow(X_last, Kk1);
+        p->userhash.load_multiplier = pow(p->userhash.load_multiplier, 1.0 / Kk1);
+        Xn *= p->userhash.load_multiplier;
+        X_last = p->userhash.load_multiplier;
+        P_last = p->userhash.load_factor;
+    }
+}
+
+static void
+peerUserHashRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("userhash", "peer userhash information", peerUserHashCachemgr, 
+       0, 1);
+}
+
+peer *
+peerUserHashSelectParent(HttpRequest * request)
+{
+    int k;
+    const char *c;
+    peer *p = NULL;
+    peer *tp;
+    unsigned int user_hash = 0;
+    unsigned int combined_hash;
+    double score;
+    double high_score = 0;
+    const char *key = NULL;
+
+    if (n_userhash_peers == 0)
+        return NULL;
+
+    if (request->auth_user_request)
+       key = request->auth_user_request->username();
+
+    if (!key)
+       return NULL;
+
+    /* calculate hash key */
+    debugs(39, 2, "peerUserHashSelectParent: Calculating hash for " << key);
+
+    for (c = key; *c != 0; c++)
+        user_hash += ROTATE_LEFT(user_hash, 19) + *c;
+
+    /* select peer */
+    for (k = 0; k < n_userhash_peers; k++) {
+        tp = userhash_peers[k];
+        combined_hash = (user_hash ^ tp->userhash.hash);
+        combined_hash += combined_hash * 0x62531965;
+        combined_hash = ROTATE_LEFT(combined_hash, 21);
+        score = combined_hash * tp->userhash.load_multiplier;
+        debugs(39, 3, "peerUserHashSelectParent: " << tp->name << " combined_hash " << combined_hash  << 
+               " score " << std::setprecision(0) << score);
+
+        if ((score > high_score) && peerHTTPOkay(tp, request)) {
+            p = tp;
+            high_score = score;
+        }
+    }
+
+    if (p)
+        debugs(39, 2, "peerUserHashSelectParent: selected " << p->name);
+
+    return p;
+}
+
+static void
+peerUserHashCachemgr(StoreEntry * sentry)
+{
+    peer *p;
+    int sumfetches = 0;
+    storeAppendPrintf(sentry, "%24s %10s %10s %10s %10s\n",
+                      "Hostname",
+                      "Hash",
+                      "Multiplier",
+                      "Factor",
+                      "Actual");
+
+    for (p = Config.peers; p; p = p->next)
+        sumfetches += p->stats.fetches;
+
+    for (p = Config.peers; p; p = p->next) {
+        storeAppendPrintf(sentry, "%24s %10x %10f %10f %10f\n",
+                          p->name, p->userhash.hash,
+                          p->userhash.load_multiplier,
+                          p->userhash.load_factor,
+                          sumfetches ? (double) p->stats.fetches / sumfetches : -1.0);
+    }
+}
index 3dd74773197d68f7049771f8f56770a7b4a0cb7e..5aa9a7862226d8fa024e70651ef7989a6ac67c52 100644 (file)
@@ -74,7 +74,9 @@
 
 #ifdef _SQUID_MSWIN_
 
+#if HAVE_WINSOCK2_H
 #include <winsock2.h>
+#endif
 #include <process.h>
 #include "fde.h"
 
index 5b338ebd68ca28e93c336702667798139d66329c..2d38c82ee86f1f32158970069b3814a3db0a5ceb 100644 (file)
@@ -43,7 +43,6 @@
 /* some parameters stil need this */
 #include "wordlist.h"
 
-class CacheManager;
 class HttpRequestMethod;
 
 
@@ -83,7 +82,6 @@ SQUIDCEXTERN void parse_IPAddress_list_token(IPAddress_list **, char *);
 /* client_side.c - FD related client side routines */
 
 SQUIDCEXTERN void clientdbInit(void);
-extern void clientdbRegisterWithCacheManager(CacheManager & manager);
 
 SQUIDCEXTERN void clientdbUpdate(const IPAddress &, log_type, protocol_t, size_t);
 
@@ -135,13 +133,13 @@ SQUIDCEXTERN void disk_init(void);
 
 SQUIDCEXTERN void dnsShutdown(void);
 SQUIDCEXTERN void dnsInit(void);
-extern void dnsRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void dnsSubmit(const char *lookup, HLPCB * callback, void *data);
+/// XXX: a temporary hack to work around the missing DNS error info
+const char *dns_error_message_safe();
 
 /* dns_internal.c */
 SQUIDCEXTERN void idnsInit(void);
 SQUIDCEXTERN void idnsShutdown(void);
-extern void idnsRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void idnsALookup(const char *, IDNSCB *, void *);
 
 SQUIDCEXTERN void idnsPTRLookup(const IPAddress &, IDNSCB *, void *);
@@ -167,7 +165,6 @@ SQUIDCEXTERN void fqdncache_nbgethostbyaddr(IPAddress &, FQDNH *, void *);
 
 SQUIDCEXTERN const char *fqdncache_gethostbyaddr(IPAddress &, int flags);
 SQUIDCEXTERN void fqdncache_init(void);
-extern void fqdncacheRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void fqdnStats(StoreEntry *);
 SQUIDCEXTERN void fqdncacheReleaseInvalid(const char *);
 
@@ -342,7 +339,6 @@ SQUIDCEXTERN const ipcache_addrs *ipcache_gethostbyname(const char *, int flags)
 SQUIDCEXTERN void ipcacheInvalidate(const char *);
 SQUIDCEXTERN void ipcacheInvalidateNegative(const char *);
 SQUIDCEXTERN void ipcache_init(void);
-extern void ipcacheRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void stat_ipcache_get(StoreEntry *);
 SQUIDCEXTERN void ipcacheCycleAddr(const char *name, ipcache_addrs *);
 
@@ -391,13 +387,16 @@ SQUIDCEXTERN void neighborAddAcl(const char *, const char *);
 SQUIDCEXTERN void neighborsUdpAck(const cache_key *, icp_common_t *, const IPAddress &);
 SQUIDCEXTERN void neighborAdd(const char *, const char *, int, int, int, int, int);
 SQUIDCEXTERN void neighbors_init(void);
-extern void neighborsRegisterWithCacheManager(CacheManager & manager);
+#if USE_HTCP
+SQUIDCEXTERN void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason);
+#endif
 SQUIDCEXTERN peer *peerFindByName(const char *);
 SQUIDCEXTERN peer *peerFindByNameAndPort(const char *, unsigned short);
 SQUIDCEXTERN peer *getDefaultParent(HttpRequest * request);
 SQUIDCEXTERN peer *getRoundRobinParent(HttpRequest * request);
 SQUIDCEXTERN peer *getWeightedRoundRobinParent(HttpRequest * request);
-SQUIDCEXTERN void peerClearRR(void *);
+SQUIDCEXTERN void peerClearRRStart(void);
+SQUIDCEXTERN void peerClearRR(void);
 SQUIDCEXTERN peer *getAnyParent(HttpRequest * request);
 SQUIDCEXTERN lookup_t peerDigestLookup(peer * p, HttpRequest * request);
 SQUIDCEXTERN peer *neighborsDigestSelect(HttpRequest * request);
@@ -415,7 +414,6 @@ SQUIDCEXTERN int peerHTTPOkay(const peer *, HttpRequest *);
 SQUIDCEXTERN peer *whichPeer(const IPAddress &from);
 
 SQUIDCEXTERN void netdbInit(void);
-extern void netdbRegisterWitHCacheManager(CacheManager & manager);
 
 SQUIDCEXTERN void netdbHandlePingReply(const IPAddress &from, int hops, int rtt);
 SQUIDCEXTERN void netdbPingSite(const char *hostname);
@@ -453,7 +451,6 @@ unsigned long getOutgoingTOS(HttpRequest * request);
 SQUIDCEXTERN void urnStart(HttpRequest *, StoreEntry *);
 
 SQUIDCEXTERN void redirectInit(void);
-extern void redirectRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void redirectShutdown(void);
 
 extern void refreshAddToList(const char *, int, time_t, int, time_t);
@@ -464,10 +461,8 @@ extern int refreshCheckHTCP(const StoreEntry *, HttpRequest *);
 extern int refreshCheckDigest(const StoreEntry *, time_t delta);
 extern time_t getMaxAge(const char *url);
 extern void refreshInit(void);
-extern void refreshRegisterWithCacheManager(CacheManager & manager);
 extern const refresh_t *refreshLimits(const char *url);
 
-extern void serverConnectionsClose(void);
 extern void shut_down(int);
 extern void rotate_logs(int);
 extern void reconfigure(int);
@@ -476,16 +471,7 @@ extern void reconfigure(int);
 extern void start_announce(void *unused);
 extern void waisStart(FwdState *);
 
-/* ident.c */
-#if USE_IDENT
-
-SQUIDCEXTERN void identStart(IPAddress &me, IPAddress &my_peer,
-                             IDCB * callback, void *cbdata);
-SQUIDCEXTERN void identInit(void);
-#endif
-
 SQUIDCEXTERN void statInit(void);
-extern void statRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void statFreeMemory(void);
 SQUIDCEXTERN double median_svc_get(int, int);
 SQUIDCEXTERN void pconnHistCount(int, int);
@@ -546,7 +532,6 @@ SQUIDCEXTERN void storeLog(int tag, const StoreEntry * e);
 SQUIDCEXTERN void storeLogRotate(void);
 SQUIDCEXTERN void storeLogClose(void);
 SQUIDCEXTERN void storeLogOpen(void);
-SQUIDCEXTERN void storeLogRegisterWithCacheManager(CacheManager &);
 
 
 /*
@@ -571,7 +556,6 @@ SQUIDCEXTERN HASHCMP storeKeyHashCmp;
  * store_digest.c
  */
 SQUIDCEXTERN void storeDigestInit(void);
-extern void storeDigestRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN void storeDigestNoteStoreReady(void);
 SQUIDCEXTERN void storeDigestScheduleRebuild(void);
 SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry);
@@ -596,7 +580,8 @@ SQUIDCEXTERN void storeSwapInStart(store_client *);
  */
 SQUIDCEXTERN store_client *storeClientListAdd(StoreEntry * e, void *data);
 SQUIDCEXTERN int storeClientCopyPending(store_client *, StoreEntry * e, void *data);
-SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data);
+SQUIDCEXTERN int storeUnregister(store_client * sc, StoreEntry * e, void *data)
+;
 SQUIDCEXTERN int storePendingNClients(const StoreEntry * e);
 SQUIDCEXTERN int storeClientIsThisAClient(store_client * sc, void *someClient);
 
@@ -657,6 +642,8 @@ SQUIDCEXTERN protocol_t urlParseProtocol(const char *, const char *e = NULL);
 SQUIDCEXTERN void urlInitialize(void);
 SQUIDCEXTERN HttpRequest *urlParse(const HttpRequestMethod&, char *, HttpRequest *request = NULL);
 SQUIDCEXTERN const char *urlCanonical(HttpRequest *);
+SQUIDCEXTERN bool urlIsRelative(const char *);
+SQUIDCEXTERN char *urlMakeAbsolute(const HttpRequest *, const char *);
 SQUIDCEXTERN char *urlRInternal(const char *host, u_short port, const char *dir, const char *name);
 SQUIDCEXTERN char *urlInternal(const char *dir, const char *name);
 SQUIDCEXTERN int matchDomainName(const char *host, const char *domain);
@@ -736,12 +723,14 @@ SQUIDCEXTERN char *internalRemoteUri(const char *, u_short, const char *, const
 SQUIDCEXTERN const char *internalHostname(void);
 SQUIDCEXTERN int internalHostnameIs(const char *);
 
-#if USE_CARP
 SQUIDCEXTERN void carpInit(void);
-extern void carpRegisterWithCacheManager(CacheManager & manager);
 SQUIDCEXTERN peer *carpSelectParent(HttpRequest *);
-#endif
 
+SQUIDCEXTERN void peerUserHashInit(void);
+SQUIDCEXTERN peer * peerUserHashSelectParent(HttpRequest * request);
+
+SQUIDCEXTERN void peerSourceHashInit(void);
+SQUIDCEXTERN peer * peerSourceHashSelectParent(HttpRequest * request);
 
 #if USE_LEAKFINDER
 SQUIDCEXTERN void leakInit(void);
@@ -828,10 +817,16 @@ SQUIDCEXTERN void externalAclShutdown(void);
 SQUIDCEXTERN char *strtokFile(void);
 
 #if USE_WCCPv2
-SQUIDCEXTERN void parse_wccp2_service(void *v);
 
-SQUIDCEXTERN void free_wccp2_service(void *v);
+SQUIDCEXTERN void parse_wccp2_method(int *v);
+SQUIDCEXTERN void free_wccp2_method(int *v);
+SQUIDCEXTERN void dump_wccp2_method(StoreEntry * e, const char *label, int v);
+SQUIDCEXTERN void parse_wccp2_amethod(int *v);
+SQUIDCEXTERN void free_wccp2_amethod(int *v);
+SQUIDCEXTERN void dump_wccp2_amethod(StoreEntry * e, const char *label, int v);
 
+SQUIDCEXTERN void parse_wccp2_service(void *v);
+SQUIDCEXTERN void free_wccp2_service(void *v);
 SQUIDCEXTERN void dump_wccp2_service(StoreEntry * e, const char *label, void *v);
 
 SQUIDCEXTERN int check_null_wccp2_service(void *v);
index db8e6902d88c34d1cf0e65a0f134ef1d4ae85476..45c923c8cddf55a2b9fb75e6595d8939bf51aeba 100644 (file)
@@ -176,11 +176,20 @@ redirectStart(ClientHttpRequest * http, RH * handler, void *data)
     helperSubmit(redirectors, buf, redirectHandleReply, r);
 }
 
+static void
+redirectRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("redirector", "URL Redirector Stats", redirectStats, 0, 1);
+}
+
 void
 redirectInit(void)
 {
     static int init = 0;
 
+    redirectRegisterWithCacheManager();
+
     if (!Config.Program.redirect)
         return;
 
@@ -203,14 +212,6 @@ redirectInit(void)
     }
 }
 
-void
-redirectRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("redirector",
-                           "URL Redirector Stats",
-                           redirectStats, 0, 1);
-}
-
 void
 redirectShutdown(void)
 {
index 13fc7e1af3c4e28daa4688c9b8e6a5fa374ca1ba..e19b3da8e72b89db70f8d315d9364f67570eb19f 100644 (file)
@@ -574,6 +574,13 @@ refreshStats(StoreEntry * sentry)
         refreshCountsStats(sentry, &refreshCounts[i]);
 }
 
+static void
+refreshRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("refresh", "Refresh Algorithm Statistics", refreshStats, 0, 1);
+}
+
 void
 refreshInit(void)
 {
@@ -596,14 +603,6 @@ refreshInit(void)
     DefaultRefresh.min = REFRESH_DEFAULT_MIN;
     DefaultRefresh.pct = REFRESH_DEFAULT_PCT;
     DefaultRefresh.max = REFRESH_DEFAULT_MAX;
-}
 
-void
-refreshRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("refresh",
-                           "Refresh Algorithm Statistics",
-                           refreshStats,
-                           0,
-                           1);
+    refreshRegisterWithCacheManager();
 }
index 0710ce2b98b39aac82db25c1fcdd17eadf707306..ff7823cabff20914733674fccf40450a49f7b270 100644 (file)
@@ -22,7 +22,7 @@ check_PROGRAMS= testHeaders
 
 ## Special Universal .h dependency test script
 ## aborts if error encountered
-testHeaders: heap/*.h
+testHeaders: $(top_srcdir)/src/repl/heap/*.h
        $(SHELL) $(top_srcdir)/test-suite/testheaders.sh "$(CXXCOMPILE)" "heap" || exit 1
 ## ./ has no .h files.
 ## ./lru/ has no .h files.
index 2914fbf5a8e0609baa8b62ebd11f919c2e087847..4d94c3b29691747813b8620d1923ccbc6b80aa7f 100644 (file)
@@ -109,8 +109,8 @@ send_announce(const ipcache_addrs * ia, void *junk)
         }
     }
 
-    S.SetPort(port);
     S = ia->in_addrs[0];
+    S.SetPort(port);
     assert(theOutIcpConnection > 0);
     x = comm_udp_sendto(theOutIcpConnection, S, sndbuf, strlen(sndbuf) + 1);
 
index f0789b022039151ebf784e0f885d079c12843e0e..200b742a67fdf49752dd5aff4f9521b18753479e 100644 (file)
@@ -107,8 +107,8 @@ snmp_confFn(variable_list * Var, snint * ErrP)
     case CONF_VERSION:
         Answer = snmp_var_new(Var->name, Var->name_length);
         Answer->type = ASN_OCTET_STR;
-        Answer->val_len = strlen(appname);
-        Answer->val.string = (u_char *) xstrdup(appname);
+        Answer->val_len = strlen(APP_SHORTNAME);
+        Answer->val.string = (u_char *) xstrdup(APP_SHORTNAME);
         break;
 
     case CONF_VERSION_ID:
index 9eda90af066ea0dde7d5590e88baaf3759cc5aa7..1f35b75cd371735dd2ccd28e9d6cd301b153efa8 100644 (file)
@@ -196,13 +196,18 @@ using namespace Squid;
 
 /*
  * Filedescriptor limits in the different select loops
+ *
+ * NP: FreeBSD 7 defines FD_SETSIZE as unsigned but Squid needs
+ *     it to be signed to compare it with signed values.
+ *     Linux and others including FreeBSD <7, define it as signed.
+ *     If this causes any issues please contact squid-dev@squid-cache.org
  */
 #if defined(USE_SELECT) || defined(USE_SELECT_WIN32)
 /* Limited by design */
-# define SQUID_MAXFD_LIMIT FD_SETSIZE
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
 #elif defined(USE_POLL)
 /* Limited due to delay pools */
-# define SQUID_MAXFD_LIMIT FD_SETSIZE
+# define SQUID_MAXFD_LIMIT ((signed int)FD_SETSIZE)
 #elif defined(USE_KQUEUE) || defined(USE_EPOLL)
 # define SQUID_FDSET_NOUSE 1
 #else
@@ -315,7 +320,7 @@ SQUIDCEXTERN size_t getpagesize(void);
 #define SA_RESETHAND SA_ONESHOT
 #endif
 
-#if LEACK_CHECK_MODE
+#if LEAK_CHECK_MODE
 #define LOCAL_ARRAY(type,name,size) \
         static type *local_##name=NULL; \
         type *name = local_##name ? local_##name : \
@@ -425,6 +430,9 @@ max(A const & lhs, A const & rhs)
 #include "protos.h"
 #include "globals.h"
 
+/* Exclude CPPUnit tests from the below restriction. */
+/* BSD implementation uses these still */
+#if !defined(SQUID_UNIT_TEST)
 /*
  * Squid source files should not call these functions directly.
  * Use xmalloc, xfree, xcalloc, snprintf, and xstrdup instead.
@@ -435,7 +443,6 @@ max(A const & lhs, A const & rhs)
 #endif
 template <class V>
 void free(V x) { fatal("Do not use ::free()"); }
-
 #ifndef calloc
 #define calloc +
 #endif
@@ -445,6 +452,7 @@ void free(V x) { fatal("Do not use ::free()"); }
 #ifndef strdup
 #define strdup +
 #endif
+#endif /* !SQUID_UNIT_TEST */
 
 /*
  * Hey dummy, don't be tempted to move this to lib/config.h.in
index 8cdca74f73abf4543e41b31503bcf878edfc7ac2..1b0a0854870899b3a529326f33003edcb2603172 100644 (file)
@@ -477,8 +477,7 @@ info_get(StoreEntry * sentry)
     storeAppendPrintf(sentry, "Current Time:\t%s\n",
                       mkrfc1123(current_time.tv_sec));
 
-    storeAppendPrintf(sentry, "Connection information for %s:\n",
-                      appname);
+    storeAppendPrintf(sentry, "Connection information for %s:\n",APP_SHORTNAME);
 
     storeAppendPrintf(sentry, "\tNumber of clients accessing cache:\t%u\n",
                       statCounter.client_http.clients);
@@ -517,8 +516,7 @@ info_get(StoreEntry * sentry)
     storeAppendPrintf(sentry, "\tSelect loop called: %d times, %0.3f ms avg\n",
                       statCounter.select_loops, 1000.0 * runtime / statCounter.select_loops);
 
-    storeAppendPrintf(sentry, "Cache information for %s:\n",
-                      appname);
+    storeAppendPrintf(sentry, "Cache information for %s:\n",APP_SHORTNAME);
 
     storeAppendPrintf(sentry, "\tHits as %% of all requests:\t5min: %3.1f%%, 60min: %3.1f%%\n",
                       statRequestHitRatio(5),
@@ -591,7 +589,7 @@ info_get(StoreEntry * sentry)
 
     cputime = rusage_cputime(&rusage);
 
-    storeAppendPrintf(sentry, "Resource usage for %s:\n", appname);
+    storeAppendPrintf(sentry, "Resource usage for %s:\n", APP_SHORTNAME);
 
     storeAppendPrintf(sentry, "\tUP Time:\t%.3f seconds\n", runtime);
 
@@ -623,8 +621,7 @@ info_get(StoreEntry * sentry)
 
     ms = mstats();
 
-    storeAppendPrintf(sentry, "Memory usage for %s via mstats():\n",
-                      appname);
+    storeAppendPrintf(sentry, "Memory usage for %s via mstats():\n",APP_SHORTNAME);
 
     storeAppendPrintf(sentry, "\tTotal space in arena:  %6d KB\n",
                       ms.bytes_total >> 10);
@@ -636,8 +633,7 @@ info_get(StoreEntry * sentry)
 
     mp = mallinfo();
 
-    storeAppendPrintf(sentry, "Memory usage for %s via mallinfo():\n",
-                      appname);
+    storeAppendPrintf(sentry, "Memory usage for %s via mallinfo():\n",APP_SHORTNAME);
 
     storeAppendPrintf(sentry, "\tTotal space in arena:  %6ld KB\n",
                       (long)mp.arena >> 10);
@@ -725,7 +721,7 @@ info_get(StoreEntry * sentry)
                           mp_stats.TheMeter->gb_freed.count);
     }
 
-    storeAppendPrintf(sentry, "File descriptor usage for %s:\n", appname);
+    storeAppendPrintf(sentry, "File descriptor usage for %s:\n", APP_SHORTNAME);
     storeAppendPrintf(sentry, "\tMaximum number of file descriptors:   %4d\n",
                       Squid_MaxFD);
     storeAppendPrintf(sentry, "\tLargest file desc currently in use:   %4d\n",
@@ -1010,6 +1006,48 @@ statAvgDump(StoreEntry * sentry, int minutes, int hours)
     storeAppendPrintf(sentry, "cpu_usage = %f%%\n", dpercent(ct, dt));
 }
 
+static void
+statRegisterWithCacheManager(void)
+{
+    CacheManager *manager = CacheManager::GetInstance();
+    manager->registerAction("info", "General Runtime Information",
+                            info_get, 0, 1);
+    manager->registerAction("service_times", "Service Times (Percentiles)",
+                           service_times, 0, 1);
+    manager->registerAction("filedescriptors", "Process Filedescriptor Allocation",
+                           fde::DumpStats, 0, 1);
+    manager->registerAction("objects", "All Cache Objects", stat_objects_get, 0, 0);
+    manager->registerAction("vm_objects", "In-Memory and In-Transit Objects",
+                           stat_vmobjects_get, 0, 0);
+    manager->registerAction("io", "Server-side network read() size histograms",
+                           stat_io_get, 0, 1);
+    manager->registerAction("counters", "Traffic and Resource Counters",
+                           statCountersDump, 0, 1);
+    manager->registerAction("peer_select", "Peer Selection Algorithms",
+                           statPeerSelect, 0, 1);
+    manager->registerAction("digest_stats", "Cache Digest and ICP blob",
+                           statDigestBlob, 0, 1);
+    manager->registerAction("5min", "5 Minute Average of Counters",
+                           statAvg5min, 0, 1);
+    manager->registerAction("60min", "60 Minute Average of Counters",
+                           statAvg60min, 0, 1);
+    manager->registerAction("utilization", "Cache Utilization",
+                           statUtilization, 0, 1);
+    manager->registerAction("histograms", "Full Histogram Counts",
+                           statCountersHistograms, 0, 1);
+    manager->registerAction("active_requests",
+                           "Client-side Active Requests",
+                           statClientRequests, 0, 1);
+#if DEBUG_OPENFD
+    manager->registerAction("openfd_objects", "Objects with Swapout files open",
+                           statOpenfdObj, 0, 0);
+#endif
+#if STAT_GRAPHS
+    manager->registerAction("graph_variables", "Display cache metrics graphically",
+                           statGraphDump, 0, 1);
+#endif
+}
+
 
 void
 statInit(void)
@@ -1030,82 +1068,8 @@ statInit(void)
     ClientActiveRequests.head = NULL;
 
     ClientActiveRequests.tail = NULL;
-}
-
-void
-statRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("info",
-                           "General Runtime Information",
-                           info_get, 0, 1);
-
-    manager.registerAction("service_times",
-                           "Service Times (Percentiles)",
-                           service_times, 0, 1);
-
-    manager.registerAction("filedescriptors",
-                           "Process Filedescriptor Allocation",
-                           fde::DumpStats, 0, 1);
-
-    manager.registerAction("objects",
-                           "All Cache Objects",
-                           stat_objects_get, 0, 0);
 
-    manager.registerAction("vm_objects",
-                           "In-Memory and In-Transit Objects",
-                           stat_vmobjects_get, 0, 0);
-
-#if DEBUG_OPENFD
-
-    manager.registerAction("openfd_objects",
-                           "Objects with Swapout files open",
-                           statOpenfdObj, 0, 0);
-
-#endif
-
-    manager.registerAction("io",
-                           "Server-side network read() size histograms",
-                           stat_io_get, 0, 1);
-
-    manager.registerAction("counters",
-                           "Traffic and Resource Counters",
-                           statCountersDump, 0, 1);
-
-    manager.registerAction("peer_select",
-                           "Peer Selection Algorithms",
-                           statPeerSelect, 0, 1);
-
-    manager.registerAction("digest_stats",
-                           "Cache Digest and ICP blob",
-                           statDigestBlob, 0, 1);
-
-    manager.registerAction("5min",
-                           "5 Minute Average of Counters",
-                           statAvg5min, 0, 1);
-
-    manager.registerAction("60min",
-                           "60 Minute Average of Counters",
-                           statAvg60min, 0, 1);
-
-    manager.registerAction("utilization",
-                           "Cache Utilization",
-                           statUtilization, 0, 1);
-
-#if STAT_GRAPHS
-
-    manager.registerAction("graph_variables",
-                           "Display cache metrics graphically",
-                           statGraphDump, 0, 1);
-
-#endif
-
-    manager.registerAction("histograms",
-                           "Full Histogram Counts",
-                           statCountersHistograms, 0, 1);
-
-    manager.registerAction("active_requests",
-                           "Client-side Active Requests",
-                           statClientRequests, 0, 1);
+    statRegisterWithCacheManager();
 }
 
 static void
@@ -1710,7 +1674,7 @@ statClientRequests(StoreEntry * s)
 
 #if DELAY_POOLS
 
-        storeAppendPrintf(s, "delay_pool %d\n", DelayId::DelayClient(http) >> 16);
+        storeAppendPrintf(s, "delay_pool %d\n", DelayId::DelayClient(http).pool());
 
 #endif
 
index 72fcc92cd1dea4d6f861e1cb96a1a8c4613f8348..33a5aaea96fabb8f29f8b9e190007051d6e7e4e6 100644 (file)
@@ -1387,6 +1387,16 @@ StoreEntry::validLength() const
     return 0;
 }
 
+static void
+storeRegisterWithCacheManager(void)
+{
+    CacheManager *manager=CacheManager::GetInstance();
+    manager->registerAction("storedir", "Store Directory Stats", Store::Stats, 0, 1);
+    manager->registerAction("store_io", "Store IO Interface Stats", storeIOStats, 0, 1);
+    manager->registerAction("store_check_cachable_stats", "storeCheckCachable() Stats",
+                           storeCheckCachableStats, 0, 1);
+}
+
 void
 storeInit(void)
 {
@@ -1397,20 +1407,8 @@ storeInit(void)
     eventAdd("storeLateRelease", storeLateRelease, NULL, 1.0, 1);
     Store::Root().init();
     storeRebuildStart();
-}
 
-void
-storeRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("storedir",
-                           "Store Directory Stats",
-                           Store::Stats, 0, 1);
-    manager.registerAction("store_check_cachable_stats",
-                           "storeCheckCachable() Stats",
-                           storeCheckCachableStats, 0, 1);
-    manager.registerAction("store_io",
-                           "Store IO Interface Stats",
-                           storeIOStats, 0, 1);
+    storeRegisterWithCacheManager();
 }
 
 void
index 754ab77cba98df0b16afb2f285c3eca50063db85..ad10563c2ff515bc6222693dfdbe0c96c876dd9a 100644 (file)
@@ -101,6 +101,13 @@ static void storeDigestAdd(const StoreEntry *);
 
 #endif /* USE_CACHE_DIGESTS */
 
+static void
+storeDigestRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("store_digest", "Store Digest", storeDigestReport, 0, 1);
+}
+
 /*
  * PUBLIC FUNCTIONS
  */
@@ -108,6 +115,8 @@ static void storeDigestAdd(const StoreEntry *);
 void
 storeDigestInit(void)
 {
+    storeDigestRegisterWithCacheManager();
+
 #if USE_CACHE_DIGESTS
     const int cap = storeDigestCalcCap();
 
@@ -130,13 +139,6 @@ storeDigestInit(void)
 #endif
 }
 
-void
-storeDigestRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("store_digest", "Store Digest",
-                           storeDigestReport, 0, 1);
-}
-
 /* called when store_rebuild completes */
 void
 storeDigestNoteStoreReady(void)
index dfa95feeb0368c0a463c85eabfe1736c6d2d3300..8c0c484cb0a29ac857d5d570db7ba6c13d150b3d 100644 (file)
@@ -124,10 +124,20 @@ storeLogClose(void)
     storelog = NULL;
 }
 
+static void
+storeLogRegisterWithCacheManager(void)
+{
+    CacheManager::GetInstance()->
+        registerAction("store_log_tags", "Histogram of store.log tags",
+                       storeLogTagsHist, 0, 1);
+}
+
 void
 storeLogOpen(void)
 {
-    if (strcmp(Config.Log.store, "none") == 0) {
+    storeLogRegisterWithCacheManager();
+    if (Config.Log.store == NULL || strcmp(Config.Log.store, "none") == 0) {
         debugs(20, 1, "Store logging disabled");
         return;
     }
@@ -135,14 +145,6 @@ storeLogOpen(void)
     storelog = logfileOpen(Config.Log.store, 0, 1);
 }
 
-void
-storeLogRegisterWithCacheManager(CacheManager & manager)
-{
-    manager.registerAction("store_log_tags",
-       "Histogram of store.log tags",
-       storeLogTagsHist, 0, 1);
-}
-
 void
 storeLogTagsHist(StoreEntry *e)
 {
index bfb24f0f8a890b56ec095df214b4edd7c4b4c79b..f4eacb224d530dc89297a263457b117e8d7f0761 100644 (file)
@@ -371,7 +371,6 @@ struct SquidConfig
     size_t udpMaxHitObjsz;
     wordlist *hierarchy_stoplist;
     wordlist *mcast_group_list;
-    wordlist *dns_testname_list;
     wordlist *dns_nameservers;
     peer *peers;
     int npeers;
@@ -448,8 +447,8 @@ struct SquidConfig
         int ie_refresh;
         int vary_ignore_expire;
         int pipeline_prefetch;
-#if USE_SQUID_ESI
 
+#if USE_SQUID_ESI
         int surrogate_is_remote;
 #endif
 
@@ -465,10 +464,18 @@ struct SquidConfig
         int global_internal_static;
         int dns_require_A;
         int debug_override_X;
-#if USE_ZPH_QOS        
+
+#if FOLLOW_X_FORWARDED_FOR
+        int acl_uses_indirect_client;
+        int delay_pool_uses_indirect_client;
+        int log_uses_indirect_client;
+#endif /* FOLLOW_X_FORWARDED_FOR */
+
+#if USE_ZPH_QOS
         int zph_tos_parent;
         int zph_preserve_miss_tos;
-#endif        
+#endif
+        int WIN32_IpAddrChangeMonitor;
     } onoff;
 
     class ACL *aclList;
@@ -508,6 +515,9 @@ struct SquidConfig
 #if USE_SSL
         acl_access *ssl_bump;
 #endif
+#if FOLLOW_X_FORWARDED_FOR
+        acl_access *followXFF;
+#endif /* FOLLOW_X_FORWARDED_FOR */
 
     } accessList;
     acl_deny_info_list *denyInfoList;
@@ -538,6 +548,9 @@ struct SquidConfig
         int use_short_names;
     } icons;
     char *errorDirectory;
+#if USE_ERR_LOCALES
+    char *errorDefaultLanguage;
+#endif
 
     struct
     {
@@ -912,15 +925,19 @@ struct peer
 #if USE_HTCP
         unsigned int htcp:1;
         unsigned int htcp_oldsquid:1;
+        unsigned int htcp_no_clr:1;
+        unsigned int htcp_no_purge_clr:1;
+        unsigned int htcp_only_clr:1;
+        unsigned int htcp_forward_clr:1;
 #endif
         unsigned int no_netdb_exchange:1;
 #if DELAY_POOLS
         unsigned int no_delay:1;
 #endif
         unsigned int allow_miss:1;
-#if USE_CARP
         unsigned int carp:1;
-#endif
+        unsigned int userhash:1;
+        unsigned int sourcehash:1;
         unsigned int originserver:1;
     } options;
 
@@ -952,10 +969,8 @@ struct peer
     IPAddress addresses[10];
     int n_addresses;
     int rr_count;
-    int rr_lastcount;
     peer *next;
     int test_fd;
-#if USE_CARP
 
     struct
     {
@@ -963,7 +978,20 @@ struct peer
         double load_multiplier;
         double load_factor;    /* normalized weight value */
     } carp;
-#endif
+
+    struct
+    {
+        unsigned int hash;
+        double load_multiplier;
+        double load_factor;    /* normalized weight value */
+    } userhash;
+
+    struct
+    {
+        unsigned int hash;
+        double load_multiplier;
+        double load_factor;    /* normalized weight value */
+    } sourcehash;
 
     char *login;               /* Proxy authorization */
     time_t connect_timeout;
@@ -1045,6 +1073,9 @@ struct request_flags
 #if HTTP_VIOLATIONS
         nocache_hack = 0;
 #endif
+#if FOLLOW_X_FORWARDED_FOR
+    done_follow_x_forwarded_for = 0;
+#endif /* FOLLOW_X_FORWARDED_FOR */
     }
 
     unsigned int range:1;
@@ -1081,6 +1112,9 @@ struct request_flags
     // that are safe for a related (e.g., ICAP-adapted) request to inherit
     request_flags cloneAdaptationImmune() const;
 
+#if FOLLOW_X_FORWARDED_FOR
+    unsigned int done_follow_x_forwarded_for;
+#endif /* FOLLOW_X_FORWARDED_FOR */
 private:
 
     unsigned int reset_tcp:1;
diff --git a/src/tests/stub_cache_manager.cc b/src/tests/stub_cache_manager.cc
new file mode 100644 (file)
index 0000000..e9ec926
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * AUTHOR: Francesco Chemolli
+ *
+ * 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.
+ *
+ */
+
+#include "CacheManager.h"
+#include "squid.h"
+
+static CacheManager *cm=0;
+
+CacheManager::CacheManager()
+{
+}
+
+void
+CacheManager::registerAction(char const * action, char const * desc, OBJH * handler, int pw_req_flag, int atomic)
+{
+    return;
+}
+
+void
+CacheManager::registerAction(CacheManagerAction *anAction)
+{
+    return;
+}
+
+CacheManagerAction *
+CacheManager::findAction(char const * action)
+{
+    return 0;
+}
+
+void
+CacheManager::Start(int fd, HttpRequest * request, StoreEntry * entry)
+{
+    return;
+}
+
+CacheManager*
+CacheManager::GetInstance(void)
+{
+    if (!cm)
+        cm=new CacheManager();
+    return cm;
+}
+
index 0b50294a402f212913a4730dadfea47ee3b507c8..7ff1e6cbc9904466fb90f555f7c9ee49b7e43c09 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 #include <stdexcept>
 
index 195e54ce5e94ddd57bdc8411d21a1eb5dbae4243..28de16f94a85ff2aeeaecdfa1c50811cf2dd0bb6 100644 (file)
@@ -1,4 +1,4 @@
-#include "config.h"
+#define SQUID_UNIT_TEST 1
 
 #include "squid.h"
 #include "testAuth.h"
index ab7919d61d11d1f9e872e351db066e1df70de694..59559fe0f5bf531e13a63bf16d0d02370afb2e05 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 #include <stdexcept>
 
index a66a54f564c2157c40dc242393fafa7a6e95a9c4..035e587daad0089b0b9c45a8ca14d42af0469a17 100644 (file)
@@ -1,9 +1,12 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 #include <cppunit/TestAssert.h>
 
 #include "Mem.h"
 #include "testCacheManager.h"
 #include "CacheManager.h"
+#include "Store.h"
 
 
 CPPUNIT_TEST_SUITE_REGISTRATION( testCacheManager );
@@ -32,13 +35,15 @@ void testCacheManager::setUp()
 void
 testCacheManager::testCreate()
 {
-    CacheManager();
+    CacheManager::GetInstance(); //it's a singleton..
 }
 
 /* an action to register */
 static void
 dummy_action(StoreEntry * sentry)
-{}
+{
+    sentry->flags=1;
+}
 
 /*
  * registering an action makes it findable.
@@ -46,12 +51,17 @@ dummy_action(StoreEntry * sentry)
 void
 testCacheManager::testRegister()
 {
-    CacheManager manager;
-    manager.registerAction("sample", "my sample", &dummy_action, false, false);
-    CacheManagerAction *anAction = manager.findAction("sample");
-    CPPUNIT_ASSERT_EQUAL(String("sample"), String(anAction->action));
-    CPPUNIT_ASSERT_EQUAL(String("my sample"), String(anAction->desc));
-    CPPUNIT_ASSERT_EQUAL(&dummy_action, anAction->handler);
+    CacheManager *manager=CacheManager::GetInstance();
+
+    manager->registerAction("sample", "my sample", &dummy_action, false, false);
+    CacheManagerAction *anAction = manager->findAction("sample");
+
     CPPUNIT_ASSERT_EQUAL(0, (int)anAction->flags.pw_req);
     CPPUNIT_ASSERT_EQUAL(0, (int)anAction->flags.atomic);
+    CPPUNIT_ASSERT_EQUAL(String("sample"), String(anAction->action));
+
+    StoreEntry *sentry=new StoreEntry();
+    sentry->flags=0x25; //arbitrary test value
+    anAction->run(sentry);
+    CPPUNIT_ASSERT_EQUAL(1,(int)sentry->flags);
 }
index 1a8dd4deb6c7a3dd85a94391c63fd5d1fa3c63a6..f66985771649165bb986207a31c44b9b0ee55b9e 100644 (file)
@@ -56,7 +56,7 @@ testCoss::commonInit()
     /* garh garh */
     storeReplAdd("lru", createRemovalPolicy_lru);
 
-    visible_appname_string = xstrdup(PACKAGE "/" VERSION);
+    visible_appname_string = xstrdup(APP_FULLNAME);
 
     Mem::Init();
 
index 489768c8e1010d28516b3b32e91e18a58b357cda..7881fe148fceff75f38a122c27c6a70975336d3b 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1 
+
 #include "squid.h"
 #include <stdexcept>
 
index a24d47c091b6118deab49dcf72a2a182ff1d5e3b..bb0aea291bcca81a6f6c627f17aeb0fbe377c9cf 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1 
+
 #include "squid.h"
 #include <sstream>
 #include <cppunit/TestAssert.h>
index 5d223c637d0ce7d01ab958680ce2ec8dc0ba8d6f..749a0a37fb7fe6bdddbb3cd9ffb0255577b3480c 100644 (file)
@@ -1,5 +1,6 @@
-
+#define SQUID_UNIT_TEST 1
 #define SQUID_HELPER 1
+
 #include "squid.h"
 
 #include <cppunit/TestAssert.h>
index fcb2cc9bb8afeffcba061d2d8a5a1340c5c687e8..f2d04a3afd357af8d821268f70823659e7371e8a 100644 (file)
@@ -56,7 +56,7 @@ testNull::commonInit()
     /* garh garh */
     storeReplAdd("lru", createRemovalPolicy_lru);
 
-    visible_appname_string = xstrdup(PACKAGE "/" VERSION);
+    visible_appname_string = xstrdup(APP_FULLNAME);
 
     Mem::Init();
 
index 71d6781ccda053df1af5fd2846b6adfc2de15358..ad9dad48990e9ec389b32beb12b046f03b157b1a 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 #include "testStore.h"
 #include "Store.h"
index 76bd65ee3037641aa268f59f670df7357db25ab6..e5ebd6605329ee8b126a5ed6cffc185bd0bfa977 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 
 #include "testStoreController.h"
index b6a4f5f6e6326176e1f8b4242f9f6cbc2f152fa3..aac6034ab1a15878d991db34425ac8931ab181f6 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 #include "Mem.h"
 #include "testStore.h"
index 766483eaa7dbdf06cdf09c221cb96b7a0ff73982..44437a0cf3461f72cef0f85e5f7ef4023687d85d 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 
 #include "testStoreHashIndex.h"
index 1ec0d0133f743c2b182740d52b46a37a6156791c..391302cab3e19866a3746aeac40b8d1c2d066e3f 100644 (file)
@@ -1,3 +1,5 @@
+#define SQUID_UNIT_TEST 1
+
 #include "squid.h"
 #include <sstream>
 #include <cppunit/TestAssert.h>
index 1b8e7ed82df4bee09cc4826883fe10296cde3adf..f2cc309fbc6d0a400bae0fcf871c009144782fb5 100644 (file)
@@ -130,7 +130,7 @@ mail_warranty(void)
 
     char *filename;
 
-    if ((filename = tempnam(NULL, appname)) == NULL)
+    if ((filename = tempnam(NULL, APP_SHORTNAME)) == NULL)
         return;
 
     if ((fp = fopen(filename, "w")) == NULL)
@@ -141,7 +141,7 @@ mail_warranty(void)
     if (Config.EmailFrom)
         fprintf(fp, "From: %s\n", Config.EmailFrom);
     else
-        fprintf(fp, "From: %s@%s\n", appname, uniqueHostname());
+        fprintf(fp, "From: %s@%s\n", APP_SHORTNAME, uniqueHostname());
 
     fprintf(fp, "To: %s\n", Config.adminEmail);
 
@@ -151,7 +151,7 @@ mail_warranty(void)
 
     snprintf(command, 256, "%s %s < %s", Config.EmailProgram, Config.adminEmail, filename);
 
-    system(command);           /* XXX should avoid system(3) */
+    if(system(command)) {}             /* XXX should avoid system(3) */
 
     unlink(filename);
 }
@@ -177,7 +177,7 @@ dumpMallocStats(void)
 
     mp = mallinfo();
 
-    fprintf(debug_log, "Memory usage for %s via mallinfo():\n", appname);
+    fprintf(debug_log, "Memory usage for "APP_SHORTNAME" via mallinfo():\n");
 
     fprintf(debug_log, "\ttotal space in arena:  %6ld KB\n",
             (long)mp.arena >> 10);
@@ -653,8 +653,7 @@ getMyHostname(void)
             if(xgetaddrinfo(host, NULL, NULL, &AI) == 0) {
                 /* DNS lookup successful */
                 /* use the official name from DNS lookup */
-                debugs(50, 6, "getMyHostname: '" << host << "' resolved into '" << AI->ai_canonname << "'");
-                xstrncpy(host, AI->ai_canonname, SQUIDHOSTNAMELEN);
+                debugs(50, 6, "getMyHostname: '" << host << "' has rDNS.");
                 present = 1;
 
                 /* AYJ: do we want to flag AI_ALL and cache the result anywhere. ie as our local host IPs? */
@@ -667,7 +666,7 @@ getMyHostname(void)
             }
 
             if(AI) xfreeaddrinfo(AI);
-            debugs(50, 1, "WARNING: getaddrinfo('" << host << "') failed: " << xstrerror());
+            debugs(50, 1, "WARNING: '" << host << "' rDNS test failed: " << xstrerror());
         }
     }
 
@@ -851,7 +850,7 @@ readPidFile(void)
     int i;
 
     if (f == NULL || !strcmp(Config.pidFilename, "none")) {
-        fprintf(stderr, "%s: ERROR: No pid file name defined\n", appname);
+        fprintf(stderr, APP_SHORTNAME ": ERROR: No pid file name defined\n");
         exit(1);
     }
 
@@ -873,7 +872,7 @@ readPidFile(void)
         fclose(pid_fp);
     } else {
         if (errno != ENOENT) {
-            fprintf(stderr, "%s: ERROR: Could not read pid file\n", appname);
+            fprintf(stderr, APP_SHORTNAME ": ERROR: Could not read pid file\n");
             fprintf(stderr, "\t%s: %s\n", f, xstrerror());
             exit(1);
         }
index e619af8ef1790e703936a83154850b6fba9fa717..0722fa584b2d9ecfa3d2d0e0452869fe7040bf9d 100644 (file)
@@ -568,7 +568,7 @@ tunnelConnectDone(int fdnotused, comm_err_t status, int xerrno, void *data)
         debugs(26, 4, "tunnelConnect: Unknown host: " << tunnelState->host);
         err = errorCon(ERR_DNS_FAIL, HTTP_NOT_FOUND, request);
         *tunnelState->status_ptr = HTTP_NOT_FOUND;
-        err->dnsserver_msg = xstrdup(dns_error_message);
+        err->dnsserver_msg = xstrdup(dns_error_message_safe());
         err->callback = tunnelErrorComplete;
         err->callback_data = tunnelState;
         errorSend(tunnelState->client.fd(), err);
index 869ec4559b234b515a3e805b26e79c61ba3dea65..00eabb11786e90805fe399741e219774b59d4f4a 100644 (file)
@@ -357,7 +357,7 @@ urlParse(const HttpRequestMethod& method, char *url, HttpRequest *request)
 
     /* reject duplicate or leading dots */
     if (strstr(host, "..") || *host == '.') {
-        debug(23, 1) ("urlParse: Illegal hostname '%s'\n", host);
+        debugs(23, 1, "urlParse: Illegal hostname '" << host << "'");
         return NULL;
     }
 
@@ -532,6 +532,105 @@ urlCanonicalClean(const HttpRequest * request)
     return buf;
 }
 
+/*
+ * Test if a URL is relative.
+ *
+ * RFC 2396, Section 5 (Page 17) implies that in a relative URL, a '/' will
+ * appear before a ':'.
+ */
+bool
+urlIsRelative(const char *url)
+{
+    const char *p;
+
+    if (url == NULL) {
+        return (false);
+    }
+    if (*url == '\0') {
+        return (false);
+    }
+
+    for (p = url; *p != '\0' && *p != ':' && *p != '/'; p++);
+
+    if (*p == ':') {
+        return (false);
+    }
+    return (true);
+}
+
+/*
+ * Convert a relative URL to an absolute URL using the context of a given
+ * request.
+ *
+ * It is assumed that you have already ensured that the URL is relative.
+ *
+ * If NULL is returned it is an indication that the method in use in the
+ * request does not distinguish between relative and absolute and you should
+ * use the url unchanged.
+ *
+ * If non-NULL is returned, it is up to the caller to free the resulting
+ * memory using safe_free().
+ */
+char *
+urlMakeAbsolute(const HttpRequest * req, const char *relUrl)
+{
+
+    if (req->method.id() == METHOD_CONNECT) {
+        return (NULL);
+    }
+    
+    char *urlbuf = (char *)xmalloc(MAX_URL * sizeof(char));
+    
+    if (req->protocol == PROTO_URN) {
+        snprintf(urlbuf, MAX_URL, "urn:%s", req->urlpath.buf());
+        return (urlbuf);
+    }
+        
+    size_t urllen;
+
+    if (req->port != urlDefaultPort(req->protocol)) {
+        urllen = snprintf(urlbuf, MAX_URL, "%s://%s%s%s:%d",
+            ProtocolStr[req->protocol],
+            req->login,
+            *req->login ? "@" : null_string,
+            req->GetHost(),
+            req->port
+        );
+    } else {
+        urllen = snprintf(urlbuf, MAX_URL, "%s://%s%s%s",
+            ProtocolStr[req->protocol],
+            req->login,
+            *req->login ? "@" : null_string,
+            req->GetHost()
+        );
+    }
+
+    if (relUrl[0] == '/') {
+        strncpy(&urlbuf[urllen], relUrl, MAX_URL - urllen - 1);
+    } else {
+        const char *path = req->urlpath.buf();
+        const char *last_slash = strrchr(path, '/');
+
+        if (last_slash == NULL) {
+               urlbuf[urllen++] = '/';
+            strncpy(&urlbuf[urllen], relUrl, MAX_URL - urllen - 1);
+        } else {
+            last_slash++;
+            size_t pathlen = last_slash - path;
+            if (pathlen > MAX_URL - urllen - 1) {
+                pathlen = MAX_URL - urllen - 1;
+            }
+            strncpy(&urlbuf[urllen], path, pathlen);
+            urllen += pathlen;
+            if (urllen + 1 < MAX_URL) {
+                strncpy(&urlbuf[urllen], relUrl, MAX_URL - urllen - 1);
+            }
+        }
+    }
+
+    return (urlbuf);
+}
+
 /*
  * matchDomainName() compares a hostname with a domainname according
  * to the following rules:
index 23cde11c08ef94717f0781a8ed0ef4ce1c3d1a70..e03081030e36b3436407d04b18dee4bc27940f3a 100644 (file)
@@ -439,7 +439,7 @@ urnHandleReply(void *data, StoreIOBuffer result)
         "<ADDRESS>\n"
         "Generated by %s@%s\n"
         "</ADDRESS>\n",
-        full_appname_string, getMyHostname());
+        APP_FULLNAME, getMyHostname());
     rep = new HttpReply;
     rep->setHeaders(version, HTTP_MOVED_TEMPORARILY, NULL,
                     "text/html", mb->contentSize(), 0, squid_curtime);
index f64b426cfb0b54635b40be6e8e0608902f648ba2..f70e87d0af67b5ba66c9c41fb1bd722db041cabf 100644 (file)
@@ -42,7 +42,9 @@
 #include "IPAddress.h"
 
 #if USE_WCCPv2
+#if HAVE_NETDB_H
 #include <netdb.h>
+#endif
 
 #define WCCP_PORT 2048
 #define WCCP_RESPONSE_SIZE 12448
@@ -107,14 +109,17 @@ static EVH wccp2AssignBuckets;
 #define WCCP2_CAPABILITY_ASSIGNMENT_METHOD     0x02
 #define WCCP2_CAPABILITY_RETURN_METHOD         0x03
 
-#define WCCP2_FORWARDING_METHOD_GRE            0x00000001
-#define WCCP2_FORWARDING_METHOD_L2             0x00000002
+#define WCCP2_METHOD_GRE               0x00000001
+#define WCCP2_METHOD_L2                        0x00000002
+
+#define WCCP2_FORWARDING_METHOD_GRE    WCCP2_METHOD_GRE
+#define WCCP2_FORWARDING_METHOD_L2     WCCP2_METHOD_L2
 
-#define WCCP2_ASSIGNMENT_METHOD_HASH           0x00000001
-#define WCCP2_ASSIGNMENT_METHOD_MASK           0x00000002
+#define WCCP2_ASSIGNMENT_METHOD_HASH   0x00000001
+#define WCCP2_ASSIGNMENT_METHOD_MASK   0x00000002
 
-#define WCCP2_PACKET_RETURN_METHOD_GRE         0x00000001
-#define WCCP2_PACKET_RETURN_METHOD_L2          0x00000002
+#define WCCP2_PACKET_RETURN_METHOD_GRE WCCP2_METHOD_GRE
+#define WCCP2_PACKET_RETURN_METHOD_L2  WCCP2_METHOD_L2
 
 #define WCCP2_HASH_ASSIGNMENT          0x00
 #define WCCP2_MASK_ASSIGNMENT          0x01
@@ -1987,6 +1992,102 @@ wccp2AssignBuckets(void *voidnotused)
  * Configuration option parsing code
  */
 
+/**
+ * Parse wccp2_return_method and wccp2_forwarding_method options
+ * they can be '1' aka 'gre' or  '2' aka 'l2'
+ * repesenting the integer numeric of the same.
+ */
+void
+parse_wccp2_method(int *method)
+{
+    char *t;
+
+    /* Snarf the method */
+    if ((t = strtok(NULL, w_space)) == NULL) {
+        debugs(80, DBG_CRITICAL, "wccp2_*_method: missing setting.");
+        self_destruct();
+    }
+
+    /* update configuration if its valid */
+    if (strcmp(t, "gre") == 0 || strcmp(t, "1") == 0) {
+        *method = WCCP2_METHOD_GRE;
+    } else if (strcmp(t, "l2") == 0 || strcmp(t, "2") == 0) {
+        *method = WCCP2_METHOD_L2;
+    } else {
+        debugs(80, DBG_CRITICAL, "wccp2_*_method: unknown setting, got " << t );
+        self_destruct();
+    }
+}
+
+void
+dump_wccp2_method(StoreEntry * e, const char *label, int v)
+{
+    switch(v)
+    {
+    case WCCP2_METHOD_GRE:
+        storeAppendPrintf(e, "%s gre\n", label);
+        break;
+    case WCCP2_METHOD_L2:
+        storeAppendPrintf(e, "%s l2\n", label);
+        break;
+    default:
+        debugs(80, DBG_CRITICAL, "FATAL: WCCPv2 configured method (" << v << ") is not valid.");
+        self_destruct();
+    }
+}
+
+void
+free_wccp2_method(int *v)
+{ }
+
+/**
+ * Parse wccp2_assignment_method option
+ * they can be '1' aka 'hash' or  '2' aka 'mask'
+ * repesenting the integer numeric of the same.
+ */
+void
+parse_wccp2_amethod(int *method)
+{
+    char *t;
+
+    /* Snarf the method */
+    if ((t = strtok(NULL, w_space)) == NULL) {
+        debugs(80, DBG_CRITICAL, "wccp2_assignment_method: missing setting.");
+        self_destruct();
+    }
+
+    /* update configuration if its valid */
+    if (strcmp(t, "hash") == 0 || strcmp(t, "1") == 0) {
+        *method = WCCP2_ASSIGNMENT_METHOD_HASH;
+    } else if (strcmp(t, "mask") == 0 || strcmp(t, "2") == 0) {
+        *method = WCCP2_ASSIGNMENT_METHOD_MASK;
+    } else {
+        debugs(80, DBG_CRITICAL, "wccp2_assignment_method: unknown setting, got " << t );
+        self_destruct();
+    }
+}
+
+void
+dump_wccp2_amethod(StoreEntry * e, const char *label, int v)
+{
+    switch(v)
+    {
+    case WCCP2_ASSIGNMENT_METHOD_HASH:
+        storeAppendPrintf(e, "%s hash\n", label);
+        break;
+    case WCCP2_ASSIGNMENT_METHOD_MASK:
+        storeAppendPrintf(e, "%s mask\n", label);
+        break;
+    default:
+        debugs(80, DBG_CRITICAL, "FATAL: WCCPv2 configured " << label << " (" << v << ") is not valid.");
+        self_destruct();
+    }
+}
+
+void
+free_wccp2_amethod(int *v)
+{ }
+
 /*
  * Format:
  *
index 0703d92e1f35b44fb1aa9c99c28ba9aec4e2c480..309f811f31ef9adf1855ab285119d47101a3b5a9 100644 (file)
@@ -134,8 +134,10 @@ int WIN32_getrusage(int who, struct rusage *usage)
             FILETIME ftCreate, ftExit, ftKernel, ftUser;
 
             if (GetProcessTimes(hProcess, &ftCreate, &ftExit, &ftKernel, &ftUser)) {
-                int64_t tUser64 = (*(int64_t *)&ftUser / 10);
-                int64_t tKernel64 = (*(int64_t *)&ftKernel / 10);
+               int64_t *ptUser = (int64_t *)&ftUser;
+                int64_t tUser64 = *ptUser / 10;
+               int64_t *ptKernel = (int64_t *)&ftKernel;
+                int64_t tKernel64 = *ptKernel / 10;
                 usage->ru_utime.tv_sec =(long)(tUser64 / 1000000);
                 usage->ru_stime.tv_sec =(long)(tKernel64 / 1000000);
                 usage->ru_utime.tv_usec =(long)(tUser64 % 1000000);
diff --git a/test-builds.sh b/test-builds.sh
new file mode 100755 (executable)
index 0000000..7f06608
--- /dev/null
@@ -0,0 +1,25 @@
+#!/bin/sh
+#
+#  Run specific build tests for a given OS environment.
+#
+
+tmp="${1}"
+if test -e ./test-suite/buildtests/os-${tmp}.opts ; then
+       echo "TESTING: ${tmp}"
+       ./test-suite/buildtest.sh ./test-suite/buildtests/os-${tmp}
+fi
+
+#
+#  Run specific tests for each combination of configure-time
+#  Options.
+#
+#  These layers are constructed from detailed knowledge of
+#  component dependencies.
+#
+
+for f in `ls -1 ./test-suite/buildtests/layer*.opts` ; do
+       arg=`echo "${f}" | sed s/\\.opts//`
+       echo "TESTING: ${arg}"
+       ./test-suite/buildtest.sh "${arg}" ||
+       ( grep -E "^ERROR" buildtest_*.log && exit 1 )
+done
index 72163e295554bd33c58aebbe49a08a359d17ef8f..fb9ed20aab419a8fbef59c1e4e1b775333216c00 100644 (file)
@@ -75,7 +75,7 @@ MemPoolTest::run()
 }
 
 int
-main (int argc, char *argv)
+main (int argc, char **argv)
 {
     MemPoolTest aTest;
     aTest.run();
index 66c38b04c23383926beb0cc185cc9777368e6975..03f24fc258eeaa00a82f364627cd7c26dd342439 100644 (file)
@@ -38,7 +38,7 @@
 #include "Stack.h"
 
 int
-main (int argc, char *argv)
+main(int argc, char **argv)
 {
     Stack<int> aStack;
     assert (aStack.size() == 0);
index 6ab5bc37ff1ce705d9dfc5801e7e1265fec4d63c..85a7a0f727b6e9ce1411aec3234e6bfcef0845af 100644 (file)
@@ -114,7 +114,7 @@ ChildVirtual::operator delete(void *address)
 ChildVirtual::~ChildVirtual(){}
 
 int
-main (int argc, char *argv)
+main(int argc, char **argv)
 {
     assert (BaseVirtual::Calls.news() == 0);
     assert (BaseVirtual::Calls.deletes() == 0);
diff --git a/test-suite/buildtest.sh b/test-suite/buildtest.sh
new file mode 100755 (executable)
index 0000000..9440363
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+#
+# Configure and run a test build against any given set of configure options
+# or compile-time flags.
+#
+# Should be run from the source package root directory with paths relative to there.
+#
+
+dist="${1}"
+
+# Figure out where to log the test output
+log=`echo "${dist}" | sed s/..test-suite.buildtests.//g `
+
+# ... and send everything there...
+{
+
+if test -e ${dist%%.opts}.opts ; then
+       echo "BUILD: ${dist%%.opts}.opts"
+       . ./${dist%%.opts}.opts
+else
+       echo "BUILD: DEFAULT"
+       OPTS=""
+       FLAGS=""
+fi
+
+#
+# empty all the existing code, reconfigure and builds test code
+
+make -k distclean || echo "distclean done. errors are unwanted but okay here."
+
+#
+# above command currently encounters dependancy problems on cleanup.
+#
+rm -f -r src/fs/aufs/.deps src/fs/diskd/.deps &&
+       ./bootstrap.sh &&
+       ./configure --silent ${OPTS} 2>&1 &&
+       make check 2>&1 &&
+       make 2>&1
+
+} 2>&1 > ./buildtest_${log}.log
+
+# do not build any of the install's ...
diff --git a/test-suite/buildtests/layer-00-default.opts b/test-suite/buildtests/layer-00-default.opts
new file mode 100644 (file)
index 0000000..5f4d232
--- /dev/null
@@ -0,0 +1,5 @@
+#
+# Default configuration options.
+#  - Nothing special configured. Just whatever is found by "./configure"
+#
+OPTS=""
diff --git a/test-suite/buildtests/layer-01-minimal.opts b/test-suite/buildtests/layer-01-minimal.opts
new file mode 100644 (file)
index 0000000..70ed43c
--- /dev/null
@@ -0,0 +1,94 @@
+#
+# Minimal configuration options.
+# - Everthing that can be disabled is
+# - Everyhing that can be done without is 
+#
+# The options for this level can be easily generated semi-automatically from configure.in by:
+#      grep -E "^AC_ARG_ENABLE" ./configure.in | grep -o -E "[0-9a-z\-]+[,]" | grep -o -E "[^,]+" >disable.opts
+# followed by insertion of '   --disable-' and '\' strings
+#
+#      grep -E "^AC_ARG_WITH" ./configure.in | grep -o -E "[0-9a-z\-]+[,]" | grep -o -E "[^,]+" >without.opts
+# followed by insertion of '   --without-' and ' \' strings
+#
+# sometimes it's just too automatic.. Following options should be just stripped
+#
+#   --without-default-user \
+#   --without-aufs-threads \
+#   --without-coss-membuf-size \
+#   --without-filedescriptors \
+#   --without-cppunit-basedir \
+#   --without-build-environment \
+#
+#
+OPTS=" \
+       --disable-loadable-modules \
+       --disable-gnuregex \
+       --disable-optimizations \
+       --disable-inline \
+       --disable-debug-cbdata \
+       --disable-xmalloc-statistics \
+       --disable-async-io \
+       --disable-storeio \
+       --disable-disk-io \
+       --disable-removal-policies \
+       --disable-icmp \
+       --disable-delay-pools \
+       --disable-esi \
+       --disable-icap-client \
+       --disable-ecap \
+       --disable-useragent-log \
+       --disable-referer-log \
+       --disable-wccp \
+       --disable-wccpv2 \
+       --disable-kill-parent-hack \
+       --disable-snmp \
+       --disable-cachemgr-hostname \
+       --disable-arp-acl \
+       --disable-htcp \
+       --disable-ssl \
+       --disable-forw-via-db \
+       --disable-cache-digests \
+       --disable-poll \
+       --disable-select \
+       --disable-kqueue \
+       --disable-epoll \
+       --disable-http-violations \
+       --disable-ipfw-transparent \
+       --disable-ipf-transparent \
+       --disable-pf-transparent \
+       --disable-linux-netfilter \
+       --disable-linux-tproxy \
+       --disable-leakfinder \
+       --disable-follow-x-forwarded-for \
+       --disable-ident-lookups \
+       --disable-internal-dns \
+       --disable-default-hostsfile \
+       --disable-auth \
+       --disable-basic-auth-helpers \
+       --disable-ntlm-auth-helpers \
+       --disable-negotiate-auth-helpers \
+       --disable-digest-auth-helpers \
+       --disable-ntlm-fail-open \
+       --disable-external-acl-helpers \
+       --disable-mempools \
+       --disable-win32-service \
+       --disable-unlinkd \
+       --disable-stacktraces \
+       --disable-cpu-profiling \
+       --disable-vary \
+       --disable-ipv6 \
+       --disable-zph-qos \
+       --disable-auto-locale \
+ \
+       --without-pthreads \
+       --without-aio \
+       --without-dl \
+       --without-openssl \
+       --without-large-files \
+       --without-valgrind-debug \
+       --without-ipv6-split-stack \
+       --without-ipv4-mapped \
+       --without-localhost-ipv6 \
+       --without-dns-cname \
+       --without-po2html \
+       "
diff --git a/test-suite/buildtests/os-debian.opts b/test-suite/buildtests/os-debian.opts
new file mode 100644 (file)
index 0000000..a5280ac
--- /dev/null
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+# Configure options currently used by Debian Packaged Release
+#
+# This is to test any release build against what the package maintainers are seeing
+#
+OPTS=" \
+       --build=i486-linux-gnu \
+       --prefix=/usr \
+       --includedir="\${prefix}/include" \
+       --mandir="\${prefix}/share/man" \
+       --infodir="\${prefix}/share/info" \
+       --sysconfdir=/etc \
+       --localstatedir=/var \
+       --libexecdir="\${prefix}/lib/squid3" \
+       --disable-maintainer-mode \
+       --disable-dependency-tracking \
+       --srcdir=. \
+       --datadir=/usr/share/squid3 \
+       --sysconfdir=/etc/squid3 \
+       --mandir=/usr/share/man \
+       --with-cppunit-basedir=/usr \
+       --enable-inline \
+       --enable-async-io=8 \
+       --enable-storeio="ufs,aufs,coss,diskd,null" \
+       --enable-removal-policies="lru,heap" \
+       --enable-poll \
+       --enable-delay-pools \
+       --enable-cache-digests \
+       --enable-snmp \
+       --enable-htcp \
+       --enable-select \
+       --enable-carp \
+       --with-large-files \
+       --enable-underscores \
+       --enable-icap-client \
+       --enable-auth="basic,digest,ntlm" \
+       --enable-basic-auth-helpers="LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,getpwnam,multi-domain-NTLM" \
+       --enable-ntlm-auth-helpers="SMB" \
+       --enable-digest-auth-helpers="ldap,password" \
+       --enable-external-acl-helpers="ip_user,ldap_group,session,unix_group,wbinfo_group" \
+       --with-filedescriptors=65536 \
+       --with-default-user=proxy \
+       --enable-epoll \
+       --enable-linux-netfilter \
+"
+
+# Debian for some reason builds using explicit 'cc' instead of 'gcc' or automatic
+export build_alias="i486-linux-gnu"
+export CC="cc"
+export CFLAGS="-g -O2 -g -Wall -O2"
+export LDFLAGS=""
+export CPPFLAGS=""
+export CXX="g++"
+export CXXFLAGS="-g -O2 -g -Wall -O2"
+export FFLAGS="-g -O2"
diff --git a/test-suite/buildtests/os-ubuntu.opts b/test-suite/buildtests/os-ubuntu.opts
new file mode 100644 (file)
index 0000000..ab6d839
--- /dev/null
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# Configure options currently used by Ubuntu Packaged Release
+#
+# This is to test any release build against what the package maintainers are seeing
+#
+OPTS=" \
+       --build=i486-linux-gnu \
+       --prefix=/usr \
+       --includedir="\${prefix}/include" \
+       --mandir="\${prefix}/share/man" \
+       --infodir="\${prefix}/share/info" \
+       --sysconfdir=/etc \
+       --localstatedir=/var \
+       --libexecdir="\${prefix}/lib/squid3" \
+       --disable-maintainer-mode \
+       --disable-dependency-tracking \
+       --srcdir=. \
+       --datadir=/usr/share/squid3 \
+       --sysconfdir=/etc/squid3 \
+       --mandir=/usr/share/man \
+       --with-cppunit-basedir=/usr \
+       --enable-inline \
+       --enable-async-io=8 \
+       --enable-storeio="ufs,aufs,coss,diskd,null" \
+       --enable-removal-policies="lru,heap" \
+       --enable-poll \
+       --enable-delay-pools \
+       --enable-cache-digests \
+       --enable-snmp \
+       --enable-htcp \
+       --enable-select \
+       --enable-carp \
+       --with-large-files \
+       --enable-underscores \
+       --enable-icap-client \
+       --enable-auth="basic,digest,ntlm" \
+       --enable-basic-auth-helpers="LDAP,MSNT,NCSA,PAM,SASL,SMB,YP,getpwnam,multi-domain-NTLM" \
+       --enable-ntlm-auth-helpers="SMB" \
+       --enable-digest-auth-helpers="ldap,password" \
+       --enable-external-acl-helpers="ip_user,ldap_group,session,unix_group,wbinfo_group" \
+       --with-filedescriptors=65536 \
+       --with-default-user=proxy \
+       --enable-epoll \
+       --enable-linux-netfilter \
+"
+
+# Ubuntu for some reason built using 'cc' instead of gcc
+export CC="/usr/bin/cc"
+export CXX="g++"
+export CFLAGS="-g -O2 -g -Wall -O2"
+export CXXFLAGS="-g -O2 -g -Wall -O2"
+export CPPFLAGS=""
+export LDFLAGS="-Wl,-Bsymbolic-functions"
index fbaf4ba4ec712ce13dcafe6d740c1aabd23f6feb..832c24c13eee5ce647ad9bc73b8df702ed9bf8a9 100644 (file)
@@ -71,7 +71,7 @@ StreamTest::getACString() const
 }
 
 int
-main (int argc, char *argv)
+main(int argc, char **argv)
 {
     Debug::Levels[1] = 8;
     debugs (1,1,"test" << "string");
index 406afb38eaff0ac68f57a029d08a416dbfa5b3f2..d742ba8de95916f067a38d8c045e865dd28856a8 100644 (file)
@@ -116,7 +116,7 @@ testHdrVisit()
 }
 
 int
-main (int argc, char *argv)
+main(int argc, char **argv)
 {
     assert (mem_node::InUseCount() == 0);
     testLowAndHigh();
index 96bb79ae6a59b456a0584930f1dbadcac32c6981..d5daf728d5568962662ea73bcd5c7fbb8282d1d3 100644 (file)
@@ -46,7 +46,7 @@ xassert(const char *msg, const char *file, int line)
 }
 
 int
-main (int argc, char *argv)
+main(int argc, char **argv)
 {
     mem_node *aNode = new mem_node(0);
     assert (aNode);
index 332df3d7d409f77a243ae78eff97e48477df55e7..4ce31630bc76f1534b54252d19cfe29b1659547b 100644 (file)
@@ -171,7 +171,7 @@ CheckSyntheticWorks()
 }
 
 int
-main (int argc, char *argv)
+main(int argc, char **argv)
 {
     CheckHasExplicitWorks();
     CheckSyntheticWorks();
index 5d2df781df71355ca76d3233ddcb6955de5fe7a7..381fc79c0dcbcab7a75cdb8d5ffc2c6fb8286f65 100644 (file)
@@ -31,6 +31,8 @@ bin_PROGRAMS = \
 libexec_PROGRAMS = \
        cachemgr$(CGIEXT)
 
+DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
+
 squidclient_SOURCES = squidclient.cc
 cachemgr__CGIEXT__SOURCES = cachemgr.cc
 cachemgr__CGIEXT__CXXFLAGS = -DDEFAULT_CACHEMGR_CONFIG=\"$(DEFAULT_CACHEMGR_CONFIG)\" $(AM_CXXFLAGS)
@@ -40,8 +42,6 @@ LDADD = -L../lib -lmiscutil $(XTRA_LIBS)
 EXTRA_DIST = \
        cachemgr.conf
 
-DEFAULT_CACHEMGR_CONFIG = $(sysconfdir)/cachemgr.conf
-
 $(OBJS): $(top_srcdir)/include/version.h ../include/autoconf.h
 
 install-data-local:
index 38393912161a52b5baacb98b5881d06c8d8c4077..2009e029c5cf73582728eb3160af3cbcf596bbb3 100644 (file)
  *  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.
@@ -140,8 +140,7 @@ extern "C"
 #define DEFAULT_CACHEMGR_CONFIG "/etc/squid/cachemgr.conf"
 #endif
 
-typedef struct
-{
+typedef struct {
     char *server;
     char *hostname;
     int port;
@@ -153,7 +152,7 @@ typedef struct
 
 /*
  * Debugging macros (info goes to error_log on your web server)
- * Note: do not run cache manager with non zero debugging level 
+ * Note: do not run cache manager with non zero debugging level
  *       if you do not debug, it may write a lot of [sensitive]
  *       information to your error log.
  */
@@ -417,7 +416,7 @@ error_html(const char *msg)
     printf("<HTML><HEAD><TITLE>Cache Manager Error</TITLE>\n");
     printf("<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE></HEAD>\n");
     printf("<BODY><H1>Cache Manager Error</H1>\n");
-    printf("<P>\n%s</P>\n", msg);
+    printf("<P>\n%s</P>\n", html_quote(msg));
     print_trailer();
 }
 
@@ -531,7 +530,7 @@ munge_other_line(const char *buf, cachemgr_request * req)
     if (!strchr(buf, '\t') || *buf == '\t') {
         /* nope, just text */
         snprintf(html, sizeof(html), "%s%s",
-                 table_line_num ? "</table>\n<pre>" : "", buf);
+                 table_line_num ? "</table>\n<pre>" : "", html_quote(buf));
         table_line_num = 0;
         return html;
     }
@@ -568,7 +567,7 @@ munge_other_line(const char *buf, cachemgr_request * req)
         l += snprintf(html + l, sizeof(html) - l, "<%s colspan=\"%d\" align=\"%s\">%s</%s>",
                       ttag, column_span,
                       is_header ? "center" : is_number(cell) ? "right" : "left",
-                      cell, ttag);
+                      html_quote(cell), ttag);
     }
 
     xfree(buf_copy);
@@ -579,6 +578,27 @@ munge_other_line(const char *buf, cachemgr_request * req)
     return html;
 }
 
+static const char *
+munge_action_line(const char *_buf, cachemgr_request * req)
+{
+    static char html[2 * 1024];
+    char *buf = xstrdup(_buf);
+    char *x = buf;
+    const char *action, *description;
+    char *p;
+
+    if ((p = strchr(x, '\n')))
+        *p = '\0';
+    action = xstrtok(&x, '\t');
+    description = xstrtok(&x, '\t');
+    if (!description)
+        description = action;
+    if (!action)
+        return "";
+    snprintf(html, sizeof(html), " <a href=\"%s\">%s</a>", menu_url(req, action), description);
+    return html;
+}
+
 static int
 read_reply(int s, cachemgr_request * req)
 {
@@ -594,7 +614,7 @@ read_reply(int s, cachemgr_request * req)
 #endif
     /* interpretation states */
     enum {
-        isStatusLine, isHeaders, isBodyStart, isBody, isForward, isEof, isForwardEof, isSuccess, isError
+        isStatusLine, isHeaders, isActions, isBodyStart, isBody, isForward, isEof, isForwardEof, isSuccess, isError
     } istate = isStatusLine;
     int parse_menu = 0;
     const char *action = req->action;
@@ -689,6 +709,22 @@ read_reply(int s, cachemgr_request * req)
                 printf("<PRE>\n");
             }
 
+            istate = isActions;
+            /* yes, fall through, we do not want to loose the first line */
+
+        case isActions:
+            if (strncmp(buf, "action:", 7) == 0) {
+                fputs(" ", stdout);
+                fputs(munge_action_line(buf + 7, req), stdout);
+                break;
+            }
+            if (parse_menu) {
+                printf("<UL>\n");
+            } else {
+                printf("<HR noshade size=\"1px\">\n");
+                printf("<PRE>\n");
+            }
+
             istate = isBody;
             /* yes, fall through, we do not want to loose the first line */
 
@@ -709,9 +745,7 @@ read_reply(int s, cachemgr_request * req)
              * 401 to .cgi because web server filters out all auth info. Thus we
              * disable authentication headers for now.
              */
-            if (!strncasecmp(buf, "WWW-Authenticate:", 17) || !strncasecmp(buf, "Proxy-Authenticate:", 19))
-
-                ;      /* skip */
+            if (!strncasecmp(buf, "WWW-Authenticate:", 17) || !strncasecmp(buf, "Proxy-Authenticate:", 19));   /* skip */
             else
                 fputs(buf, stdout);
 
@@ -846,8 +880,7 @@ process_request(cachemgr_request * req)
 }
 
 int
-main(int argc, char *argv[])
-{
+main(int argc, char *argv[]) {
     char *s;
     cachemgr_request *req;
 
@@ -879,8 +912,7 @@ main(int argc, char *argv[])
 }
 
 static char *
-read_post_request(void)
-{
+read_post_request(void) {
     char *s;
     char *buf;
     int len;
@@ -907,8 +939,7 @@ read_post_request(void)
 }
 
 static char *
-read_get_request(void)
-{
+read_get_request(void) {
     char *s;
 
     if ((s = getenv("QUERY_STRING")) == NULL)
@@ -918,8 +949,7 @@ read_get_request(void)
 }
 
 static cachemgr_request *
-read_request(void)
-{
+read_request(void) {
     char *buf;
 
     cachemgr_request *req;
@@ -994,12 +1024,11 @@ read_request(void)
 /* Routines to support authentication */
 
 /*
- * Encodes auth info into a "public" form. 
+ * Encodes auth info into a "public" form.
  * Currently no powerful encryption is used.
  */
 static void
-make_pub_auth(cachemgr_request * req)
-{
+make_pub_auth(cachemgr_request * req) {
     static char buf[1024];
     safe_free(req->pub_auth);
     debug(3) fprintf(stderr, "cmgr: encoding for pub...\n");
@@ -1022,8 +1051,7 @@ make_pub_auth(cachemgr_request * req)
 }
 
 static void
-decode_pub_auth(cachemgr_request * req)
-{
+decode_pub_auth(cachemgr_request * req) {
     char *buf;
     const char *host_name;
     const char *time_str;
@@ -1081,15 +1109,13 @@ decode_pub_auth(cachemgr_request * req)
 }
 
 static void
-reset_auth(cachemgr_request * req)
-{
+reset_auth(cachemgr_request * req) {
     safe_free(req->passwd);
     safe_free(req->pub_auth);
 }
 
 static const char *
-make_auth_header(const cachemgr_request * req)
-{
+make_auth_header(const cachemgr_request * req) {
     static char buf[1024];
     size_t stringLength = 0;
     const char *str64;
@@ -1114,8 +1140,7 @@ make_auth_header(const cachemgr_request * req)
 }
 
 static int
-check_target_acl(const char *hostname, int port)
-{
+check_target_acl(const char *hostname, int port) {
     char config_line[BUFSIZ];
     FILE *fp = NULL;
     int ret = 0;
index 5e32acf7dee81e6a06d4ac449babad300848ce15..d7ff21dad9deec9ede4c106266fe27d84f1ead71 100644 (file)
  *  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.
@@ -89,7 +89,13 @@ using namespace Squid;
 #include "IPAddress.h"
 
 #ifndef BUFSIZ
-#define BUFSIZ 8192
+#define BUFSIZ         8192
+#endif
+#ifndef MESSAGELEN
+#define MESSAGELEN     65536
+#endif
+#ifndef HEADERLEN
+#define HEADERLEN      65536
 #endif
 
 typedef void SIGHDLR(int sig);
@@ -113,33 +119,42 @@ static struct stat sb;
 int total_bytes = 0;
 int io_timeout = 120;
 
+#ifdef _SQUID_MSWIN_
+void
+Win32SockCleanup(void)
+{
+    WSACleanup();
+    return;
+}
+#endif /* ifdef _SQUID_MSWIN_ */
+
 static void
 usage(const char *progname)
 {
     fprintf(stderr,
-       "Version: %s\n"
-       "Usage: %s [-arsv] [-i IMS] [-h remote host] [-l local host] [-p port] [-m method] [-t count] [-I ping-interval] [-H 'strings'] [-T timeout] url\n"
-       "Options:\n"
-       "    -P file      PUT request.\n"
-       "    -a           Do NOT include Accept: header.\n"
-       "    -r           Force cache to reload URL.\n"
-       "    -s           Silent.  Do not print data to stdout.\n"
-       "    -v           Verbose. Print outgoing message to stderr.\n"
-       "    -i IMS       If-Modified-Since time (in Epoch seconds).\n"
-       "    -h host      Retrieve URL from cache on hostname.  Default is localhost.\n"
-       "    -l host      Specify a local IP address to bind to.  Default is none.\n"
-       "    -p port      Port number of cache.  Default is %d.\n"
-       "    -m method    Request method, default is GET.\n"
-       "    -t count     Trace count cache-hops\n"
-       "    -g count     Ping mode, \"count\" iterations (0 to loop until interrupted).\n"
-       "    -I interval  Ping interval in seconds (default 1 second).\n"
-       "    -H 'string'  Extra headers to send. Use '\\n' for new lines.\n"
-       "    -T timeout   Timeout value (seconds) for read/write operations.\n"
-       "    -u user      Proxy authentication username\n"
-       "    -w password  Proxy authentication password\n"
-       "    -U user      WWW authentication username\n"
-       "    -W password  WWW authentication password\n",
-       VERSION, progname, CACHE_HTTP_PORT);
+            "Version: %s\n"
+            "Usage: %s [-arsv] [-i IMS] [-h remote host] [-l local host] [-p port] [-m method] [-t count] [-I ping-interval] [-H 'strings'] [-T timeout] url\n"
+            "Options:\n"
+            "    -P file      PUT request.\n"
+            "    -a           Do NOT include Accept: header.\n"
+            "    -r           Force cache to reload URL.\n"
+            "    -s           Silent.  Do not print data to stdout.\n"
+            "    -v           Verbose. Print outgoing message to stderr.\n"
+            "    -i IMS       If-Modified-Since time (in Epoch seconds).\n"
+            "    -h host      Retrieve URL from cache on hostname.  Default is localhost.\n"
+            "    -l host      Specify a local IP address to bind to.  Default is none.\n"
+            "    -p port      Port number of cache.  Default is %d.\n"
+            "    -m method    Request method, default is GET.\n"
+            "    -t count     Trace count cache-hops\n"
+            "    -g count     Ping mode, \"count\" iterations (0 to loop until interrupted).\n"
+            "    -I interval  Ping interval in seconds (default 1 second).\n"
+            "    -H 'string'  Extra headers to send. Use '\\n' for new lines.\n"
+            "    -T timeout   Timeout value (seconds) for read/write operations.\n"
+            "    -u user      Proxy authentication username\n"
+            "    -w password  Proxy authentication password\n"
+            "    -U user      WWW authentication username\n"
+            "    -W password  WWW authentication password\n",
+            VERSION, progname, CACHE_HTTP_PORT);
     exit(1);
 }
 
@@ -155,8 +170,8 @@ main(int argc, char *argv[])
     int opt_verbose = 0;
     const char *hostname, *localhost;
     IPAddress iaddr;
-    char url[BUFSIZ], msg[49152], buf[BUFSIZ];
-    char extra_hdrs[32768];
+    char url[BUFSIZ], msg[MESSAGELEN], buf[BUFSIZ];
+    char extra_hdrs[HEADERLEN];
     const char *method = "GET";
     extern char *optarg;
     time_t ims = 0;
@@ -183,253 +198,254 @@ main(int argc, char *argv[])
     ping_int = 1 * 1000;
 
     if (argc < 2) {
-       usage(argv[0]);         /* need URL */
+        usage(argv[0]);                /* need URL */
     } else if (argc >= 2) {
-       strncpy(url, argv[argc - 1], BUFSIZ);
-       url[BUFSIZ - 1] = '\0';
+        strncpy(url, argv[argc - 1], BUFSIZ);
+        url[BUFSIZ - 1] = '\0';
 
-       if (url[0] == '-')
-           usage(argv[0]);
+        if (url[0] == '-')
+            usage(argv[0]);
 
-       while ((c = getopt(argc, argv, "ah:l:P:i:km:p:rsvt:g:p:I:H:T:u:U:w:W:?")) != -1)
-           switch (c) {
+        while ((c = getopt(argc, argv, "ah:l:P:i:km:p:rsvt:g:p:I:H:T:u:U:w:W:?")) != -1)
+            switch (c) {
 
-           case 'a':
-               opt_noaccept = 1;
-               break;
+            case 'a':
+                opt_noaccept = 1;
+                break;
 
-           case 'h':           /* remote host */
+            case 'h':          /* remote host */
 
-               if (optarg != NULL)
-                   hostname = optarg;
+                if (optarg != NULL)
+                    hostname = optarg;
 
-               break;
+                break;
 
-           case 'l':           /* local host */
-               if (optarg != NULL)
-                   localhost = optarg;
+            case 'l':          /* local host */
+                if (optarg != NULL)
+                    localhost = optarg;
 
-               break;
+                break;
 
-           case 's':           /* silent */
-               to_stdout = 0;
+            case 's':          /* silent */
+                to_stdout = 0;
 
-               break;
+                break;
 
-           case 'k':           /* backward compat */
-               keep_alive = 1;
+            case 'k':          /* backward compat */
+                keep_alive = 1;
 
-               break;
+                break;
 
-           case 'r':           /* reload */
-               reload = 1;
+            case 'r':          /* reload */
+                reload = 1;
 
-               break;
+                break;
 
-           case 'p':           /* port number */
-               sscanf(optarg, "%d", &port);
+            case 'p':          /* port number */
+                sscanf(optarg, "%d", &port);
 
-               if (port < 1)
-                   port = CACHE_HTTP_PORT;     /* default */
+                if (port < 1)
+                    port = CACHE_HTTP_PORT;    /* default */
 
-               break;
+                break;
 
-           case 'P':
-               put_file = xstrdup(optarg);
+            case 'P':
+                put_file = xstrdup(optarg);
 
-               break;
+                break;
 
-           case 'i':           /* IMS */
-               ims = (time_t) atoi(optarg);
+            case 'i':          /* IMS */
+                ims = (time_t) atoi(optarg);
 
-               break;
+                break;
 
-           case 'm':
-               method = xstrdup(optarg);
+            case 'm':
+                method = xstrdup(optarg);
 
-               break;
+                break;
 
-           case 't':
-               method = xstrdup("TRACE");
+            case 't':
+                method = xstrdup("TRACE");
 
-               max_forwards = atoi(optarg);
+                max_forwards = atoi(optarg);
 
-               break;
+                break;
 
-           case 'g':
-               ping = 1;
+            case 'g':
+                ping = 1;
 
-               pcount = atoi(optarg);
+                pcount = atoi(optarg);
 
-               to_stdout = 0;
+                to_stdout = 0;
 
-               break;
+                break;
 
-           case 'I':
-               if ((ping_int = atoi(optarg) * 1000) <= 0)
-                   usage(argv[0]);
+            case 'I':
+                if ((ping_int = atoi(optarg) * 1000) <= 0)
+                    usage(argv[0]);
 
-               break;
+                break;
 
-           case 'H':
-               if (strlen(optarg)) {
-                   char *t;
-                   strncpy(extra_hdrs, optarg, sizeof(extra_hdrs));
+            case 'H':
+                if (strlen(optarg)) {
+                    char *t;
+                    strncpy(extra_hdrs, optarg, sizeof(extra_hdrs));
 
-                   while ((t = strstr(extra_hdrs, "\\n")))
-                       *t = '\r', *(t + 1) = '\n';
-               }
-               break;
+                    while ((t = strstr(extra_hdrs, "\\n")))
+                        *t = '\r', *(t + 1) = '\n';
+                }
+                break;
 
-           case 'T':
-               io_timeout = atoi(optarg);
-               break;
+            case 'T':
+                io_timeout = atoi(optarg);
+                break;
 
-           case 'u':
-               proxy_user = optarg;
-               break;
+            case 'u':
+                proxy_user = optarg;
+                break;
 
-           case 'w':
-               proxy_password = optarg;
-               break;
+            case 'w':
+                proxy_password = optarg;
+                break;
 
-           case 'U':
-               www_user = optarg;
-               break;
+            case 'U':
+                www_user = optarg;
+                break;
 
-           case 'W':
-               www_password = optarg;
-               break;
+            case 'W':
+                www_password = optarg;
+                break;
 
-           case 'v':
-               /* undocumented: may increase verb-level by giving more -v's */
-               opt_verbose++;
-               break;
+            case 'v':
+                /* undocumented: may increase verb-level by giving more -v's */
+                opt_verbose++;
+                break;
 
-           case '?':           /* usage */
+            case '?':          /* usage */
 
-           default:
-               usage(argv[0]);
-               break;
-           }
+            default:
+                usage(argv[0]);
+                break;
+            }
     }
 #ifdef _SQUID_MSWIN_
     {
-       WSADATA wsaData;
-       WSAStartup(2, &wsaData);
+        WSADATA wsaData;
+        WSAStartup(2, &wsaData);
+        atexit(Win32SockCleanup);
     }
 #endif
     /* Build the HTTP request */
     if (strncmp(url, "mgr:", 4) == 0) {
-       char *t = xstrdup(url + 4);
-       snprintf(url, BUFSIZ, "cache_object://%s/%s", hostname, t);
-       xfree(t);
+        char *t = xstrdup(url + 4);
+        snprintf(url, BUFSIZ, "cache_object://%s/%s", hostname, t);
+        xfree(t);
     }
     if (put_file) {
-       put_fd = open(put_file, O_RDONLY);
-       set_our_signal();
-
-       if (put_fd < 0) {
-           fprintf(stderr, "%s: can't open file (%s)\n", argv[0],
-               xstrerror());
-           exit(-1);
-       }
+        put_fd = open(put_file, O_RDONLY);
+        set_our_signal();
+
+        if (put_fd < 0) {
+            fprintf(stderr, "%s: can't open file (%s)\n", argv[0],
+                    xstrerror());
+            exit(-1);
+        }
 #ifdef _SQUID_WIN32_
-       setmode(put_fd, O_BINARY);
+        setmode(put_fd, O_BINARY);
 
 #endif
 
-       fstat(put_fd, &sb);
+        fstat(put_fd, &sb);
     }
     snprintf(msg, BUFSIZ, "%s %s HTTP/1.0\r\n", method, url);
 
     if (reload) {
-       snprintf(buf, BUFSIZ, "Pragma: no-cache\r\n");
-       strcat(msg, buf);
+        snprintf(buf, BUFSIZ, "Pragma: no-cache\r\n");
+        strcat(msg, buf);
     }
     if (put_fd > 0) {
-       snprintf(buf, BUFSIZ, "Content-length: %d\r\n", (int) sb.st_size);
-       strcat(msg, buf);
+        snprintf(buf, BUFSIZ, "Content-length: %d\r\n", (int) sb.st_size);
+        strcat(msg, buf);
     }
     if (opt_noaccept == 0) {
-       snprintf(buf, BUFSIZ, "Accept: */*\r\n");
-       strcat(msg, buf);
+        snprintf(buf, BUFSIZ, "Accept: */*\r\n");
+        strcat(msg, buf);
     }
     if (ims) {
-       snprintf(buf, BUFSIZ, "If-Modified-Since: %s\r\n", mkrfc1123(ims));
-       strcat(msg, buf);
+        snprintf(buf, BUFSIZ, "If-Modified-Since: %s\r\n", mkrfc1123(ims));
+        strcat(msg, buf);
     }
     if (max_forwards > -1) {
-       snprintf(buf, BUFSIZ, "Max-Forwards: %d\r\n", max_forwards);
-       strcat(msg, buf);
+        snprintf(buf, BUFSIZ, "Max-Forwards: %d\r\n", max_forwards);
+        strcat(msg, buf);
     }
     if (proxy_user) {
-       char *user = proxy_user;
-       char *password = proxy_password;
+        char *user = proxy_user;
+        char *password = proxy_password;
 #if HAVE_GETPASS
 
-       if (!password)
-           password = getpass("Proxy password: ");
+        if (!password)
+            password = getpass("Proxy password: ");
 
 #endif
 
-       if (!password) {
-           fprintf(stderr, "ERROR: Proxy password missing\n");
-           exit(1);
-       }
-       snprintf(buf, BUFSIZ, "%s:%s", user, password);
-       snprintf(buf, BUFSIZ, "Proxy-Authorization: Basic %s\r\n", base64_encode(buf));
-       strcat(msg, buf);
+        if (!password) {
+            fprintf(stderr, "ERROR: Proxy password missing\n");
+            exit(1);
+        }
+        snprintf(buf, BUFSIZ, "%s:%s", user, password);
+        snprintf(buf, BUFSIZ, "Proxy-Authorization: Basic %s\r\n", base64_encode(buf));
+        strcat(msg, buf);
     }
     if (www_user) {
-       char *user = www_user;
-       char *password = www_password;
+        char *user = www_user;
+        char *password = www_password;
 #if HAVE_GETPASS
 
-       if (!password)
-           password = getpass("WWW password: ");
+        if (!password)
+            password = getpass("WWW password: ");
 
 #endif
 
-       if (!password) {
-           fprintf(stderr, "ERROR: WWW password missing\n");
-           exit(1);
-       }
-       snprintf(buf, BUFSIZ, "%s:%s", user, password);
-       snprintf(buf, BUFSIZ, "Authorization: Basic %s\r\n", base64_encode(buf));
-       strcat(msg, buf);
+        if (!password) {
+            fprintf(stderr, "ERROR: WWW password missing\n");
+            exit(1);
+        }
+        snprintf(buf, BUFSIZ, "%s:%s", user, password);
+        snprintf(buf, BUFSIZ, "Authorization: Basic %s\r\n", base64_encode(buf));
+        strcat(msg, buf);
     }
     if (keep_alive) {
-       if (port != 80)
-           snprintf(buf, BUFSIZ, "Proxy-Connection: keep-alive\r\n");
-       else
-           snprintf(buf, BUFSIZ, "Connection: keep-alive\r\n");
+        if (port != 80)
+            snprintf(buf, BUFSIZ, "Proxy-Connection: keep-alive\r\n");
+        else
+            snprintf(buf, BUFSIZ, "Connection: keep-alive\r\n");
 
-       strcat(msg, buf);
+        strcat(msg, buf);
     }
     strcat(msg, extra_hdrs);
     snprintf(buf, BUFSIZ, "\r\n");
     strcat(msg, buf);
 
     if (opt_verbose)
-       fprintf(stderr, "headers: '%s'\n", msg);
+        fprintf(stderr, "headers: '%s'\n", msg);
 
     if (ping) {
 #if HAVE_SIGACTION
 
-       struct sigaction sa, osa;
+        struct sigaction sa, osa;
 
-       if (sigaction(SIGINT, NULL, &osa) == 0 && osa.sa_handler == SIG_DFL) {
-           sa.sa_handler = catchSignal;
-           sa.sa_flags = 0;
-           sigemptyset(&sa.sa_mask);
-           (void) sigaction(SIGINT, &sa, NULL);
-       }
+        if (sigaction(SIGINT, NULL, &osa) == 0 && osa.sa_handler == SIG_DFL) {
+            sa.sa_handler = catchSignal;
+            sa.sa_flags = 0;
+            sigemptyset(&sa.sa_mask);
+            (void) sigaction(SIGINT, &sa, NULL);
+        }
 #else
-       void (*osig) (int);
+        void (*osig) (int);
 
-       if ((osig = signal(SIGINT, catchSignal)) != SIG_DFL)
-           (void) signal(SIGINT, osig);
+        if ((osig = signal(SIGINT, catchSignal)) != SIG_DFL)
+            (void) signal(SIGINT, osig);
 
 #endif
 
@@ -437,21 +453,20 @@ main(int argc, char *argv[])
     loops = ping ? pcount : 1;
 
     for (i = 0; loops == 0 || i < loops; i++) {
-       int fsize = 0;
+        int fsize = 0;
         struct addrinfo *AI = NULL;
 
-       /* Connect to the server */
+        /* Connect to the server */
 
-        if(localhost) {
-            if( !iaddr.GetHostByName(localhost) ) {
+        if (localhost) {
+            if ( !iaddr.GetHostByName(localhost) ) {
                 fprintf(stderr, "client: ERROR: Cannot resolve %s: Host unknown.\n", localhost);
                 exit(1);
             }
-        }
-        else {
+        } else {
             /* Process the remote host name to locate the Protocol required
                in case we are being asked to link to another version of squid */
-            if( !iaddr.GetHostByName(hostname) ) {
+            if ( !iaddr.GetHostByName(hostname) ) {
                 fprintf(stderr, "client: ERROR: Cannot resolve %s: Host unknown.\n", hostname);
                 exit(1);
             }
@@ -471,7 +486,7 @@ main(int argc, char *argv[])
         }
 
         iaddr.SetEmpty();
-         if( !iaddr.GetHostByName(hostname) ) {
+        if ( !iaddr.GetHostByName(hostname) ) {
             fprintf(stderr, "client: ERROR: Cannot resolve %s: Host unknown.\n", hostname);
             exit(1);
         }
@@ -491,105 +506,105 @@ main(int argc, char *argv[])
             exit(1);
         }
 
-       /* Send the HTTP request */
-       bytesWritten = mywrite(conn, msg, strlen(msg));
+        /* Send the HTTP request */
+        bytesWritten = mywrite(conn, msg, strlen(msg));
 
-       if (bytesWritten < 0) {
-           perror("client: ERROR: write");
-           exit(1);
-       } else if ((unsigned) bytesWritten != strlen(msg)) {
-           fprintf(stderr, "client: ERROR: Cannot send request?: %s\n", msg);
-           exit(1);
-       }
+        if (bytesWritten < 0) {
+            perror("client: ERROR: write");
+            exit(1);
+        } else if ((unsigned) bytesWritten != strlen(msg)) {
+            fprintf(stderr, "client: ERROR: Cannot send request?: %s\n", msg);
+            exit(1);
+        }
 
-       if (put_file) {
-           int x;
-           lseek(put_fd, 0, SEEK_SET);
+        if (put_file) {
+            int x;
+            lseek(put_fd, 0, SEEK_SET);
 #ifdef _SQUID_MSWIN_
 
-           while ((x = read(put_fd, buf, sizeof(buf))) > 0) {
+            while ((x = read(put_fd, buf, sizeof(buf))) > 0) {
 #else
 
-           while ((x = myread(put_fd, buf, sizeof(buf))) > 0) {
+            while ((x = myread(put_fd, buf, sizeof(buf))) > 0) {
 #endif
-               x = mywrite(conn, buf, x);
+                x = mywrite(conn, buf, x);
 
-               total_bytes += x;
+                total_bytes += x;
 
-               if (x <= 0)
-                   break;
-           }
+                if (x <= 0)
+                    break;
+            }
 
-           if (x != 0)
-               fprintf(stderr, "client: ERROR: Cannot send file.\n");
-       }
-       /* Read the data */
+            if (x != 0)
+                fprintf(stderr, "client: ERROR: Cannot send file.\n");
+        }
+        /* Read the data */
 
 #ifdef _SQUID_MSWIN_
-       setmode(1, O_BINARY);
+        setmode(1, O_BINARY);
 
 #endif
 
-       while ((len = myread(conn, buf, sizeof(buf))) > 0) {
-           fsize += len;
+        while ((len = myread(conn, buf, sizeof(buf))) > 0) {
+            fsize += len;
 
-           if (to_stdout)
-               fwrite(buf, len, 1, stdout);
-       }
+            if (to_stdout)
+                fwrite(buf, len, 1, stdout);
+        }
 
 #ifdef _SQUID_MSWIN_
-       setmode(1, O_TEXT);
+        setmode(1, O_TEXT);
 
 #endif
 
-       (void) close(conn);     /* done with socket */
+        (void) close(conn);    /* done with socket */
 
-       if (interrupted)
-           break;
+        if (interrupted)
+            break;
 
-       if (ping) {
+        if (ping) {
 
-           struct tm *tmp;
-           time_t t2s;
-           long elapsed_msec;
+            struct tm *tmp;
+            time_t t2s;
+            long elapsed_msec;
 
-           (void) Now(&tv2);
-           elapsed_msec = tvSubMsec(tv1, tv2);
-           t2s = tv2.tv_sec;
-           tmp = localtime(&t2s);
-           fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n",
-               tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
-               tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1,
-               elapsed_msec / 1000, elapsed_msec % 1000,
-               elapsed_msec ? (double) fsize / elapsed_msec : -1.0);
+            (void) Now(&tv2);
+            elapsed_msec = tvSubMsec(tv1, tv2);
+            t2s = tv2.tv_sec;
+            tmp = localtime(&t2s);
+            fprintf(stderr, "%d-%02d-%02d %02d:%02d:%02d [%d]: %ld.%03ld secs, %f KB/s\n",
+                    tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday,
+                    tmp->tm_hour, tmp->tm_min, tmp->tm_sec, i + 1,
+                    elapsed_msec / 1000, elapsed_msec % 1000,
+                    elapsed_msec ? (double) fsize / elapsed_msec : -1.0);
 
-           if (i == 0 || elapsed_msec < ping_min)
-               ping_min = elapsed_msec;
+            if (i == 0 || elapsed_msec < ping_min)
+                ping_min = elapsed_msec;
 
-           if (i == 0 || elapsed_msec > ping_max)
-               ping_max = elapsed_msec;
+            if (i == 0 || elapsed_msec > ping_max)
+                ping_max = elapsed_msec;
 
-           ping_sum += elapsed_msec;
+            ping_sum += elapsed_msec;
 
-           /* Delay until next "ping_int" boundary */
-           if ((loops == 0 || i + 1 < loops) && elapsed_msec < ping_int) {
+            /* Delay until next "ping_int" boundary */
+            if ((loops == 0 || i + 1 < loops) && elapsed_msec < ping_int) {
 
-               struct timeval tvs;
-               long msec_left = ping_int - elapsed_msec;
+                struct timeval tvs;
+                long msec_left = ping_int - elapsed_msec;
 
-               tvs.tv_sec = msec_left / 1000;
-               tvs.tv_usec = (msec_left % 1000) * 1000;
-               select(0, NULL, NULL, NULL, &tvs);
-           }
-       }
+                tvs.tv_sec = msec_left / 1000;
+                tvs.tv_usec = (msec_left % 1000) * 1000;
+                select(0, NULL, NULL, NULL, &tvs);
+            }
+        }
     }
 
     if (ping && i) {
-       ping_mean = ping_sum / i;
-       fprintf(stderr, "%d requests, round-trip (secs) min/avg/max = "
-           "%ld.%03ld/%ld.%03ld/%ld.%03ld\n", i,
-           ping_min / 1000, ping_min % 1000, ping_mean / 1000, ping_mean % 1000,
-           ping_max / 1000, ping_max % 1000);
+        ping_mean = ping_sum / i;
+        fprintf(stderr, "%d requests, round-trip (secs) min/avg/max = "
+                "%ld.%03ld/%ld.%03ld/%ld.%03ld\n", i,
+                ping_min / 1000, ping_min % 1000, ping_mean / 1000, ping_mean % 1000,
+                ping_max / 1000, ping_max % 1000);
     }
     exit(0);
     /*NOTREACHED */
@@ -597,8 +612,7 @@ main(int argc, char *argv[])
 }
 
 static int
-client_comm_bind(int sock, const IPAddress &addr)
-{
+client_comm_bind(int sock, const IPAddress &addr) {
 
     int res;
 
@@ -616,8 +630,7 @@ client_comm_bind(int sock, const IPAddress &addr)
 }
 
 static int
-client_comm_connect(int sock, const IPAddress &addr, struct timeval *tvp)
-{
+client_comm_connect(int sock, const IPAddress &addr, struct timeval *tvp) {
     int res;
     static struct addrinfo *AI = NULL;
 
@@ -636,8 +649,7 @@ client_comm_connect(int sock, const IPAddress &addr, struct timeval *tvp)
 }
 
 static int
-Now(struct timeval *tp)
-{
+Now(struct timeval *tp) {
 #if GETTIMEOFDAY_NO_TZP
     return gettimeofday(tp);
 #else
@@ -647,21 +659,18 @@ Now(struct timeval *tp)
 }                              /* ARGSUSED */
 
 static void
-catchSignal(int sig)
-{
+catchSignal(int sig) {
     interrupted = 1;
     fprintf(stderr, "Interrupted.\n");
 }
 
 static void
-pipe_handler(int sig)
-{
+pipe_handler(int sig) {
     fprintf(stderr, "SIGPIPE received.\n");
 }
 
 static void
-set_our_signal(void)
-{
+set_our_signal(void) {
 #if HAVE_SIGACTION
 
     struct sigaction sa;
@@ -670,8 +679,8 @@ set_our_signal(void)
     sigemptyset(&sa.sa_mask);
 
     if (sigaction(SIGPIPE, &sa, NULL) < 0) {
-       fprintf(stderr, "Cannot set PIPE signal.\n");
-       exit(-1);
+        fprintf(stderr, "Cannot set PIPE signal.\n");
+        exit(-1);
     }
 #else
     signal(SIGPIPE, pipe_handler);
@@ -681,8 +690,7 @@ set_our_signal(void)
 }
 
 static ssize_t
-myread(int fd, void *buf, size_t len)
-{
+myread(int fd, void *buf, size_t len) {
 #ifndef _SQUID_MSWIN_
     alarm(io_timeout);
     return read(fd, buf, len);
@@ -693,8 +701,7 @@ myread(int fd, void *buf, size_t len)
 }
 
 static ssize_t
-mywrite(int fd, void *buf, size_t len)
-{
+mywrite(int fd, void *buf, size_t len) {
 #ifndef _SQUID_MSWIN_
     alarm(io_timeout);
     return write(fd, buf, len);