--- /dev/null
+Index: squid/helpers/basic_auth/MSNT/smblib.c
+diff -c squid/helpers/basic_auth/MSNT/smblib.c:1.1.2.3 squid/helpers/basic_auth/MSNT/smblib.c:1.1.2.4
+*** squid/helpers/basic_auth/MSNT/smblib.c:1.1.2.3 Wed Mar 9 07:28:32 2005
+--- squid/helpers/basic_auth/MSNT/smblib.c Thu Jun 30 12:50:55 2005
+***************
+*** 127,138 ****
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(server); i++)
+! called[i] = toupper(server[i]);
+
+ called[strlen(server)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = toupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+--- 127,138 ----
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(server); i++)
+! called[i] = xtoupper(server[i]);
+
+ called[strlen(server)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = xtoupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+***************
+*** 229,240 ****
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(host); i++)
+! called[i] = toupper(host[i]);
+
+ called[strlen(host)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = toupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+--- 229,240 ----
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(host); i++)
+! called[i] = xtoupper(host[i]);
+
+ called[strlen(host)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = xtoupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+Index: squid/helpers/basic_auth/MSNT/smblib.h
+diff -c squid/helpers/basic_auth/MSNT/smblib.h:1.1.2.1 squid/helpers/basic_auth/MSNT/smblib.h:1.1.2.2
+*** squid/helpers/basic_auth/MSNT/smblib.h:1.1.2.1 Wed Jun 26 13:11:17 2002
+--- squid/helpers/basic_auth/MSNT/smblib.h Thu Jun 30 12:50:55 2005
+***************
+*** 23,28 ****
+--- 23,29 ----
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
++ #include "util.h"
+ #include "std-defines.h"
+ #include "smblib-common.h"
+
+Index: squid/helpers/external_acl/winbind_group/wb_check_group.c
+diff -c squid/helpers/external_acl/winbind_group/wb_check_group.c:1.2.2.11 squid/helpers/external_acl/winbind_group/wb_check_group.c:1.2.2.12
+*** squid/helpers/external_acl/winbind_group/wb_check_group.c:1.2.2.11 Fri Mar 25 19:50:50 2005
+--- squid/helpers/external_acl/winbind_group/wb_check_group.c Thu Jun 30 12:50:55 2005
+***************
+*** 127,133 ****
+
+ static int strCaseCmp (const char *s1, const char *s2)
+ {
+! while (*s1 && toupper (*s1) == toupper (*s2)) s1++, s2++;
+ return *s1 - *s2;
+ }
+
+--- 127,133 ----
+
+ static int strCaseCmp (const char *s1, const char *s2)
+ {
+! while (*s1 && xtoupper (*s1) == xtoupper (*s2)) s1++, s2++;
+ return *s1 - *s2;
+ }
+
+Index: squid/helpers/ntlm_auth/SMB/ntlm_auth.c
+diff -c squid/helpers/ntlm_auth/SMB/ntlm_auth.c:1.12.2.2 squid/helpers/ntlm_auth/SMB/ntlm_auth.c:1.12.2.3
+*** squid/helpers/ntlm_auth/SMB/ntlm_auth.c:1.12.2.2 Wed Mar 9 07:30:37 2005
+--- squid/helpers/ntlm_auth/SMB/ntlm_auth.c Thu Jun 30 12:50:55 2005
+***************
+*** 81,87 ****
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = toupper(c);
+ p++;
+ }
+ }
+--- 81,87 ----
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = xtoupper(c);
+ p++;
+ }
+ }
+***************
+*** 92,98 ****
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = tolower(c);
+ p++;
+ }
+ }
+--- 92,98 ----
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = xtolower(c);
+ p++;
+ }
+ }
+Index: squid/helpers/ntlm_auth/SMB/smbval/smbencrypt.c
+diff -c squid/helpers/ntlm_auth/SMB/smbval/smbencrypt.c:1.3.2.2 squid/helpers/ntlm_auth/SMB/smbval/smbencrypt.c:1.3.2.3
+*** squid/helpers/ntlm_auth/SMB/smbval/smbencrypt.c:1.3.2.2 Wed Mar 9 07:33:01 2005
+--- squid/helpers/ntlm_auth/SMB/smbval/smbencrypt.c Thu Jun 30 12:50:55 2005
+***************
+*** 200,206 ****
+ * #endif *//* KANJI_WIN95_COMPATIBILITY */
+ {
+ if (islower((int)(unsigned char)*s))
+! *s = toupper(*s);
+ s++;
+ }
+ }
+--- 200,206 ----
+ * #endif *//* KANJI_WIN95_COMPATIBILITY */
+ {
+ if (islower((int)(unsigned char)*s))
+! *s = xtoupper(*s);
+ s++;
+ }
+ }
+Index: squid/helpers/ntlm_auth/SMB/smbval/smblib.c
+diff -c squid/helpers/ntlm_auth/SMB/smbval/smblib.c:1.3.2.2 squid/helpers/ntlm_auth/SMB/smbval/smblib.c:1.3.2.3
+*** squid/helpers/ntlm_auth/SMB/smbval/smblib.c:1.3.2.2 Wed Mar 9 07:28:32 2005
+--- squid/helpers/ntlm_auth/SMB/smbval/smblib.c Thu Jun 30 12:50:55 2005
+***************
+*** 170,181 ****
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(server); i++)
+! called[i] = toupper(server[i]);
+
+ called[strlen(server)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = toupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+--- 170,181 ----
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(server); i++)
+! called[i] = xtoupper(server[i]);
+
+ called[strlen(server)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = xtoupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+***************
+*** 271,282 ****
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(host); i++)
+! called[i] = toupper(host[i]);
+
+ called[strlen(host)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = toupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+--- 271,282 ----
+ * service we are going to call, sine some servers want it in uppercase */
+
+ for (i = 0; i < strlen(host); i++)
+! called[i] = xtoupper(host[i]);
+
+ called[strlen(host)] = 0; /* Make it a string */
+
+ for (i = 0; i < strlen(con->myname); i++)
+! calling[i] = xtoupper(con->myname[i]);
+
+ calling[strlen(con->myname)] = 0; /* Make it a string */
+
+Index: squid/helpers/ntlm_auth/SMB/smbval/std-includes.h
+diff -c squid/helpers/ntlm_auth/SMB/smbval/std-includes.h:1.2 squid/helpers/ntlm_auth/SMB/smbval/std-includes.h:1.2.2.1
+*** squid/helpers/ntlm_auth/SMB/smbval/std-includes.h:1.2 Fri Mar 9 17:55:38 2001
+--- squid/helpers/ntlm_auth/SMB/smbval/std-includes.h Thu Jun 30 12:50:55 2005
+***************
+*** 25,30 ****
+--- 25,31 ----
+
+ /* the types are provided by squid's configure preocess */
+ #include "squid_types.h"
++ #include "util.h"
+ #define BOOL int16_t
+ #define int16 int16_t
+
+Index: squid/helpers/ntlm_auth/fakeauth/fakeauth_auth.c
+diff -c squid/helpers/ntlm_auth/fakeauth/fakeauth_auth.c:1.3.2.8 squid/helpers/ntlm_auth/fakeauth/fakeauth_auth.c:1.3.2.9
+*** squid/helpers/ntlm_auth/fakeauth/fakeauth_auth.c:1.3.2.8 Wed Mar 9 07:33:01 2005
+--- squid/helpers/ntlm_auth/fakeauth/fakeauth_auth.c Thu Jun 30 12:50:55 2005
+***************
+*** 57,63 ****
+ char *p = string;
+ char c;
+ while ((c = *p)) {
+! *p = tolower(c);
+ p++;
+ }
+ }
+--- 57,63 ----
+ char *p = string;
+ char c;
+ while ((c = *p)) {
+! *p = xtolower(c);
+ p++;
+ }
+ }
+Index: squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c
+diff -c squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c:1.1.2.8 squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c:1.1.2.9
+*** squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c:1.1.2.8 Sun Feb 20 12:07:45 2005
+--- squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c Thu Jun 30 12:50:56 2005
+***************
+*** 87,93 ****
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = tolower(c);
+ p++;
+ }
+ }
+--- 87,93 ----
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = xtolower(c);
+ p++;
+ }
+ }
+***************
+*** 97,103 ****
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = toupper(c);
+ p++;
+ }
+ }
+--- 97,103 ----
+ {
+ char *p = string, c;
+ while ((c = *p)) {
+! *p = xtoupper(c);
+ p++;
+ }
+ }
+Index: squid/lib/Array.c
+diff -c squid/lib/Array.c:1.7.2.1 squid/lib/Array.c:1.7.2.2
+*** squid/lib/Array.c:1.7.2.1 Thu Jun 9 01:51:46 2005
+--- squid/lib/Array.c Thu Jun 30 12:50:56 2005
+***************
+*** 65,78 ****
+ void
+ arrayInit(Array * a)
+ {
+! assert(a);
+ memset(a, 0, sizeof(Array));
+ }
+
+ void
+ arrayClean(Array * a)
+ {
+! assert(a);
+ /* could also warn if some objects are left */
+ xfree(a->items);
+ a->items = NULL;
+--- 65,78 ----
+ void
+ arrayInit(Array * a)
+ {
+! assert(a != NULL);
+ memset(a, 0, sizeof(Array));
+ }
+
+ void
+ arrayClean(Array * a)
+ {
+! assert(a != NULL);
+ /* could also warn if some objects are left */
+ xfree(a->items);
+ a->items = NULL;
+***************
+*** 81,87 ****
+ void
+ arrayDestroy(Array * a)
+ {
+! assert(a);
+ arrayClean(a);
+ xfree(a);
+ }
+--- 81,87 ----
+ void
+ arrayDestroy(Array * a)
+ {
+! assert(a != NULL);
+ arrayClean(a);
+ xfree(a);
+ }
+***************
+*** 89,95 ****
+ void
+ arrayAppend(Array * a, void *obj)
+ {
+! assert(a);
+ if (a->count >= a->capacity)
+ arrayGrow(a, a->count + 1);
+ a->items[a->count++] = obj;
+--- 89,95 ----
+ void
+ arrayAppend(Array * a, void *obj)
+ {
+! assert(a != NULL);
+ if (a->count >= a->capacity)
+ arrayGrow(a, a->count + 1);
+ a->items[a->count++] = obj;
+***************
+*** 97,103 ****
+
+ void arrayInsert(Array *a, void *obj, int position)
+ {
+! assert(a);
+ if (a->count >= a->capacity)
+ arrayGrow(a, a->count + 1);
+ if (position > a->count)
+--- 97,103 ----
+
+ void arrayInsert(Array *a, void *obj, int position)
+ {
+! assert(a != NULL);
+ if (a->count >= a->capacity)
+ arrayGrow(a, a->count + 1);
+ if (position > a->count)
+***************
+*** 112,118 ****
+ void
+ arrayPreAppend(Array * a, int app_count)
+ {
+! assert(a);
+ if (a->count + app_count > a->capacity)
+ arrayGrow(a, a->count + app_count);
+ }
+--- 112,118 ----
+ void
+ arrayPreAppend(Array * a, int app_count)
+ {
+! assert(a != NULL);
+ if (a->count + app_count > a->capacity)
+ arrayGrow(a, a->count + app_count);
+ }
+Index: squid/lib/Stack.c
+diff -c squid/lib/Stack.c:1.11 squid/lib/Stack.c:1.11.2.1
+*** squid/lib/Stack.c:1.11 Thu Jan 11 17:37:12 2001
+--- squid/lib/Stack.c Thu Jun 30 12:50:56 2005
+***************
+*** 50,62 ****
+ void *
+ stackPop(Stack * s)
+ {
+! assert(s);
+ return s->count ? s->items[--s->count] : NULL;
+ }
+
+ void *
+ stackTop(Stack * s)
+ {
+! assert(s);
+ return s->count ? s->items[s->count - 1] : NULL;
+ }
+--- 50,62 ----
+ void *
+ stackPop(Stack * s)
+ {
+! assert(s != NULL);
+ return s->count ? s->items[--s->count] : NULL;
+ }
+
+ void *
+ stackTop(Stack * s)
+ {
+! assert(s != NULL);
+ return s->count ? s->items[s->count - 1] : NULL;
+ }
+Index: squid/lib/hash.c
+diff -c squid/lib/hash.c:1.12 squid/lib/hash.c:1.12.2.1
+*** squid/lib/hash.c:1.12 Wed Mar 7 10:57:37 2001
+--- squid/lib/hash.c Thu Jun 30 12:50:56 2005
+***************
+*** 239,245 ****
+ void
+ hash_last(hash_table * hid)
+ {
+! assert(hid);
+ hid->next = NULL;
+ hid->current_slot = 0;
+ }
+--- 239,245 ----
+ void
+ hash_last(hash_table * hid)
+ {
+! assert(hid != NULL);
+ hid->next = NULL;
+ hid->current_slot = 0;
+ }
+***************
+*** 307,313 ****
+ void
+ hashFreeMemory(hash_table * hid)
+ {
+! assert(hid);
+ if (hid->buckets)
+ xfree(hid->buckets);
+ xfree(hid);
+--- 307,313 ----
+ void
+ hashFreeMemory(hash_table * hid)
+ {
+! assert(hid != NULL);
+ if (hid->buckets)
+ xfree(hid->buckets);
+ xfree(hid);
+Index: squid/lib/heap.c
+diff -c squid/lib/heap.c:1.8 squid/lib/heap.c:1.8.2.1
+*** squid/lib/heap.c:1.8 Wed Feb 7 11:56:50 2001
+--- squid/lib/heap.c Thu Jun 30 12:50:56 2005
+***************
+*** 122,128 ****
+ delete_heap(heap * hp)
+ {
+ int i;
+! assert(hp);
+ for (i = 0; i < hp->last; i++) {
+ xfree(hp->nodes[i]);
+ }
+--- 122,128 ----
+ delete_heap(heap * hp)
+ {
+ int i;
+! assert(hp != NULL);
+ for (i = 0; i < hp->last; i++) {
+ xfree(hp->nodes[i]);
+ }
+Index: squid/lib/rfc1123.c
+diff -c squid/lib/rfc1123.c:1.29.2.2 squid/lib/rfc1123.c:1.29.2.3
+*** squid/lib/rfc1123.c:1.29.2.2 Wed Mar 9 07:51:39 2005
+--- squid/lib/rfc1123.c Sun Jul 3 02:18:38 2005
+***************
+*** 230,236 ****
+ #elif defined(_SQUID_AIX_)
+ #elif defined(_SQUID_CYGWIN_)
+ #else
+! extern time_t timezone;
+ #endif
+ /*
+ * The following assumes a fixed DST offset of 1 hour,
+--- 230,236 ----
+ #elif defined(_SQUID_AIX_)
+ #elif defined(_SQUID_CYGWIN_)
+ #else
+! extern long timezone;
+ #endif
+ /*
+ * The following assumes a fixed DST offset of 1 hour,
+Index: squid/lib/util.c
+diff -c squid/lib/util.c:1.83.2.2 squid/lib/util.c:1.83.2.3
+*** squid/lib/util.c:1.83.2.2 Sun Aug 11 19:22:37 2002
+--- squid/lib/util.c Thu Jun 30 12:50:56 2005
+***************
+*** 608,614 ****
+ xstrndup(const char *s, size_t n)
+ {
+ size_t sz;
+! assert(s);
+ assert(n);
+ sz = strlen(s) + 1;
+ if (sz > n)
+--- 608,614 ----
+ xstrndup(const char *s, size_t n)
+ {
+ size_t sz;
+! assert(s != NULL);
+ assert(n);
+ sz = strlen(s) + 1;
+ if (sz > n)
+Index: squid/snmplib/mib.c
+diff -c squid/snmplib/mib.c:1.22.2.1 squid/snmplib/mib.c:1.22.2.2
+*** squid/snmplib/mib.c:1.22.2.1 Wed Mar 9 07:33:02 2005
+--- squid/snmplib/mib.c Thu Jun 30 12:50:56 2005
+***************
+*** 128,138 ****
+
+ while (*s1 && *s2) {
+ if (xisupper(*s1))
+! c1 = tolower(*s1);
+ else
+ c1 = *s1;
+ if (xisupper(*s2))
+! c2 = tolower(*s2);
+ else
+ c2 = *s2;
+ if (c1 != c2)
+--- 128,138 ----
+
+ while (*s1 && *s2) {
+ if (xisupper(*s1))
+! c1 = xtolower(*s1);
+ else
+ c1 = *s1;
+ if (xisupper(*s2))
+! c2 = xtolower(*s2);
+ else
+ c2 = *s2;
+ if (c1 != c2)
+Index: squid/snmplib/parse.c
+diff -c squid/snmplib/parse.c:1.26.2.1 squid/snmplib/parse.c:1.26.2.2
+*** squid/snmplib/parse.c:1.26.2.1 Wed Mar 9 07:33:02 2005
+--- squid/snmplib/parse.c Thu Jun 30 12:50:56 2005
+***************
+*** 135,141 ****
+ #define WRITEONLY 20
+ #undef NOACCESS
+ #define NOACCESS 21
+! #define STATUS 22
+ #define MANDATORY 23
+ #define OPTIONAL 24
+ #define OBSOLETE 25
+--- 135,141 ----
+ #define WRITEONLY 20
+ #undef NOACCESS
+ #define NOACCESS 21
+! #define SNMP_STATUS 22
+ #define MANDATORY 23
+ #define OPTIONAL 24
+ #define OBSOLETE 25
+***************
+*** 193,199 ****
+ {"read-only", sizeof("read-only") - 1, READONLY},
+ {"ACCESS", sizeof("ACCESS") - 1, ACCESS},
+ {"MAX-ACCESS", sizeof("MAX-ACCESS") - 1, ACCESS},
+! {"STATUS", sizeof("STATUS") - 1, STATUS},
+ {"SYNTAX", sizeof("SYNTAX") - 1, SYNTAX},
+ {"OBJECT-TYPE", sizeof("OBJECT-TYPE") - 1, OBJTYPE},
+ {"{", sizeof("{") - 1, LEFTBRACKET},
+--- 193,199 ----
+ {"read-only", sizeof("read-only") - 1, READONLY},
+ {"ACCESS", sizeof("ACCESS") - 1, ACCESS},
+ {"MAX-ACCESS", sizeof("MAX-ACCESS") - 1, ACCESS},
+! {"STATUS", sizeof("STATUS") - 1, SNMP_STATUS},
+ {"SYNTAX", sizeof("SYNTAX") - 1, SYNTAX},
+ {"OBJECT-TYPE", sizeof("OBJECT-TYPE") - 1, OBJTYPE},
+ {"{", sizeof("{") - 1, LEFTBRACKET},
+***************
+*** 867,873 ****
+ return 0;
+ }
+ type = get_token(fp, token);
+! if (type != STATUS) {
+ print_error("Should be STATUS", token, nexttype);
+ free_node(np);
+ return 0;
+--- 867,873 ----
+ return 0;
+ }
+ type = get_token(fp, token);
+! if (type != SNMP_STATUS) {
+ print_error("Should be STATUS", token, nexttype);
+ free_node(np);
+ return 0;
+Index: squid/src/cf_gen.c
+diff -c squid/src/cf_gen.c:1.43.2.2 squid/src/cf_gen.c:1.43.2.3
+*** squid/src/cf_gen.c:1.43.2.2 Thu Aug 22 06:28:15 2002
+--- squid/src/cf_gen.c Thu Jun 30 12:50:56 2005
+***************
+*** 403,409 ****
+ "\tconfig_lineno = 0;\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->name);
+ assert(entry != entry->next);
+
+ if (!strcmp(entry->name, "comment"))
+--- 403,409 ----
+ "\tconfig_lineno = 0;\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->name != NULL);
+ assert(entry != entry->next);
+
+ if (!strcmp(entry->name, "comment"))
+***************
+*** 418,424 ****
+ rc |= 1;
+ continue;
+ }
+! assert(entry->default_value);
+ if (entry->ifdef)
+ fprintf(fp, "#if %s\n", entry->ifdef);
+ if (strcmp(entry->default_value, "none") == 0) {
+--- 418,424 ----
+ rc |= 1;
+ continue;
+ }
+! assert(entry->default_value != NULL);
+ if (entry->ifdef)
+ fprintf(fp, "#if %s\n", entry->ifdef);
+ if (strcmp(entry->default_value, "none") == 0) {
+***************
+*** 447,454 ****
+ "{\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->name);
+! assert(entry->loc);
+ if (entry->default_if_none == NULL)
+ continue;
+ if (entry->ifdef)
+--- 447,454 ----
+ "{\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->name != NULL);
+! assert(entry->loc != NULL);
+ if (entry->default_if_none == NULL)
+ continue;
+ if (entry->ifdef)
+***************
+*** 498,504 ****
+ alias = entry->alias;
+ next_alias:
+ fprintf(fp, "\telse if (!strcmp(token, \"%s\"))\n", name);
+! assert(entry->loc);
+ if (strcmp(entry->loc, "none") == 0) {
+ fprintf(fp,
+ "\t\tparse_%s();\n",
+--- 498,504 ----
+ alias = entry->alias;
+ next_alias:
+ fprintf(fp, "\telse if (!strcmp(token, \"%s\"))\n", name);
+! assert(entry->loc != NULL);
+ if (strcmp(entry->loc, "none") == 0) {
+ fprintf(fp,
+ "\t\tparse_%s();\n",
+***************
+*** 538,544 ****
+ "{\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->loc);
+ if (strcmp(entry->loc, "none") == 0)
+ continue;
+ if (strcmp(entry->name, "comment") == 0)
+--- 538,544 ----
+ "{\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->loc != NULL);
+ if (strcmp(entry->loc, "none") == 0)
+ continue;
+ if (strcmp(entry->name, "comment") == 0)
+***************
+*** 565,571 ****
+ "{\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->loc);
+ if (strcmp(entry->loc, "none") == 0)
+ continue;
+ if (strcmp(entry->name, "comment") == 0)
+--- 565,571 ----
+ "{\n"
+ );
+ for (entry = head; entry != NULL; entry = entry->next) {
+! assert(entry->loc != NULL);
+ if (strcmp(entry->loc, "none") == 0)
+ continue;
+ if (strcmp(entry->name, "comment") == 0)
+***************
+*** 588,594 ****
+ if (!name)
+ return 1;
+ for (i = 0; strcmp(defines[i].name, name) != 0; i++) {
+! assert(defines[i].name);
+ }
+ return defines[i].defined;
+ }
+--- 588,594 ----
+ if (!name)
+ return 1;
+ for (i = 0; strcmp(defines[i].name, name) != 0; i++) {
+! assert(defines[i].name != NULL);
+ }
+ return defines[i].defined;
+ }
+***************
+*** 597,605 ****
+ available_if(char *name)
+ {
+ int i = 0;
+! assert(name);
+ for (i = 0; strcmp(defines[i].name, name) != 0; i++) {
+! assert(defines[i].name);
+ }
+ return defines[i].enable;
+ }
+--- 597,605 ----
+ available_if(char *name)
+ {
+ int i = 0;
+! assert(name != NULL);
+ for (i = 0; strcmp(defines[i].name, name) != 0; i++) {
+! assert(defines[i].name != NULL);
+ }
+ return defines[i].enable;
+ }
+Index: squid/src/net_db.c
+diff -c squid/src/net_db.c:1.158.2.9 squid/src/net_db.c:1.158.2.10
+*** squid/src/net_db.c:1.158.2.9 Fri Mar 25 19:50:53 2005
+--- squid/src/net_db.c Thu Jun 30 12:50:56 2005
+***************
+*** 556,562 ****
+ if (0 == ex->used) {
+ /* skip reply headers */
+ if ((hdr_sz = headersEnd(p, size))) {
+! debug(38, 5) ("netdbExchangeHandleReply: hdr_sz = %d\n", hdr_sz);
+ rep = ex->e->mem_obj->reply;
+ if (0 == rep->sline.status)
+ httpReplyParse(rep, buf, hdr_sz);
+--- 556,562 ----
+ if (0 == ex->used) {
+ /* skip reply headers */
+ if ((hdr_sz = headersEnd(p, size))) {
+! debug(38, 5) ("netdbExchangeHandleReply: hdr_sz = %ld\n", (long int) hdr_sz);
+ rep = ex->e->mem_obj->reply;
+ if (0 == rep->sline.status)
+ httpReplyParse(rep, buf, hdr_sz);
+***************
+*** 574,584 ****
+ size = 0;
+ }
+ }
+! debug(38, 5) ("netdbExchangeHandleReply: start parsing loop, size = %d\n",
+! size);
+ while (size >= rec_sz) {
+! debug(38, 5) ("netdbExchangeHandleReply: in parsing loop, size = %d\n",
+! size);
+ addr.s_addr = any_addr.s_addr;
+ hops = rtt = 0.0;
+ for (o = 0; o < rec_sz;) {
+--- 574,584 ----
+ size = 0;
+ }
+ }
+! debug(38, 5) ("netdbExchangeHandleReply: start parsing loop, size = %ld\n",
+! (long int) size);
+ while (size >= rec_sz) {
+! debug(38, 5) ("netdbExchangeHandleReply: in parsing loop, size = %ld\n",
+! (long int) size);
+ addr.s_addr = any_addr.s_addr;
+ hops = rtt = 0.0;
+ for (o = 0; o < rec_sz;) {
--- /dev/null
+Index: squid/src/Packer.c
+diff -c squid/src/Packer.c:1.13.2.1 squid/src/Packer.c:1.13.2.2
+*** squid/src/Packer.c:1.13.2.1 Fri Mar 25 19:50:51 2005
+--- squid/src/Packer.c Thu Sep 1 16:22:23 2005
+***************
+*** 108,114 ****
+ {
+ assert(p && e);
+ p->append = (append_f) store_append;
+! p->vprintf = (vprintf_f) store_vprintf;
+ p->real_handle = e;
+ }
+
+--- 108,114 ----
+ {
+ assert(p && e);
+ p->append = (append_f) store_append;
+! p->packer_vprintf = (vprintf_f) store_vprintf;
+ p->real_handle = e;
+ }
+
+***************
+*** 118,124 ****
+ {
+ assert(p && mb);
+ p->append = (append_f) memBuf_append;
+! p->vprintf = (vprintf_f) memBuf_vprintf;
+ p->real_handle = mb;
+ }
+
+--- 118,124 ----
+ {
+ assert(p && mb);
+ p->append = (append_f) memBuf_append;
+! p->packer_vprintf = (vprintf_f) memBuf_vprintf;
+ p->real_handle = mb;
+ }
+
+***************
+*** 129,135 ****
+ assert(p);
+ /* it is not really necessary to do this, but, just in case... */
+ p->append = NULL;
+! p->vprintf = NULL;
+ p->real_handle = NULL;
+ }
+
+--- 129,135 ----
+ assert(p);
+ /* it is not really necessary to do this, but, just in case... */
+ p->append = NULL;
+! p->packer_vprintf = NULL;
+ p->real_handle = NULL;
+ }
+
+***************
+*** 161,167 ****
+ fmt = va_arg(args, char *);
+ #endif
+ assert(p);
+! assert(p->real_handle && p->vprintf);
+! p->vprintf(p->real_handle, fmt, args);
+ va_end(args);
+ }
+--- 161,167 ----
+ fmt = va_arg(args, char *);
+ #endif
+ assert(p);
+! assert(p->real_handle && p->packer_vprintf);
+! p->packer_vprintf(p->real_handle, fmt, args);
+ va_end(args);
+ }
+Index: squid/src/structs.h
+diff -c squid/src/structs.h:1.408.2.46 squid/src/structs.h:1.408.2.47
+*** squid/src/structs.h:1.408.2.46 Thu Sep 1 15:58:50 2005
+--- squid/src/structs.h Thu Sep 1 16:22:23 2005
+***************
+*** 839,845 ****
+ struct _Packer {
+ /* protected, use interface functions instead */
+ append_f append;
+! vprintf_f vprintf;
+ void *real_handle; /* first parameter to real append and vprintf */
+ };
+
+--- 839,845 ----
+ struct _Packer {
+ /* protected, use interface functions instead */
+ append_f append;
+! vprintf_f packer_vprintf;
+ void *real_handle; /* first parameter to real append and vprintf */
+ };
+
--- /dev/null
+Index: squid/errors/Makefile.am
+diff -c squid/errors/Makefile.am:1.5.2.7 squid/errors/Makefile.am:1.5.2.8
+*** squid/errors/Makefile.am:1.5.2.7 Mon Dec 1 03:12:28 2003
+--- squid/errors/Makefile.am Thu Sep 1 16:37:29 2005
+***************
+*** 22,27 ****
+--- 22,28 ----
+ Finnish \
+ French \
+ German \
++ Greek \
+ Hebrew \
+ Hungarian \
+ Italian \
+Index: squid/errors/Makefile.in
+diff -c squid/errors/Makefile.in:1.15.2.17 squid/errors/Makefile.in:1.15.2.18
+*** squid/errors/Makefile.in:1.15.2.17 Fri Mar 18 17:55:41 2005
+--- squid/errors/Makefile.in Thu Sep 1 16:37:29 2005
+***************
+*** 135,140 ****
+--- 135,141 ----
+ Finnish \
+ French \
+ German \
++ Greek \
+ Hebrew \
+ Hungarian \
+ Italian \
+Index: squid/errors/Greek/ERR_ACCESS_DENIED
+diff -c /dev/null squid/errors/Greek/ERR_ACCESS_DENIED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_ACCESS_DENIED Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 1,25 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ°Ć”Ć£ĆÆĆ±Ć„Ć½Ć„Ć“Ć”Ć© Ƨ ĆĆ±Ć¼Ć³Ć¢Ć”Ć³Ć§.
++ </STRONG>
++ <P>
++ ĆĆ© ƱƵĆØƬĆĆ³Ć„Ć©Ć² Ć“ĆÆƵ ƬƧƷƔĆĆ©Ć³Ć¬ĆÆĆ½ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² ƔưĆÆƓƱĆĆ°ĆÆĆµĆ Ć“Ć§Ć
++ ĆÆĆ«ĆÆĆŖĆ«ĆĆ±Ć¹Ć³Ć§ Ć“Ć§Ć² ƔƩƓĆĆ³Ć„Ć¹Ć² Ć³Ć”Ć². Ć
Ć°Ć©ĆŖĆÆĆ©ĆĆ¹ĆĆĆ³Ć“Ć„ ƬƄ Ć“ĆÆĆ Ć°Ć”Ć±ĆÆĆ·ĆĆ”
++ ĆµĆ°Ć§Ć±Ć„Ć³Ć©Ć¾Ć, Ć”Ć ĆĆÆƬĆƦƄƓƄ Ć¼Ć“Ć© Ć”ĆµĆ“Ć¼ Ć¤Ć„Ć Ć°Ć±ĆĆ°Ć„Ć© ĆĆ” Ć³ĆµĆ¬Ć¢Ć”ĆĆĆ„Ć©.
++ </UL>
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
++
+Index: squid/errors/Greek/ERR_CACHE_ACCESS_DENIED
+diff -c /dev/null squid/errors/Greek/ERR_CACHE_ACCESS_DENIED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_CACHE_ACCESS_DENIED Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 1,34 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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>
+Index: squid/errors/Greek/ERR_CACHE_MGR_ACCESS_DENIED
+diff -c /dev/null squid/errors/Greek/ERR_CACHE_MGR_ACCESS_DENIED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_CACHE_MGR_ACCESS_DENIED Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 1,34 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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
++ Ć³Ć·Ć„Ć“Ć©ĆŖĆ Ć¬Ć„ ƓƧ ƤƩƔƷƄĆĆ±Ć©Ć³Ć§ Ć“ĆÆƵ ĆŖƔƩ ĆŖĆÆĆ©Ć“ĆƮƓƄ Ć“Ć” ƧƬƄƱĆÆĆ«Ć¼Ć£Ć©Ć” Ć“ĆÆƵ ưƱĆÆĆ£Ć±ĆƬƬƔƓĆÆĆ²
++ Ć£Ć©Ć” Ć°Ć©ĆÆ Ć«Ć„Ć°Ć“ĆÆƬƄƱƄĆĆ² Ć”ĆƔƶĆÆƱĆĆ² Ć³Ć¶ĆƫƬƔƓĆÆĆ².</P>
+Index: squid/errors/Greek/ERR_CANNOT_FORWARD
+diff -c /dev/null squid/errors/Greek/ERR_CANNOT_FORWARD:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_CANNOT_FORWARD Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 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-7">
++ <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>
++ ĆĆ¤Ć½ĆƔƓƧ Ƨ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§ Ć³Ć“Ć§Ć Ć”Ć©Ć“ĆÆĆ½Ć¬Ć„ĆƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ¤Ć½ĆƔƓƧ Ƨ ưƱĆÆĆ¾ĆØĆ§Ć³Ć§ Ć“Ć§Ć² ƔƩƓĆĆ³Ć„Ć¹Ć² Ć³Ć”Ć² Ć”ĆµĆ“Ć Ć“Ć§ Ć³Ć“Ć©Ć£Ć¬Ć.
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆÆ Ć”ĆƓƧƬƔ Ć³Ć”Ć² Ć¤Ć„Ć ĆĆ“Ć”Ć Ć¤ĆµĆĆ”Ć“Ć¼ ĆĆ” ưƱĆÆĆ¹ĆØƧĆØĆ„Ć Ć³Ć“ĆÆĆ Ć”Ć±Ć·Ć©ĆŖĆ¼ ƄƮƵưƧƱƄƓƧƓĆ
++ Ć”Ć«Ć«Ć ĆŖƔƩ ĆÆĆ½Ć“Ć„ Ć³Ć„ ĆŖĆĆ°ĆÆĆ©ĆÆ Ć£ĆÆĆĆ©ĆŖĆ¼ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć. Ć Ć°Ć©ĆÆ Ć°Ć©ĆØĆ”ĆĆĆ² ƔƩƓĆĆ„Ć² Ć„ĆĆƔƩ:
++ <UL>
++ <LI>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć¤Ć„Ć Ć„Ć°Ć©Ć“Ć±ĆĆ°Ć„Ć© ĆĆ” Ć£ĆĆĆÆĆƓƔƩ Ɣư ƄƵĆØĆ„ĆĆ”Ć²
++ Ć³ĆµĆƤĆĆ³Ć„Ć©Ć² Ć³Ć“ĆÆĆµĆ² ƔƱƷƩĆŖĆÆĆ½Ć² ƄƮƵưƧƱƄƓƧƓĆĆ², ĆŖƔƩ
++ <LI>Ā¼Ć«ĆÆĆ© ĆÆĆ© ƤƩƔĆØĆĆ³Ć©Ć¬ĆÆĆ© Ć£ĆÆĆĆ©ĆŖĆÆĆ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“ĆĆ², Ć¤Ć„Ć Ć„ĆĆƔƩ ƤƩƔĆØĆĆ³Ć©Ć¬ĆÆĆ©.
++ </UL>
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_CONNECT_FAIL
+diff -c /dev/null squid/errors/Greek/ERR_CONNECT_FAIL:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_CONNECT_FAIL Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 1,27 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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>.
+Index: squid/errors/Greek/ERR_DNS_FAIL
+diff -c /dev/null squid/errors/Greek/ERR_DNS_FAIL:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_DNS_FAIL Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 1,30 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <TITLE>ĆĆĆĆĆĆ: ĆĆ¤Ć½ĆƔƓƧ Ƨ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§ Ć³Ć“Ć§Ć Ć”Ć©Ć“ĆÆĆ½Ć¬Ć„ĆƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§</TITLE>
++ <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
++ </HEAD><BODY>
++ <H2>ĆĆ¤Ć½ĆƔƓƧ Ƨ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§ Ć³Ć“Ć§Ć Ć”Ć©Ć“ĆÆĆ½Ć¬Ć„ĆƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§</H2>
++ <HR noshade size="1px">
++ <P>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <BLOCKQUOTE>
++ ĆĆ„Ć ĆĆ“Ć”Ć Ć¤ĆµĆĆ”Ć“Ć¼Ć ĆĆ” ƄƮƔĆŖĆ±Ć©Ć¢Ć¹ĆØĆ„Ć Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§ IP Ć£Ć©Ć” Ć“ĆÆ Ć¼ĆĆÆƬƔ
++ <I>%H</I>
++ </BLOCKQUOTE>
++
++ <P>
++ Ć Ć„Ć®ĆµĆ°Ć§Ć±Ć„Ć“Ć§Ć“ĆĆ² ĆÆĆĆÆƬĆĆ“Ć¹Ć Ć„ĆƧƬĆĆ±Ć¹Ć³Ć„ Ć¼Ć“Ć©:
++ <BLOCKQUOTE>
++ %z
++ </BLOCKQUOTE>
++
++ <P>
++ ĆĆµĆ“Ć¼ Ć³Ć§Ć¬Ć”ĆĆĆ„Ć© Ć¼Ć“Ć©:
++ <PRE>
++ Ć Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“ĆĆ² Ć¤Ć„Ć Ć¬Ć°Ć¼Ć±Ć„Ć³Ć„ ĆĆ” ƄƮƔĆŖĆ±Ć©Ć¢Ć¾Ć³Ć„Ć© Ć“Ć§Ć Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§ Ć°ĆÆƵ ưƫƧĆŖƓƱĆÆĆ«ĆÆĆ£ĆĆ³Ć”Ć“Ć„.
++ Ć
Ć«ĆĆ£Ć®Ć“Ć„ Ć”Ć Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§ Ć„ĆĆƔƩ Ć³Ć¹Ć³Ć“Ć.
++ </PRE>
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_FORWARDING_DENIED
+diff -c /dev/null squid/errors/Greek/ERR_FORWARDING_DENIED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FORWARDING_DENIED Thu Sep 1 16:37:29 2005
+***************
+*** 0 ****
+--- 1,25 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ°Ć”Ć£ĆÆĆ±Ć„Ć½Ć„Ć“Ć”Ć© Ƨ ưƱĆÆĆ¾ĆØĆ§Ć³Ć§.
++ </STRONG>
++ </UL>
++
++ <P>
++ Ć Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“ĆĆ² Ć¤Ć„Ć ĆØĆ” ưƱĆÆĆ¹ĆØĆĆ³Ć„Ć© Ć“ĆÆ Ć”ĆƓƧƬƔ Ć³Ć”Ć² Ć£Ć©Ć”Ć“Ć Ć°Ć±ĆÆĆ³Ć°Ć”ĆØĆ„Ć ĆĆ”
++ Ć„Ć°Ć©Ć¢ĆĆ«Ć„Ć© ƬƩƔ Ć³ĆµĆ£Ć£Ć„ĆĆ©ĆŖĆ Ć³Ć·ĆĆ³Ć§. ĀŗĆ³Ć¹Ć² ĆÆ Ć°Ć„Ć«ĆĆ“Ć§Ć² Ć³Ć“ĆÆ %i Ć„ĆĆƔƩ ĆĆĆ”Ć² Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“ĆĆ²
++ ĆÆ ĆÆĆ°ĆÆĆĆÆĆ² Ć¤Ć„Ć Ć„ĆĆƔƩ Ć³Ć¹Ć³Ć“Ć Ć±ĆµĆØĆ¬Ć©Ć³Ć¬ĆĆĆÆĆ².
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_FTP_DISABLED
+diff -c /dev/null squid/errors/Greek/ERR_FTP_DISABLED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_DISABLED Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,23 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆÆ Ć°Ć±Ć¹Ć“Ć¼ĆŖĆÆĆ«Ć«ĆÆ FTP Ć„ĆĆƔƩ ƔưƄĆĆ„Ć±Ć£ĆÆĆ°ĆÆƩƧƬĆĆĆÆ
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆµĆ“Ć¼Ć² ĆÆ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“ĆĆ² Ć¤Ć„Ć ĆµĆ°ĆÆĆ³Ć“Ć§Ć±ĆƦƄƩ FTP.
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_FTP_FAILURE
+diff -c /dev/null squid/errors/Greek/ERR_FTP_FAILURE:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_FAILURE Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,19 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć³Ć¶ĆƫƬƔ Ć³Ć“ĆÆ Ć°Ć±Ć¹Ć“Ć¼ĆŖĆÆĆ«Ć«ĆÆ 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>.
+Index: squid/errors/Greek/ERR_FTP_FORBIDDEN
+diff -c /dev/null squid/errors/Greek/ERR_FTP_FORBIDDEN:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_FORBIDDEN Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,19 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć³Ć¶ĆƫƬƔ ƄƮƔĆŖƱĆĆ¢Ć¹Ć³Ć§Ć² 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>.
+Index: squid/errors/Greek/ERR_FTP_NOT_FOUND
+diff -c /dev/null squid/errors/Greek/ERR_FTP_NOT_FOUND:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_NOT_FOUND Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,22 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ Ć Ć”ĆŖĆ¼Ć«ĆÆƵĆØƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§ Ć¤Ć„Ć Ć¢Ć±ĆĆØƧĆŖĆ„:
++ <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>.
+Index: squid/errors/Greek/ERR_FTP_PUT_CREATED
+diff -c /dev/null squid/errors/Greek/ERR_FTP_PUT_CREATED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_PUT_CREATED Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 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=iso-8859-7">
++ <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">
+Index: squid/errors/Greek/ERR_FTP_PUT_ERROR
+diff -c /dev/null squid/errors/Greek/ERR_FTP_PUT_ERROR:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_PUT_ERROR Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,26 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <TITLE>ĆĆĆĆĆĆ: Ć Ć¬Ć„Ć“Ć”Ć¶Ć¼Ć±Ć“Ć¹Ć³Ć§ FTP ƔưĆƓƵƷƄ</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>.
+Index: squid/errors/Greek/ERR_FTP_PUT_MODIFIED
+diff -c /dev/null squid/errors/Greek/ERR_FTP_PUT_MODIFIED:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_PUT_MODIFIED Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 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=iso-8859-7">
++ <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">
+Index: squid/errors/Greek/ERR_FTP_UNAVAILABLE
+diff -c /dev/null squid/errors/Greek/ERR_FTP_UNAVAILABLE:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_FTP_UNAVAILABLE Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,18 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ Ć Ć„Ć®ĆµĆ°Ć§Ć±Ć„Ć“Ć§Ć“ĆĆ² 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>.
+Index: squid/errors/Greek/ERR_INVALID_REQ
+diff -c /dev/null squid/errors/Greek/ERR_INVALID_REQ:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_INVALID_REQ Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,33 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć„Ć°Ć„Ć®Ć„Ć±Ć£Ć”Ć³ĆĆ”Ć² Ć“Ć§Ć² Ć”ĆĆ“Ć§Ć³Ć§Ć²:
++ <PRE>
++ %R
++ </PRE>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ Ā¶ĆŖƵƱƧ ĆĆĆ“Ć§Ć³Ć§
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆĆ°ĆÆĆ©ĆÆ Ć³Ć§Ć¬Ć„ĆĆÆ Ć“Ć§Ć² Ć”ĆĆ“Ć§Ć³Ć§Ć² HTTP Ć„ĆĆƔƩ ĆĆŖƵƱĆÆ. ĆĆ©ĆØĆ”ĆĆ Ć°Ć±ĆÆĆ¢Ć«ĆƬƔƓƔ:
++ <UL>
++ <LI>Ć
Ć«Ć«Ć©Ć°ĆĆ² Ć ĆĆ£ĆĆ¹Ć³Ć“Ć§ ƬĆĆØĆÆƤĆÆĆ² Ć”ĆĆ“Ć§Ć³Ć§Ć²
++ <LI>Ć
Ć«Ć«Ć©Ć°ĆĆ² ĆĆ©Ć„Ć½ĆØƵĆĆ³Ć§ (URL)
++ <LI>Ć
Ć«Ć«Ć©Ć°ĆĆ² Ć”ĆĆ”Ć£ĆĆ¹Ć±Ć©Ć³Ć“Ć©ĆŖĆ¼ HTTP (HTTP/1.0)
++ <LI>Ć Ć”ĆĆ“Ć§Ć³Ć§ Ć„ĆĆƔƩ ĆµĆ°Ć„Ć±Ć¬Ć„Ć£ĆĆØĆ§Ć²
++ <LI>ĀøĆ«Ć„Ć©Ć°Ć„Ć² ĆĆ„Ć±Ć©Ć„Ć·Ć¼Ć¬Ć„ĆĆÆ- ĆĆĆŖĆÆĆ² Ć£Ć©Ć” Ć“Ć©Ć² ƔƩƓĆĆ³Ć„Ć©Ć² POST Ć PUT
++ <LI>Ā¶ĆŖƵƱĆÆĆ© ƷƔƱƔĆŖĆ“ĆĆ±Ć„Ć² Ć³Ć“ĆÆ Ć¼ĆĆÆƬƔ ƵưĆÆĆ«ĆÆĆ£Ć©Ć³Ć“Ć, ĆÆĆ© ƵưĆÆĆ£Ć„Ć£Ć±Ć”Ć¬Ć¬ĆĆĆ„Ć² Ć¤Ć„Ć Ć„Ć°Ć©Ć“Ć±ĆĆ°ĆÆĆƓƔƩ
++ </UL>
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_INVALID_RESP
+diff -c /dev/null squid/errors/Greek/ERR_INVALID_RESP:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_INVALID_RESP Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 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>
++ <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>.
+Index: squid/errors/Greek/ERR_INVALID_URL
+diff -c /dev/null squid/errors/Greek/ERR_INVALID_URL:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_INVALID_URL Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,30 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ”ĆĆØĆ”Ć³Ć¬ĆĆƧ ĆĆ©Ć„Ć½ĆØƵĆĆ³Ć§
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆ°ĆƱƷƄƩ Ć°Ć±Ć¼Ć¢Ć«Ć§Ć¬Ć” ƬƄ Ć“Ć§Ć Ć”Ć©Ć“ĆÆĆ½Ć¬Ć„ĆƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§. ĆĆ©ĆØĆ”ĆĆĆ² ƔƩƓĆĆ„Ć²:
++ Some aspect of the requested URL is incorrect. Possible problems:
++ <UL>
++ <LI>Ć
Ć«Ć«Ć©Ć°ĆĆ² Ć Ć«Ć”ĆĆØĆ”Ć³Ć¬ĆĆĆÆ Ć°Ć±Ć¹Ć“Ć¼ĆŖĆÆĆ«Ć«ĆÆ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² (ĆØĆ” ưƱĆĆ°Ć„Ć© ĆĆ” Ć„ĆĆƔƩ `http://'' Ć Ć°Ć”Ć±Ć¼Ć¬ĆÆĆ©ĆÆ)
++ <LI>Ć
Ć«Ć«Ć©Ć°ĆĆ² Ć¼ĆĆÆƬƔ ƵưĆÆĆ«ĆÆĆ£Ć©Ć³Ć“Ć
++ <LI>ĆĆ”ĆĆØĆ”Ć³Ć¬ĆĆĆÆĆ© ƷƔƱƔĆŖĆ“ĆĆ±Ć„Ć² Ć¤Ć©Ć”Ć¶ĆµĆ£ĆĆ² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§
++ <LI>ĆĆ”ĆĆØĆ”Ć³Ć¬ĆĆĆÆĆ© ƷƔƱƔĆŖĆ“ĆĆ±Ć„Ć² Ć³Ć“ĆÆ Ć¼ĆĆÆƬƔ ƵưĆÆĆ«ĆÆĆ£Ć©Ć³Ć“Ć ' ĆÆĆ© ƵưĆÆĆ£Ć±Ć”Ć¬Ć¬ĆĆ³Ć„Ć©Ć² Ć¤Ć„Ć Ć„Ć°Ć©Ć“Ć±ĆĆ°ĆÆĆƓƔƩ
++ </UL>
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_LIFETIME_EXP
+diff -c /dev/null squid/errors/Greek/ERR_LIFETIME_EXP:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_LIFETIME_EXP Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,24 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§Ć Ć°Ć±ĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĀøƫƧƮƄ ĆÆ ĆĆ±Ć¼ĆĆÆĆ² ĆĆ½ĆĆ¤Ć„Ć³ĆĆ²
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆÆ Squid ƓƄƱƬĆĆ“Ć©Ć³Ć„ Ć“Ć§Ć Ć”ĆĆ“Ć§Ć³Ć§ Ć„Ć°Ć„Ć©Ć¤Ć Ć®Ć„Ć°ĆĆ±Ć”Ć³Ć„ Ć“ĆÆĆ Ć¬ĆĆ£Ć©Ć³Ć“ĆÆ Ć·Ć±Ć¼ĆĆÆ
++ Ć³Ć½ĆĆ¤Ć„Ć³Ć§Ć².
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_NO_RELAY
+diff -c /dev/null squid/errors/Greek/ERR_NO_RELAY:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_NO_RELAY Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,23 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ„Ć ĆµĆ°ĆƱƷƄƩ Wais Relay
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆ„Ć ĆĆ·Ć„Ć© ĆŖĆ”ĆØĆÆĆ±Ć©Ć³Ć“Ć„Ć ĆµĆ°ĆÆĆ«ĆÆĆ£Ć©Ć³Ć“ĆĆ² WAIS Relay Ć£Ć©Ć” Ć”ĆµĆ“Ć¼ Ć“ĆÆ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć! ĆƔƱƔưĆÆĆĆ„ĆØĆ„ĆĆ“Ć„ Ć³Ć“ĆÆĆ ĆĆ©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“Ć.
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_ONLY_IF_CACHED_MISS
+diff -c /dev/null squid/errors/Greek/ERR_ONLY_IF_CACHED_MISS:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_ONLY_IF_CACHED_MISS Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,28 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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>.
+Index: squid/errors/Greek/ERR_READ_ERROR
+diff -c /dev/null squid/errors/Greek/ERR_READ_ERROR:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_READ_ERROR Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,28 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ¤Ć½ĆƔƓƧ Ƨ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§ Ć³Ć“Ć§Ć Ć”Ć©Ć“ĆÆĆ½Ć¬Ć„ĆƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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>.
+Index: squid/errors/Greek/ERR_READ_TIMEOUT
+diff -c /dev/null squid/errors/Greek/ERR_READ_TIMEOUT:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_READ_TIMEOUT Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,28 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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>.
+Index: squid/errors/Greek/ERR_SHUTTING_DOWN
+diff -c /dev/null squid/errors/Greek/ERR_SHUTTING_DOWN:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_SHUTTING_DOWN Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,17 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ¤Ć½ĆƔƓƧ Ƨ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§ Ć³Ć“Ć§Ć Ć”Ć©Ć“ĆÆĆ½Ć¬Ć„ĆƧ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <P>
++ ĆĆÆ Ć³Ć½Ć³Ć“Ć§Ć¬Ć” Ć„ĆĆƔƩ Ć³Ć„ ƤƩƔƤƩĆŖĆ”Ć³ĆĆ” Ć“Ć„Ć±Ć¬Ć”Ć“Ć©Ć³Ć¬ĆÆĆ½ ĆŖƔƩ Ć¤Ć„Ć Ć¬Ć°ĆÆĆ±Ć„Ć ĆĆ” ƄƮƵưƧƱƄƓĆĆ³Ć„Ć©
++ Ć“ĆÆ Ć”ĆƓƧƬƔ Ć³Ć”Ć² Ć”ĆµĆ“Ć Ć“Ć§ Ć³Ć“Ć©Ć£Ć¬Ć. ĆƔƱƔĆŖĆ”Ć«Ć¾ ƤĆÆĆŖƩƬĆĆ³Ć“Ć„ ƮƔĆĆ Ć³Ć„ Ć«ĆĆ£ĆÆ.
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_SOCKET_FAILURE
+diff -c /dev/null squid/errors/Greek/ERR_SOCKET_FAILURE:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_SOCKET_FAILURE Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,28 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆƶĆƫƬƔ ĆĆ½ĆĆ¤Ć„Ć³Ć§Ć²
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆÆ Ć³Ć½Ć³Ć“Ć§Ć¬Ć” Ć„Ć°ĆĆ³Ć“Ć±Ć„ĆøĆ„:
++ <PRE><I> %E</I></PRE>
++
++ <P>
++ ĆĆÆ Squid Ć¤Ć„Ć Ć¬Ć°ĆÆĆ±Ć„Ć ĆĆ” ƤƧƬƩĆÆĆµĆ±Ć£ĆĆ³Ć„Ć© Ć³Ć½ĆĆ¤Ć„Ć³Ć§ TCP, ƵưĆÆĆØĆ„Ć“Ć©ĆŖĆ Ć«Ć¼Ć£Ć¹ Ć¶Ć¼Ć±Ć“ĆÆƵ.
++ ĆƔƱƔĆŖĆ”Ć«Ć¾ ƮƔĆƔƤĆÆĆŖƩƬĆĆ³Ć“Ć„.
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_TOO_BIG
+diff -c /dev/null squid/errors/Greek/ERR_TOO_BIG:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_TOO_BIG Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,27 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆÆ Ć”ĆƓƧƬƔ Ć Ć§ ƔưĆĆĆ“Ć§Ć³Ć§ Ć„ĆĆƔƩ ĆµĆ°Ć„Ć±Ć¬Ć„Ć£ĆĆØƧ
++ </STRONG>
++ <P>
++ ĆĆ ĆŖĆĆĆ„Ć“Ć„ ƬƩƔ Ć”ĆĆ“Ć§Ć³Ć§ POST Ć PUT, Ć“Ć¼Ć“Ć„ Ć“ĆÆ Ć³Ć¾Ć¬Ć” (Ć”ĆµĆ“Ć¼ Ć°ĆÆƵ ưƱĆÆĆ³Ć°Ć”ĆØĆ„ĆĆ“Ć„
++ ĆĆ” Ć”ĆĆ„Ć¢ĆĆ³Ć„Ć“Ć„) Ć„ĆĆƔƩ Ć°ĆÆĆ«Ć½ Ć¬Ć„Ć£ĆĆ«ĆÆ. ĆĆ ĆŖĆĆĆ„Ć“Ć„ ƬƩƔ Ć”ĆĆ“Ć§Ć³Ć§ GET, Ć“Ć¼Ć“Ć„
++ Ć“ĆÆ Ć³Ć¾Ć¬Ć” (Ć”ĆµĆ“Ć¼ Ć°ĆÆƵ ưƱĆÆĆ³Ć°Ć”ĆØĆ„ĆĆ“Ć„ ĆĆ” ĆŖĆ”Ć“Ć„Ć¢ĆĆ³Ć„Ć“Ć„) Ć„ĆĆƔƩ Ć°ĆÆĆ«Ć½ Ć¬Ć„Ć£ĆĆ«ĆÆ.
++ ĆĆ” Ć¼Ć±Ć©Ć” Ć”ĆµĆ“Ć ĆŖĆ”ĆØĆÆƱĆƦĆÆĆƓƔƩ Ć”Ć°Ć¼ Ć“ĆÆĆ ĆƔƱĆÆĆ·ĆĆ” ĆĆ°Ć§Ć±Ć„Ć³Ć©Ć¾Ć ĆƩƔƤƩĆŖĆ“Ć½ĆÆƵ Ć°ĆÆƵ
++ Ć«Ć„Ć©Ć“ĆÆĆµĆ±Ć£Ć„Ć Ć”ĆµĆ“Ć Ć“Ć§Ć ĆµĆ°Ć§Ć±Ć„Ć³ĆĆ”. ĆƔƱƔĆŖĆ”Ć«Ć¾ Ć„Ć°Ć©ĆŖĆÆĆ©ĆĆ¹ĆĆĆ³Ć“Ć„ Ć¬Ć”Ć¦Ć Ć“ĆÆĆµĆ² Ć”Ć
++ ĆĆÆƬĆƦƄƓƄ ĆÆĆ“Ć© Ć”ĆµĆ“Ć¼ Ć„ĆĆƔƩ Ć«ĆĆØĆÆĆ².
++ </UL>
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_UNSUP_REQ
+diff -c /dev/null squid/errors/Greek/ERR_UNSUP_REQ:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_UNSUP_REQ Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,24 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆƧ ƵưĆÆĆ³Ć“Ć§Ć±Ć©Ć¦Ć¼Ć¬Ć„ĆƧ ƬĆĆØĆÆƤĆÆĆ² Ć”ĆĆ“Ć§Ć³Ć§Ć² ĆŖƔƩ Ć°Ć±Ć¹Ć“Ć¼ĆŖĆÆĆ«Ć«ĆÆ
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆÆ Squid Ć¤Ć„Ć ĆµĆ°ĆÆĆ³Ć“Ć§Ć±ĆƦƄƩ Ć¼Ć«Ć„Ć² Ć“Ć©Ć² ƬƄĆØĆ¼Ć¤ĆÆĆµĆ² ƔƩƓĆĆ³Ć„Ć¹Ć Ć£Ć©Ć” Ć¼Ć«Ć” Ć“Ć” Ć°Ć±Ć¹Ć“Ć¼ĆŖĆÆĆ«Ć«Ć”
++ Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć². ĆĆ©Ć” ưƔƱĆĆ¤Ć„Ć©Ć£Ć¬Ć”, Ć“ĆÆ POST Ć£Ć©Ć” Gopher Ć¤Ć„Ć ĆµĆ°ĆÆĆ³Ć“Ć§Ć±ĆƦƄƓƔƩ.
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_URN_RESOLVE
+diff -c /dev/null squid/errors/Greek/ERR_URN_RESOLVE:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_URN_RESOLVE Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,23 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆĆ”Ć“Ć Ć“Ć§ ƤƩĆƱĆŖĆ„Ć©Ć” Ć„Ć½Ć±Ć„Ć³Ć§Ć² Ć“ĆÆƵ ĆÆĆĆ¼Ć¬Ć”Ć“ĆÆĆ² (URN):
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ¤Ć½ĆƔƓƧ Ƨ Ć„Ć½Ć±Ć„Ć³Ć§ Ć“ĆÆƵ ĆÆĆĆ¼Ć¬Ć”Ć“ĆÆĆ²
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆ„Ć“Ć”Ć®Ć½ Ć¬Ć”Ć², Ć¬Ć§Ć Ć°Ć„Ć±Ć©Ć¬ĆĆĆ„Ć“Ć„ ĆŖƔƩ Ć°ĆÆĆ«Ć«Ć Ć”Ć°Ć¼ URNs Ć³Ć“ĆÆ %T :)
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/ERR_WRITE_ERROR
+diff -c /dev/null squid/errors/Greek/ERR_WRITE_ERROR:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_WRITE_ERROR Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,28 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <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>.
+Index: squid/errors/Greek/ERR_ZERO_SIZE_OBJECT
+diff -c /dev/null squid/errors/Greek/ERR_ZERO_SIZE_OBJECT:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/ERR_ZERO_SIZE_OBJECT Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,23 ----
++ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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-7">
++ <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>
++ ĆƓƧ ưƱĆÆĆ³Ć°ĆĆØĆ„Ć©Ć” Ć°Ć±Ć¼Ć³Ć¢Ć”Ć³Ć§Ć² Ć³Ć“Ć§ Ć¤Ć©Ć„Ć½ĆØƵĆĆ³Ć§:
++ <A HREF="%U">%U</A>
++ <P>
++ ĆƱĆÆĆĆŖƵĆøĆ„ Ć“ĆÆ Ć”ĆŖĆ¼Ć«ĆÆƵĆØĆÆ Ć³Ć¶ĆƫƬƔ:
++ <UL>
++ <LI>
++ <STRONG>
++ ĆĆ°ĆĆĆ“Ć§Ć³Ć§ ĆƧƤƄĆĆ©ĆŖĆÆĆ½ ĆĆ„Ć£ĆĆØĆÆĆµĆ²
++ </STRONG>
++ </UL>
++
++ <P>
++ ĆĆÆ Squid Ć¤Ć„Ć ĆĆ«Ć”Ć¢Ć„ ƤƄƤĆÆƬĆĆĆ” Ć£Ć©Ć” Ć”ĆµĆ“Ć¼ Ć“ĆÆ Ć”ĆƓƧƬƔ.
++ <P>Ć Ć¤Ć©Ć”Ć·Ć„Ć©Ć±Ć©Ć³Ć“ĆĆ² Ć“ĆÆƵ Ć¬Ć„Ć³ĆÆĆ«Ć”Ć¢Ć§Ć“Ć Ć³Ć”Ć² Ć„ĆĆƔƩ ĆÆ <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Greek/README
+diff -c /dev/null squid/errors/Greek/README:1.1.2.1
+*** /dev/null Thu Sep 1 16:39:57 2005
+--- squid/errors/Greek/README Thu Sep 1 16:37:30 2005
+***************
+*** 0 ****
+--- 1,2 ----
++ Thank you to George Papamichelakis <george@step.gr>
++ for creating these error pages in Greek!
--- /dev/null
+Index: squid/src/cache_manager.c
+diff -c squid/src/cache_manager.c:1.26.2.1 squid/src/cache_manager.c:1.26.2.2
+*** squid/src/cache_manager.c:1.26.2.1 Thu Sep 1 16:14:45 2005
+--- squid/src/cache_manager.c Thu Sep 1 16:42:03 2005
+***************
+*** 251,258 ****
+ /* retrieve object requested */
+ a = cachemgrFindAction(mgr->action);
+ assert(a != NULL);
+! if (a->flags.atomic)
+! storeBuffer(entry);
+ {
+ http_version_t version;
+ HttpReply *rep = entry->mem_obj->reply;
+--- 251,257 ----
+ /* retrieve object requested */
+ a = cachemgrFindAction(mgr->action);
+ assert(a != NULL);
+! storeBuffer(entry);
+ {
+ http_version_t version;
+ HttpReply *rep = entry->mem_obj->reply;
+***************
+*** 270,279 ****
+ httpReplySwapOut(rep, entry);
+ }
+ a->handler(entry);
+! if (a->flags.atomic) {
+! storeBufferFlush(entry);
+ storeComplete(entry);
+- }
+ cachemgrStateFree(mgr);
+ }
+
+--- 269,277 ----
+ httpReplySwapOut(rep, entry);
+ }
+ a->handler(entry);
+! storeBufferFlush(entry);
+! if (a->flags.atomic)
+ storeComplete(entry);
+ cachemgrStateFree(mgr);
+ }
+
+Index: squid/src/ftp.c
+diff -c squid/src/ftp.c:1.316.2.30 squid/src/ftp.c:1.316.2.31
+*** squid/src/ftp.c:1.316.2.30 Thu Sep 1 16:28:29 2005
+--- squid/src/ftp.c Thu Sep 1 16:42:03 2005
+***************
+*** 369,375 ****
+ char *dirup;
+ int i, j, k;
+ const char *title = strBuf(ftpState->title_url);
+- storeBuffer(e);
+ storeAppendPrintf(e, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
+ storeAppendPrintf(e, "<!-- HTML listing generated by Squid %s -->\n",
+ version_string);
+--- 369,374 ----
+***************
+*** 429,435 ****
+ storeAppendPrintf(e, "<PRE>\n");
+ dirup = ftpHtmlifyListEntry("<internal-dirup>", ftpState);
+ storeAppend(e, dirup, strlen(dirup));
+- storeBufferFlush(e);
+ ftpState->flags.html_header_sent = 1;
+ }
+
+--- 428,433 ----
+***************
+*** 437,443 ****
+ ftpListingFinish(FtpStateData * ftpState)
+ {
+ StoreEntry *e = ftpState->entry;
+- storeBuffer(e);
+ storeAppendPrintf(e, "</PRE>\n");
+ if (ftpState->flags.listformat_unknown && !ftpState->flags.tried_nlst) {
+ storeAppendPrintf(e, "<A HREF=\"%s/;type=d\">[As plain directory]</A>\n",
+--- 435,440 ----
+***************
+*** 453,459 ****
+ getMyHostname(),
+ full_appname_string);
+ storeAppendPrintf(e, "</ADDRESS></BODY></HTML>\n");
+- storeBufferFlush(e);
+ }
+
+ static const char *Month[] =
+--- 450,455 ----
+***************
+*** 869,875 ****
+ debug(9, 3) ("ftpParseListing: %d bytes to play with\n", (int) len);
+ line = memAllocate(MEM_4K_BUF);
+ end++;
+! storeBuffer(e);
+ s = sbuf;
+ s += strspn(s, crlf);
+ for (; s < end; s += strcspn(s, crlf), s += strspn(s, crlf)) {
+--- 865,871 ----
+ debug(9, 3) ("ftpParseListing: %d bytes to play with\n", (int) len);
+ line = memAllocate(MEM_4K_BUF);
+ end++;
+! storeBuffer(e); /* released when done processing current data payload */
+ s = sbuf;
+ s += strspn(s, crlf);
+ for (; s < end; s += strcspn(s, crlf), s += strspn(s, crlf)) {
+***************
+*** 887,893 ****
+ assert(t != NULL);
+ storeAppend(e, t, strlen(t));
+ }
+- storeBufferFlush(e);
+ assert(usable <= len);
+ if (usable < len) {
+ /* must copy partial line to beginning of buf */
+--- 883,888 ----
+***************
+*** 992,997 ****
+--- 987,993 ----
+ storeAppend(entry, ftpState->data.buf, len);
+ ftpState->data.offset = 0;
+ }
++ storeBufferFlush(entry);
+ commSetSelect(fd,
+ COMM_SELECT_READ,
+ ftpDataRead,
+***************
+*** 2544,2550 ****
+ else
+ err->ftp.reply = xstrdup("");
+ errorAppendEntry(ftpState->entry, err);
+- storeBufferFlush(ftpState->entry);
+ ftpSendQuit(ftpState);
+ }
+
+--- 2540,2545 ----
+***************
+*** 2565,2570 ****
+--- 2560,2566 ----
+ ftpState->flags.http_header_sent = 1;
+ assert(e->mem_obj->inmem_hi == 0);
+ EBIT_CLR(e->flags, ENTRY_FWD_HDR_WAIT);
++ storeBuffer(e); /* released when done processing current data payload */
+ filename = (t = strRChr(urlpath, '/')) ? t + 1 : strBuf(urlpath);
+ if (ftpState->flags.isdir) {
+ mime_type = "text/html";
+***************
+*** 2583,2589 ****
+ break;
+ }
+ }
+- storeBuffer(e);
+ httpReplyReset(reply);
+ /* set standard stuff */
+ if (ftpState->restarted_offset) {
+--- 2579,2584 ----
+***************
+*** 2605,2611 ****
+ if (mime_enc)
+ httpHeaderPutStr(&reply->header, HDR_CONTENT_ENCODING, mime_enc);
+ httpReplySwapOut(reply, e);
+- storeBufferFlush(e);
+ reply->hdr_sz = e->mem_obj->inmem_hi;
+ storeTimestampsSet(e);
+ if (ftpState->flags.authenticated) {
+--- 2600,2605 ----
+Index: squid/src/gopher.c
+diff -c squid/src/gopher.c:1.162.2.9 squid/src/gopher.c:1.162.2.10
+*** squid/src/gopher.c:1.162.2.9 Thu Sep 1 16:14:45 2005
+--- squid/src/gopher.c Thu Sep 1 16:42:03 2005
+***************
+*** 721,749 ****
+ * OK. We successfully reach remote site. Start MIME typing
+ * stuff. Do it anyway even though request is not HTML type.
+ */
+ gopherMimeCreate(gopherState);
+ switch (gopherState->type_id) {
+ case GOPHER_DIRECTORY:
+ /* we got to convert it first */
+- storeBuffer(entry);
+ gopherState->conversion = HTML_DIR;
+ gopherState->HTML_header_added = 0;
+ break;
+ case GOPHER_INDEX:
+ /* we got to convert it first */
+- storeBuffer(entry);
+ gopherState->conversion = HTML_INDEX_RESULT;
+ gopherState->HTML_header_added = 0;
+ break;
+ case GOPHER_CSO:
+ /* we got to convert it first */
+- storeBuffer(entry);
+ gopherState->conversion = HTML_CSO_RESULT;
+ gopherState->cso_recno = 0;
+ gopherState->HTML_header_added = 0;
+ break;
+ default:
+ gopherState->conversion = NORMAL;
+ }
+ /* Schedule read reply. */
+ commSetSelect(fd, COMM_SELECT_READ, gopherReadReply, gopherState, 0);
+--- 721,748 ----
+ * OK. We successfully reach remote site. Start MIME typing
+ * stuff. Do it anyway even though request is not HTML type.
+ */
++ storeBuffer(entry);
+ gopherMimeCreate(gopherState);
+ switch (gopherState->type_id) {
+ case GOPHER_DIRECTORY:
+ /* we got to convert it first */
+ gopherState->conversion = HTML_DIR;
+ gopherState->HTML_header_added = 0;
+ break;
+ case GOPHER_INDEX:
+ /* we got to convert it first */
+ gopherState->conversion = HTML_INDEX_RESULT;
+ gopherState->HTML_header_added = 0;
+ break;
+ case GOPHER_CSO:
+ /* we got to convert it first */
+ gopherState->conversion = HTML_CSO_RESULT;
+ gopherState->cso_recno = 0;
+ gopherState->HTML_header_added = 0;
+ break;
+ default:
+ gopherState->conversion = NORMAL;
++ storeBufferFlush(entry);
+ }
+ /* Schedule read reply. */
+ commSetSelect(fd, COMM_SELECT_READ, gopherReadReply, gopherState, 0);
+Index: squid/src/store.c
+diff -c squid/src/store.c:1.544.2.8 squid/src/store.c:1.544.2.9
+*** squid/src/store.c:1.544.2.8 Fri Mar 25 19:50:53 2005
+--- squid/src/store.c Thu Sep 1 16:42:03 2005
+***************
+*** 1232,1240 ****
+ void
+ storeBufferFlush(StoreEntry * e)
+ {
+! EBIT_CLR(e->flags, DELAY_SENDING);
+! InvokeHandlers(e);
+! storeSwapOut(e);
+ }
+
+ squid_off_t
+--- 1232,1242 ----
+ void
+ storeBufferFlush(StoreEntry * e)
+ {
+! if (EBIT_TEST(e->flags, DELAY_SENDING)) {
+! EBIT_CLR(e->flags, DELAY_SENDING);
+! InvokeHandlers(e);
+! storeSwapOut(e);
+! }
+ }
+
+ squid_off_t
+Index: squid/src/whois.c
+diff -c squid/src/whois.c:1.16.2.1 squid/src/whois.c:1.16.2.2
+*** squid/src/whois.c:1.16.2.1 Thu Sep 1 16:14:45 2005
+--- squid/src/whois.c Thu Sep 1 16:42:03 2005
+***************
+*** 97,108 ****
+ debug(75, 3) ("whoisReadReply: FD %d read %d bytes\n", fd, len);
+ debug(75, 5) ("{%s}\n", buf);
+ if (len > 0) {
+! if (0 == mem->inmem_hi)
+! mem->reply->sline.status = HTTP_OK;
+ fd_bytes(fd, len, FD_READ);
+ kb_incr(&statCounter.server.all.kbytes_in, len);
+ kb_incr(&statCounter.server.http.kbytes_in, len);
+ storeAppend(entry, buf, len);
+ commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p, Config.Timeout.read);
+ } else if (len < 0) {
+ debug(50, 2) ("whoisReadReply: FD %d: read failure: %s.\n",
+--- 97,115 ----
+ debug(75, 3) ("whoisReadReply: FD %d read %d bytes\n", fd, len);
+ debug(75, 5) ("{%s}\n", buf);
+ if (len > 0) {
+! if (0 == mem->inmem_hi) {
+! http_reply *reply = mem->reply;
+! http_version_t version;
+! storeBuffer(entry);
+! httpBuildVersion(&version, 1, 0);
+! httpReplySetHeaders(reply, version, HTTP_OK, "Gatewaying", "text/plain", -1, -1, -2);
+! httpReplySwapOut(reply, entry);
+! }
+ fd_bytes(fd, len, FD_READ);
+ kb_incr(&statCounter.server.all.kbytes_in, len);
+ kb_incr(&statCounter.server.http.kbytes_in, len);
+ storeAppend(entry, buf, len);
++ storeBufferFlush(entry);
+ commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p, Config.Timeout.read);
+ } else if (len < 0) {
+ debug(50, 2) ("whoisReadReply: FD %d: read failure: %s.\n",
--- /dev/null
+Index: squid/configure.in
+diff -c squid/configure.in:1.251.2.94 squid/configure.in:1.251.2.95
+*** squid/configure.in:1.251.2.94 Thu Aug 4 05:38:33 2005
+--- squid/configure.in Sat Sep 3 02:20:40 2005
+***************
+*** 822,827 ****
+--- 822,843 ----
+ CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
+ LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
+ LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
++ 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
++ case "$host" in
++ *-solaris*)
++ if test "$GCC" = "yes"; then
++ echo "Removing -Xa for gcc on $host"
++ CFLAGS="`echo $CFLAGS | sed -e 's/-Xa//'`"
++ fi
++ echo "Removing -Usun for gcc on $host"
++ CFLAGS="`echo $CFLAGS | sed -e 's/-Usun//'`"
++ ;;
++ *)
++ ;;
++ esac
+ fi
+
+ AM_CONDITIONAL(MAKE_LEAKFINDER, false)
+***************
+*** 1934,1939 ****
+--- 1950,1966 ----
+ echo "WARNING: Cannot find necessary IP-Filter header files"
+ echo " Transparent Proxy support WILL NOT be enabled"
+ sleep 10
++ elif test "$IPF_TRANSPARENT" = "yes" ; then
++ dnl On Solaris Ipfilter includes expect that SOLARIS2 is defined with the
++ dnl Solaris minor version (8, 9, 10, ...)
++ case "$host" in
++ *-solaris*)
++ solrev=`uname -r | sh -c 'IFS=. read j n x; echo $n'`
++ CFLAGS="-DSOLARIS2=$solrev $CFLAGS"
++ ;;
++ *)
++ ;;
++ esac
+ fi
+
+ dnl PF support requires a header file.
--- /dev/null
+Index: squid/src/client_side.c
+diff -c squid/src/client_side.c:1.561.2.80 squid/src/client_side.c:1.561.2.82
+*** squid/src/client_side.c:1.561.2.80 Thu Jun 30 02:38:00 2005
+--- squid/src/client_side.c Fri Aug 19 03:17:55 2005
+***************
+*** 41,46 ****
+--- 41,60 ----
+ #endif
+ #include <netinet/tcp.h>
+ #include <net/if.h>
++ /* SG - 14 Aug 2005
++ * Workaround needed to allow the build of both ipfilter and ARP acl
++ * support on Solaris x86.
++ *
++ * Some defines, like
++ * #define free +
++ * are used in squid.h to block misuse of standard malloc routines
++ * where the Squid versions should be used. This pollutes the C/C++
++ * token namespace crashing any structures or classes having members
++ * of the same names.
++ */
++ #ifdef _SQUID_SOLARIS_
++ #undef free
++ #endif
+ #if HAVE_IP_FIL_COMPAT_H
+ #include <ip_fil_compat.h>
+ #elif HAVE_NETINET_IP_FIL_COMPAT_H
--- /dev/null
+Index: squid/configure.in
+diff -c squid/configure.in:1.251.2.92 squid/configure.in:1.251.2.93
+*** squid/configure.in:1.251.2.92 Mon May 16 16:38:57 2005
+--- squid/configure.in Sun Jul 10 18:39:22 2005
+***************
+*** 786,801 ****
+ XBS5_LP64_OFF64 64 bits (legacy)
+ XBS5_LPBIG_OFFBIG large pointers and files (legacy)
+ default The default for your OS],
+! [ case "$enableval" in
+ yes|no)
+ echo "--with-build-environment expects a build environment string as used by getconf"
+ exit 1
+ ;;
+- _*)
+- buildmodel="$enableval"
+- ;;
+ *)
+! buildmodel="_$enableval"
+ ;;
+ esac
+ ])
+--- 786,798 ----
+ XBS5_LP64_OFF64 64 bits (legacy)
+ XBS5_LPBIG_OFFBIG large pointers and files (legacy)
+ default The default for your OS],
+! [ case "$withval" in
+ yes|no)
+ echo "--with-build-environment expects a build environment string as used by getconf"
+ exit 1
+ ;;
+ *)
+! buildmodel="$withval"
+ ;;
+ esac
+ ])
+***************
+*** 813,820 ****
+ CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
+ fi
+ fi
+! if test -n "$buildmodel" && test "$buildmodel" != "_default"; then
+ echo "Using $buildmodel build environment"
+ CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
+ LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
+ LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
+--- 810,823 ----
+ CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
+ 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
++ fi
+ CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
+ LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
+ LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
+Index: squid/configure
+diff -c squid/configure:1.248.2.94 squid/configure:1.248.2.95
+*** squid/configure:1.248.2.94 Mon May 16 16:39:29 2005
+--- squid/configure Sun Jul 10 18:40:15 2005
+***************
+*** 2637,2652 ****
+ # Check whether --with-build-environment or --without-build-environment was given.
+ if test "${with_build_environment+set}" = set; then
+ withval="$with_build_environment"
+! case "$enableval" in
+ yes|no)
+ echo "--with-build-environment expects a build environment string as used by getconf"
+ exit 1
+ ;;
+- _*)
+- buildmodel="$enableval"
+- ;;
+ *)
+! buildmodel="_$enableval"
+ ;;
+ esac
+
+--- 2637,2649 ----
+ # Check whether --with-build-environment or --without-build-environment was given.
+ if test "${with_build_environment+set}" = set; then
+ withval="$with_build_environment"
+! case "$withval" in
+ yes|no)
+ echo "--with-build-environment expects a build environment string as used by getconf"
+ exit 1
+ ;;
+ *)
+! buildmodel="$withval"
+ ;;
+ esac
+
+***************
+*** 2666,2673 ****
+ CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
+ fi
+ fi
+! if test -n "$buildmodel" && test "$buildmodel" != "_default"; then
+ echo "Using $buildmodel build environment"
+ CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
+ LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
+ LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
+--- 2663,2676 ----
+ CFLAGS="-D_FILE_OFFSET_BITS=64 $CFLAGS"
+ 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
++ fi
+ CFLAGS="`getconf ${buildmodel}_CFLAGS` $CFLAGS"
+ LIBS="`getconf ${buildmodel}_LIBS` $LIBS"
+ LDFLAGS="`getconf ${buildmodel}_LDFLAGS` $LDFLAGS"
--- /dev/null
+Index: squid/src/client_db.c
+diff -c squid/src/client_db.c:1.53.2.5 squid/src/client_db.c:1.53.2.6
+*** squid/src/client_db.c:1.53.2.5 Fri Mar 25 19:50:52 2005
+--- squid/src/client_db.c Thu Sep 1 16:54:41 2005
+***************
+*** 328,334 ****
+ snmp_meshCtblFn(variable_list * Var, snint * ErrP)
+ {
+ variable_list *Answer = NULL;
+! static char key[15];
+ ClientInfo *c = NULL;
+ int aggr = 0;
+ log_type l;
+--- 328,334 ----
+ snmp_meshCtblFn(variable_list * Var, snint * ErrP)
+ {
+ variable_list *Answer = NULL;
+! static char key[16];
+ ClientInfo *c = NULL;
+ int aggr = 0;
+ log_type l;
--- /dev/null
+Index: squid/src/cache_cf.c
+diff -c squid/src/cache_cf.c:1.396.2.27 squid/src/cache_cf.c:1.396.2.28
+*** squid/src/cache_cf.c:1.396.2.27 Mon Jun 13 16:26:21 2005
+--- squid/src/cache_cf.c Sun Jun 19 03:36:33 2005
+***************
+*** 1300,1344 ****
+ if ((path_str = strtok(NULL, w_space)) == NULL)
+ self_destruct();
+
+! /*
+! * This bit of code is a little strange.
+! * See, if we find a path and type match for a given line, then
+! * as long as we're reconfiguring, we can just call its reconfigure
+! * function. No harm there.
+! *
+! * Trouble is, if we find a path match, but not a type match, we have
+! * a dilemma - we could gracefully shut down the fs, kill it, and
+! * create a new one of a new type in its place, BUT at this stage the
+! * fs is meant to be the *NEW* one, and so things go very strange. :-)
+! *
+! * So, we'll assume the person isn't going to change the fs type for now,
+! * and XXX later on we will make sure that its picked up.
+! *
+! * (moving around cache_dir lines will be looked at later in a little
+! * more sane detail..)
+! */
+
+ for (i = 0; i < swap->n_configured; i++) {
+! if (0 == strcasecmp(path_str, swap->swapDirs[i].path)) {
+! /* This is a little weird, you'll appreciate it later */
+! fs = find_fstype(type_str);
+! if (fs < 0) {
+! fatalf("Unknown cache_dir type '%s'\n", type_str);
+! }
+ sd = swap->swapDirs + i;
+ storefs_list[fs].reconfigurefunc(sd, i, path_str);
+ update_maxobjsize();
+ return;
+ }
+ }
+
+ assert(swap->n_configured < 63); /* 7 bits, signed */
+
+- fs = find_fstype(type_str);
+- if (fs < 0) {
+- /* If we get here, we didn't find a matching cache_dir type */
+- fatalf("Unknown cache_dir type '%s'\n", type_str);
+- }
+ allocate_new_swapdir(swap);
+ sd = swap->swapDirs + swap->n_configured;
+ sd->type = storefs_list[fs].typestr;
+--- 1300,1326 ----
+ if ((path_str = strtok(NULL, w_space)) == NULL)
+ self_destruct();
+
+! fs = find_fstype(type_str);
+! if (fs < 0)
+! self_destruct();
+
++ /* reconfigure existing dir */
+ for (i = 0; i < swap->n_configured; i++) {
+! if ((strcasecmp(path_str, swap->swapDirs[i].path) == 0)) {
+ sd = swap->swapDirs + i;
++ if (sd->type != storefs_list[fs].typestr) {
++ debug(3, 0) ("ERROR: Can't change type of existing cache_dir %s %s to %s. Restart required\n", sd->type, sd->path, type_str);
++ return;
++ }
+ storefs_list[fs].reconfigurefunc(sd, i, path_str);
+ update_maxobjsize();
+ return;
+ }
+ }
+
++ /* new cache_dir */
+ assert(swap->n_configured < 63); /* 7 bits, signed */
+
+ allocate_new_swapdir(swap);
+ sd = swap->swapDirs + swap->n_configured;
+ sd->type = storefs_list[fs].typestr;
--- /dev/null
+Index: squid/src/cache_cf.c
+diff -c squid/src/cache_cf.c:1.396.2.26 squid/src/cache_cf.c:1.396.2.27
+*** squid/src/cache_cf.c:1.396.2.26 Fri May 6 16:33:53 2005
+--- squid/src/cache_cf.c Mon Jun 13 16:26:21 2005
+***************
+*** 299,306 ****
+ }
+ fclose(fp);
+ defaults_if_none();
+ if (opt_send_signal == -1) {
+- configDoConfigure();
+ cachemgrRegister("config",
+ "Current Squid Configuration",
+ dump_config,
+--- 299,306 ----
+ }
+ fclose(fp);
+ defaults_if_none();
++ configDoConfigure();
+ if (opt_send_signal == -1) {
+ cachemgrRegister("config",
+ "Current Squid Configuration",
+ dump_config,
+***************
+*** 2567,2574 ****
+ snprintf(pathbuf, BUFSIZ, "%s/%s", Config.chroot_dir, path);
+ path = pathbuf;
+ }
+! if (stat(path, &sb) < 0)
+! fatalf("%s %s: %s", name, path, xstrerror());
+ }
+
+ char *
+--- 2567,2578 ----
+ snprintf(pathbuf, BUFSIZ, "%s/%s", Config.chroot_dir, path);
+ path = pathbuf;
+ }
+! if (stat(path, &sb) < 0) {
+! if (opt_send_signal == -1 || opt_send_signal == SIGHUP)
+! fatalf("%s %s: %s", name, path, xstrerror());
+! else
+! fprintf(stderr, "WARNING: %s %s: %s\n", name, path, xstrerror());
+! }
+ }
+
+ char *
+Index: squid/src/globals.h
+diff -c squid/src/globals.h:1.108.2.6 squid/src/globals.h:1.108.2.7
+*** squid/src/globals.h:1.108.2.6 Wed Apr 20 15:52:26 2005
+--- squid/src/globals.h Mon Jun 13 16:26:21 2005
+***************
+*** 166,170 ****
+--- 166,171 ----
+ extern void *sbrk_start; /* 0 */
+ #endif
+ extern int opt_send_signal; /* -1 */
++ extern int opt_no_daemon; /* 0 */
+
+ #endif /* SQUID_GLOBALS_H */
+Index: squid/src/main.c
+diff -c squid/src/main.c:1.345.2.25 squid/src/main.c:1.345.2.27
+*** squid/src/main.c:1.345.2.25 Wed Apr 20 15:52:26 2005
+--- squid/src/main.c Mon Jun 27 15:24:28 2005
+***************
+*** 38,44 ****
+ /* for error reporting from xmalloc and friends */
+ extern void (*failure_notify) (const char *);
+
+- static int opt_no_daemon = 0;
+ static int opt_parse_cfg_only = 0;
+ static char *opt_syslog_facility = NULL;
+ static int httpPortNumOverride = 1;
+--- 38,43 ----
+***************
+*** 684,691 ****
+ /* send signal to running copy and exit */
+ if (opt_send_signal != -1) {
+ /* chroot if configured to run inside chroot */
+! if (Config.chroot_dir && chroot(Config.chroot_dir)) {
+! fatal("failed to chroot");
+ }
+ sendSignal();
+ /* NOTREACHED */
+--- 683,694 ----
+ /* send signal to running copy and exit */
+ if (opt_send_signal != -1) {
+ /* chroot if configured to run inside chroot */
+! if (Config.chroot_dir) {
+! if (chroot(Config.chroot_dir))
+! fatal("failed to chroot");
+! no_suid();
+! } else {
+! leave_suid();
+ }
+ sendSignal();
+ /* NOTREACHED */
+Index: squid/src/tools.c
+diff -c squid/src/tools.c:1.213.2.15 squid/src/tools.c:1.213.2.16
+*** squid/src/tools.c:1.213.2.15 Fri Apr 22 14:45:12 2005
+--- squid/src/tools.c Mon Jun 13 16:26:22 2005
+***************
+*** 491,497 ****
+ if (strchr(host, '.'))
+ return host;
+ }
+! fatal("Could not determine fully qualified hostname. Please set 'visible_hostname'\n");
+ return NULL; /* keep compiler happy */
+ }
+
+--- 491,500 ----
+ if (strchr(host, '.'))
+ return host;
+ }
+! if (opt_send_signal == -1)
+! fatal("Could not determine fully qualified hostname. Please set 'visible_hostname'\n");
+! else
+! return ("localhost");
+ return NULL; /* keep compiler happy */
+ }
+
--- /dev/null
+Index: squid/src/cache_cf.c
+diff -c squid/src/cache_cf.c:1.396.2.28 squid/src/cache_cf.c:1.396.2.29
+*** squid/src/cache_cf.c:1.396.2.28 Sun Jun 19 03:36:33 2005
+--- squid/src/cache_cf.c Thu Sep 1 16:04:51 2005
+***************
+*** 2545,2551 ****
+ struct stat sb;
+ char pathbuf[BUFSIZ];
+ assert(path != NULL);
+! if (Config.chroot_dir) {
+ snprintf(pathbuf, BUFSIZ, "%s/%s", Config.chroot_dir, path);
+ path = pathbuf;
+ }
+--- 2545,2551 ----
+ struct stat sb;
+ char pathbuf[BUFSIZ];
+ assert(path != NULL);
+! if (Config.chroot_dir && (geteuid() == 0)) {
+ snprintf(pathbuf, BUFSIZ, "%s/%s", Config.chroot_dir, path);
+ path = pathbuf;
+ }
--- /dev/null
+Index: squid/src/HttpHeader.c
+diff -c squid/src/HttpHeader.c:1.74.2.28 squid/src/HttpHeader.c:1.74.2.29
+*** squid/src/HttpHeader.c:1.74.2.28 Fri May 6 15:32:09 2005
+--- squid/src/HttpHeader.c Wed May 25 16:57:33 2005
+***************
+*** 475,483 ****
+ }
+ if (e->id == HDR_CONTENT_LENGTH && (e2 = httpHeaderFindEntry(hdr, e->id)) != NULL) {
+ if (strCmp(e->value, strBuf(e2->value)) != 0) {
+! debug(55, 1) ("WARNING: found two conflicting content-length headers in {%s}\n", getStringPrefix(header_start, header_end));
+! httpHeaderEntryDestroy(e);
+! return httpHeaderReset(hdr);
+ } else {
+ debug(55, Config.onoff.relaxed_header_parser <= 0 ? 1 : 2)
+ ("NOTICE: found double content-length header\n");
+--- 475,499 ----
+ }
+ if (e->id == HDR_CONTENT_LENGTH && (e2 = httpHeaderFindEntry(hdr, e->id)) != NULL) {
+ if (strCmp(e->value, strBuf(e2->value)) != 0) {
+! squid_off_t l1, l2;
+! debug(55, Config.onoff.relaxed_header_parser <= 0 ? 1 : 2) ("WARNING: found two conflicting content-length headers in {%s}\n", getStringPrefix(header_start, header_end));
+! if (!Config.onoff.relaxed_header_parser) {
+! httpHeaderEntryDestroy(e);
+! return httpHeaderReset(hdr);
+! }
+! if (!httpHeaderParseSize(strBuf(e->value), &l1)) {
+! debug(55, 1) ("WARNING: Unparseable content-length '%s'\n", strBuf(e->value));
+! httpHeaderEntryDestroy(e);
+! continue;
+! } else if (!httpHeaderParseSize(strBuf(e2->value), &l2)) {
+! debug(55, 1) ("WARNING: Unparseable content-length '%s'\n", strBuf(e2->value));
+! httpHeaderDelById(hdr, e2->id);
+! } else if (l1 > l2) {
+! httpHeaderDelById(hdr, e2->id);
+! } else {
+! httpHeaderEntryDestroy(e);
+! continue;
+! }
+ } else {
+ debug(55, Config.onoff.relaxed_header_parser <= 0 ? 1 : 2)
+ ("NOTICE: found double content-length header\n");
--- /dev/null
+Index: squid/src/cache_manager.c
+diff -c squid/src/cache_manager.c:1.26 squid/src/cache_manager.c:1.26.2.1
+*** squid/src/cache_manager.c:1.26 Fri Feb 23 13:59:50 2001
+--- squid/src/cache_manager.c Thu Sep 1 16:14:45 2005
+***************
+*** 201,206 ****
+--- 201,207 ----
+ if ((mgr = cachemgrParseUrl(storeUrl(entry))) == NULL) {
+ err = errorCon(ERR_INVALID_URL, HTTP_NOT_FOUND);
+ err->url = xstrdup(storeUrl(entry));
++ err->request = requestLink(request);
+ errorAppendEntry(entry, err);
+ entry->expires = squid_curtime;
+ return;
+Index: squid/src/forward.c
+diff -c squid/src/forward.c:1.82.2.15 squid/src/forward.c:1.82.2.16
+*** squid/src/forward.c:1.82.2.15 Fri Mar 25 19:50:53 2005
+--- squid/src/forward.c Thu Sep 1 16:14:45 2005
+***************
+*** 236,242 ****
+ request->host);
+ err = errorCon(ERR_DNS_FAIL, HTTP_SERVICE_UNAVAILABLE);
+ err->dnsserver_msg = xstrdup(dns_error_message);
+- err->request = requestLink(request);
+ fwdFail(fwdState, err);
+ comm_close(server_fd);
+ } else if (status != COMM_OK) {
+--- 236,241 ----
+***************
+*** 250,256 ****
+ err->host = xstrdup(request->host);
+ err->port = request->port;
+ }
+- err->request = requestLink(request);
+ fwdFail(fwdState, err);
+ if (fs->peer)
+ peerConnectFailed(fs->peer);
+--- 249,254 ----
+***************
+*** 282,288 ****
+ assert(fd == fwdState->server_fd);
+ if (entry->mem_obj->inmem_hi == 0) {
+ err = errorCon(ERR_CONNECT_FAIL, HTTP_GATEWAY_TIMEOUT);
+- err->request = requestLink(fwdState->request);
+ err->xerrno = ETIMEDOUT;
+ fwdFail(fwdState, err);
+ /*
+--- 280,285 ----
+***************
+*** 420,426 ****
+ debug(50, 4) ("fwdConnectStart: %s\n", xstrerror());
+ err = errorCon(ERR_SOCKET_FAILURE, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+- err->request = requestLink(fwdState->request);
+ fwdFail(fwdState, err);
+ fwdStateFree(fwdState);
+ return;
+--- 417,422 ----
+***************
+*** 466,472 ****
+ ErrorState *err;
+ debug(17, 3) ("fwdStartFail: %s\n", storeUrl(fwdState->entry));
+ err = errorCon(ERR_CANNOT_FORWARD, HTTP_SERVICE_UNAVAILABLE);
+- err->request = requestLink(fwdState->request);
+ err->xerrno = errno;
+ fwdFail(fwdState, err);
+ fwdStateFree(fwdState);
+--- 462,467 ----
+***************
+*** 525,531 ****
+ debug(17, 1) ("fwdDispatch: Cannot retrieve '%s'\n",
+ storeUrl(entry));
+ err = errorCon(ERR_UNSUP_REQ, HTTP_BAD_REQUEST);
+- err->request = requestLink(request);
+ fwdFail(fwdState, err);
+ /*
+ * Force a persistent connection to be closed because
+--- 520,525 ----
+***************
+*** 710,716 ****
+ void
+ fwdFail(FwdState * fwdState, ErrorState * errorState)
+ {
+- assert(EBIT_TEST(fwdState->entry->flags, ENTRY_FWD_HDR_WAIT));
+ debug(17, 3) ("fwdFail: %s \"%s\"\n\t%s\n",
+ err_type_str[errorState->type],
+ httpStatusString(errorState->http_status),
+--- 704,709 ----
+***************
+*** 718,723 ****
+--- 711,718 ----
+ if (fwdState->err)
+ errorStateFree(fwdState->err);
+ fwdState->err = errorState;
++ if (!errorState->request)
++ errorState->request = requestLink(fwdState->request);
+ }
+
+ /*
+Index: squid/src/ftp.c
+diff -c squid/src/ftp.c:1.316.2.28 squid/src/ftp.c:1.316.2.29
+*** squid/src/ftp.c:1.316.2.28 Wed Jun 22 04:42:34 2005
+--- squid/src/ftp.c Thu Sep 1 16:14:45 2005
+***************
+*** 2491,2497 ****
+ if (err == NULL)
+ err = errorCon(ERR_FTP_FAILURE, HTTP_BAD_GATEWAY);
+ err->xerrno = errno;
+- err->request = requestLink(ftpState->request);
+ err->ftp.server_msg = ftpState->ctrl.message;
+ ftpState->ctrl.message = NULL;
+ if (ftpState->old_request)
+--- 2491,2496 ----
+Index: squid/src/gopher.c
+diff -c squid/src/gopher.c:1.162.2.8 squid/src/gopher.c:1.162.2.9
+*** squid/src/gopher.c:1.162.2.8 Tue Jan 11 23:04:01 2005
+--- squid/src/gopher.c Thu Sep 1 16:14:45 2005
+***************
+*** 603,614 ****
+ GopherStateData *gopherState = data;
+ StoreEntry *entry = gopherState->entry;
+ debug(10, 4) ("gopherTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
+! if (entry->store_status == STORE_PENDING) {
+! if (entry->mem_obj->inmem_hi == 0) {
+! fwdFail(gopherState->fwdState,
+! errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
+! }
+! }
+ comm_close(fd);
+ }
+
+--- 603,610 ----
+ GopherStateData *gopherState = data;
+ StoreEntry *entry = gopherState->entry;
+ debug(10, 4) ("gopherTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
+! fwdFail(gopherState->fwdState,
+! errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
+ comm_close(fd);
+ }
+
+***************
+*** 660,681 ****
+ debug(50, 1) ("gopherReadReply: error reading: %s\n", xstrerror());
+ if (ignoreErrno(errno)) {
+ commSetSelect(fd, COMM_SELECT_READ, gopherReadReply, data, 0);
+! } else if (entry->mem_obj->inmem_hi == 0) {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+! err->url = xstrdup(storeUrl(entry));
+! errorAppendEntry(entry, err);
+! comm_close(fd);
+! } else {
+ comm_close(fd);
+ }
+ } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+! ErrorState *err;
+! err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE);
+! err->xerrno = errno;
+! err->url = xstrdup(gopherState->request);
+! errorAppendEntry(entry, err);
+ comm_close(fd);
+ } else if (len == 0) {
+ /* Connection closed; retrieval done. */
+--- 656,670 ----
+ debug(50, 1) ("gopherReadReply: error reading: %s\n", xstrerror());
+ if (ignoreErrno(errno)) {
+ commSetSelect(fd, COMM_SELECT_READ, gopherReadReply, data, 0);
+! } else {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+! fwdFail(gopherState->fwdState, err);
+ comm_close(fd);
+ }
+ } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+! fwdFail(gopherState->fwdState, errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE));
+ comm_close(fd);
+ } else if (len == 0) {
+ /* Connection closed; retrieval done. */
+***************
+*** 717,728 ****
+ }
+ if (errflag) {
+ ErrorState *err;
+! err = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE);
+ err->xerrno = errno;
+ err->host = xstrdup(gopherState->req->host);
+ err->port = gopherState->req->port;
+ err->url = xstrdup(storeUrl(entry));
+! errorAppendEntry(entry, err);
+ comm_close(fd);
+ if (buf)
+ memFree(buf, MEM_4K_BUF); /* Allocated by gopherSendRequest. */
+--- 706,717 ----
+ }
+ if (errflag) {
+ ErrorState *err;
+! err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY);
+ err->xerrno = errno;
+ err->host = xstrdup(gopherState->req->host);
+ err->port = gopherState->req->port;
+ err->url = xstrdup(storeUrl(entry));
+! fwdFail(gopherState->fwdState, err);
+ comm_close(fd);
+ if (buf)
+ memFree(buf, MEM_4K_BUF); /* Allocated by gopherSendRequest. */
+***************
+*** 815,830 ****
+ /* Parse url. */
+ gopher_request_parse(fwdState->request,
+ &gopherState->type_id, gopherState->request);
+- #if OLD_PARSE_ERROR_CODE
+- if (...) {
+- ErrorState *err;
+- err = errorCon(ERR_INVALID_URL, HTTP_BAD_REQUEST);
+- err->url = xstrdup(storeUrl(entry));
+- errorAppendEntry(entry, err);
+- gopherStateFree(-1, gopherState);
+- return;
+- }
+- #endif
+ comm_add_close_handler(fd, gopherStateFree, gopherState);
+ if (((gopherState->type_id == GOPHER_INDEX) || (gopherState->type_id == GOPHER_CSO))
+ && (strchr(gopherState->request, '?') == NULL)) {
+--- 804,809 ----
+Index: squid/src/http.c
+diff -c squid/src/http.c:1.384.2.30 squid/src/http.c:1.384.2.31
+*** squid/src/http.c:1.384.2.30 Fri Mar 25 19:50:53 2005
+--- squid/src/http.c Thu Sep 1 16:14:45 2005
+***************
+*** 99,108 ****
+ StoreEntry *entry = httpState->entry;
+ debug(11, 4) ("httpTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
+ if (entry->store_status == STORE_PENDING) {
+! if (entry->mem_obj->inmem_hi == 0) {
+! fwdFail(httpState->fwd,
+! errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
+! }
+ }
+ comm_close(fd);
+ }
+--- 99,106 ----
+ StoreEntry *entry = httpState->entry;
+ debug(11, 4) ("httpTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
+ if (entry->store_status == STORE_PENDING) {
+! fwdFail(httpState->fwd,
+! errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
+ }
+ comm_close(fd);
+ }
+***************
+*** 616,637 ****
+ fd, xstrerror());
+ if (ignoreErrno(errno)) {
+ commSetSelect(fd, COMM_SELECT_READ, httpReadReply, httpState, 0);
+! } else if (entry->mem_obj->inmem_hi == 0) {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_BAD_GATEWAY);
+- err->request = requestLink((request_t *) request);
+ err->xerrno = errno;
+ fwdFail(httpState->fwd, err);
+ comm_close(fd);
+- } else {
+- comm_close(fd);
+ }
+ } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+! ErrorState *err;
+! err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_BAD_GATEWAY);
+! err->xerrno = errno;
+! err->request = requestLink((request_t *) request);
+! fwdFail(httpState->fwd, err);
+ httpState->eof = 1;
+ comm_close(fd);
+ } else if (len == 0) {
+--- 614,628 ----
+ fd, xstrerror());
+ if (ignoreErrno(errno)) {
+ commSetSelect(fd, COMM_SELECT_READ, httpReadReply, httpState, 0);
+! } else {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_BAD_GATEWAY);
+ err->xerrno = errno;
+ fwdFail(httpState->fwd, err);
+ comm_close(fd);
+ }
+ } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+! fwdFail(httpState->fwd, errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_BAD_GATEWAY));
+ httpState->eof = 1;
+ comm_close(fd);
+ } else if (len == 0) {
+***************
+*** 646,663 ****
+ */
+ httpProcessReplyHeader(httpState, buf, len);
+ if (entry->mem_obj->reply->sline.status == HTTP_HEADER_TOO_LARGE) {
+- ErrorState *err;
+ storeEntryReset(entry);
+! err = errorCon(ERR_TOO_BIG, HTTP_BAD_GATEWAY);
+! err->request = requestLink((request_t *) request);
+! fwdFail(httpState->fwd, err);
+ httpState->fwd->flags.dont_retry = 1;
+ } else if (entry->mem_obj->reply->sline.status == HTTP_INVALID_HEADER && !(entry->mem_obj->reply->sline.version.major == 0 && entry->mem_obj->reply->sline.version.minor == 9)) {
+- ErrorState *err;
+ storeEntryReset(entry);
+! err = errorCon(ERR_INVALID_RESP, HTTP_BAD_GATEWAY);
+! err->request = requestLink((request_t *) request);
+! fwdFail(httpState->fwd, err);
+ httpState->fwd->flags.dont_retry = 1;
+ } else {
+ fwdComplete(httpState->fwd);
+--- 637,648 ----
+ */
+ httpProcessReplyHeader(httpState, buf, len);
+ if (entry->mem_obj->reply->sline.status == HTTP_HEADER_TOO_LARGE) {
+ storeEntryReset(entry);
+! fwdFail(httpState->fwd, errorCon(ERR_TOO_BIG, HTTP_BAD_GATEWAY));
+ httpState->fwd->flags.dont_retry = 1;
+ } else if (entry->mem_obj->reply->sline.status == HTTP_INVALID_HEADER && !(entry->mem_obj->reply->sline.version.major == 0 && entry->mem_obj->reply->sline.version.minor == 9)) {
+ storeEntryReset(entry);
+! fwdFail(httpState->fwd, errorCon(ERR_INVALID_RESP, HTTP_BAD_GATEWAY));
+ httpState->fwd->flags.dont_retry = 1;
+ } else {
+ fwdComplete(httpState->fwd);
+***************
+*** 670,691 ****
+ if (httpState->reply_hdr_state == 2) {
+ http_status s = entry->mem_obj->reply->sline.status;
+ if (s == HTTP_HEADER_TOO_LARGE) {
+- ErrorState *err;
+ debug(11, 1) ("WARNING: %s:%d: HTTP header too large\n", __FILE__, __LINE__);
+ storeEntryReset(entry);
+! err = errorCon(ERR_TOO_BIG, HTTP_BAD_GATEWAY);
+! err->request = requestLink((request_t *) request);
+! fwdFail(httpState->fwd, err);
+ httpState->fwd->flags.dont_retry = 1;
+ comm_close(fd);
+ return;
+ }
+ if (s == HTTP_INVALID_HEADER && !(entry->mem_obj->reply->sline.version.major == 0 && entry->mem_obj->reply->sline.version.minor == 9)) {
+- ErrorState *err;
+ storeEntryReset(entry);
+! err = errorCon(ERR_INVALID_RESP, HTTP_BAD_GATEWAY);
+! err->request = requestLink((request_t *) request);
+! fwdFail(httpState->fwd, err);
+ httpState->fwd->flags.dont_retry = 1;
+ comm_close(fd);
+ return;
+--- 655,670 ----
+ if (httpState->reply_hdr_state == 2) {
+ http_status s = entry->mem_obj->reply->sline.status;
+ if (s == HTTP_HEADER_TOO_LARGE) {
+ debug(11, 1) ("WARNING: %s:%d: HTTP header too large\n", __FILE__, __LINE__);
+ storeEntryReset(entry);
+! fwdFail(httpState->fwd, errorCon(ERR_TOO_BIG, HTTP_BAD_GATEWAY));
+ httpState->fwd->flags.dont_retry = 1;
+ comm_close(fd);
+ return;
+ }
+ if (s == HTTP_INVALID_HEADER && !(entry->mem_obj->reply->sline.version.major == 0 && entry->mem_obj->reply->sline.version.minor == 9)) {
+ storeEntryReset(entry);
+! fwdFail(httpState->fwd, errorCon(ERR_INVALID_RESP, HTTP_BAD_GATEWAY));
+ httpState->fwd->flags.dont_retry = 1;
+ comm_close(fd);
+ return;
+***************
+*** 804,810 ****
+ {
+ HttpStateData *httpState = data;
+ StoreEntry *entry = httpState->entry;
+- ErrorState *err;
+ debug(11, 5) ("httpSendComplete: FD %d: size %d: errflag %d.\n",
+ fd, (int) size, errflag);
+ #if URL_CHECKSUM_DEBUG
+--- 783,788 ----
+***************
+*** 818,829 ****
+ if (errflag == COMM_ERR_CLOSING)
+ return;
+ if (errflag) {
+! if (entry->mem_obj->inmem_hi == 0) {
+! err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY);
+! err->xerrno = errno;
+! err->request = requestLink(httpState->orig_request);
+! errorAppendEntry(entry, err);
+! }
+ comm_close(fd);
+ return;
+ } else {
+--- 796,805 ----
+ if (errflag == COMM_ERR_CLOSING)
+ return;
+ if (errflag) {
+! ErrorState *err;
+! err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY);
+! err->xerrno = errno;
+! fwdFail(httpState->fwd, err);
+ comm_close(fd);
+ return;
+ } else {
+***************
+*** 1264,1270 ****
+ {
+ HttpStateData *httpState = data;
+ StoreEntry *entry = httpState->entry;
+- ErrorState *err;
+ debug(11, 5) ("httpSendRequestEntry: FD %d: size %d: errflag %d.\n",
+ fd, (int) size, errflag);
+ if (size > 0) {
+--- 1240,1245 ----
+***************
+*** 1275,1286 ****
+ if (errflag == COMM_ERR_CLOSING)
+ return;
+ if (errflag) {
+! if (entry->mem_obj->inmem_hi == 0) {
+! err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY);
+! err->xerrno = errno;
+! err->request = requestLink(httpState->orig_request);
+! errorAppendEntry(entry, err);
+! }
+ comm_close(fd);
+ return;
+ }
+--- 1250,1259 ----
+ if (errflag == COMM_ERR_CLOSING)
+ return;
+ if (errflag) {
+! ErrorState *err;
+! err = errorCon(ERR_WRITE_ERROR, HTTP_BAD_GATEWAY);
+! err->xerrno = errno;
+! fwdFail(httpState->fwd, err);
+ comm_close(fd);
+ return;
+ }
+Index: squid/src/urn.c
+diff -c squid/src/urn.c:1.68.2.3 squid/src/urn.c:1.68.2.4
+*** squid/src/urn.c:1.68.2.3 Sun Sep 1 06:38:04 2002
+--- squid/src/urn.c Thu Sep 1 16:14:45 2005
+***************
+*** 132,137 ****
+--- 132,138 ----
+ debug(52, 3) ("urnStart: Bad uri-res URL %s\n", urlres);
+ err = errorCon(ERR_URN_RESOLVE, HTTP_NOT_FOUND);
+ err->url = xstrdup(urlres);
++ err->request = requestLink(r);
+ errorAppendEntry(e, err);
+ return;
+ }
+Index: squid/src/wais.c
+diff -c squid/src/wais.c:1.138 squid/src/wais.c:1.138.2.1
+*** squid/src/wais.c:1.138 Wed Oct 24 02:19:09 2001
+--- squid/src/wais.c Thu Sep 1 16:14:45 2005
+***************
+*** 70,79 ****
+ StoreEntry *entry = waisState->entry;
+ debug(24, 4) ("waisTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
+ if (entry->store_status == STORE_PENDING) {
+! if (entry->mem_obj->inmem_hi == 0) {
+! fwdFail(waisState->fwd,
+! errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
+! }
+ }
+ comm_close(fd);
+ }
+--- 70,77 ----
+ StoreEntry *entry = waisState->entry;
+ debug(24, 4) ("waisTimeout: FD %d: '%s'\n", fd, storeUrl(entry));
+ if (entry->store_status == STORE_PENDING) {
+! fwdFail(waisState->fwd,
+! errorCon(ERR_READ_TIMEOUT, HTTP_GATEWAY_TIMEOUT));
+ }
+ comm_close(fd);
+ }
+***************
+*** 130,149 ****
+ waisReadReply, waisState, 0);
+ } else {
+ ErrorState *err;
+- EBIT_CLR(entry->flags, ENTRY_CACHABLE);
+- storeReleaseRequest(entry);
+ err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+! err->request = requestLink(waisState->request);
+! errorAppendEntry(entry, err);
+ comm_close(fd);
+ }
+ } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+! ErrorState *err;
+! err = errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE);
+! err->xerrno = errno;
+! err->request = requestLink(waisState->request);
+! errorAppendEntry(entry, err);
+ comm_close(fd);
+ } else if (len == 0) {
+ /* Connection closed; retrieval done. */
+--- 128,140 ----
+ waisReadReply, waisState, 0);
+ } else {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+! fwdFail(waisState->fwd, err);
+ comm_close(fd);
+ }
+ } else if (len == 0 && entry->mem_obj->inmem_hi == 0) {
+! fwdFail(waisState->fwd, errorCon(ERR_ZERO_SIZE_OBJECT, HTTP_SERVICE_UNAVAILABLE));
+ comm_close(fd);
+ } else if (len == 0) {
+ /* Connection closed; retrieval done. */
+***************
+*** 179,186 ****
+ ErrorState *err;
+ err = errorCon(ERR_WRITE_ERROR, HTTP_SERVICE_UNAVAILABLE);
+ err->xerrno = errno;
+! err->request = requestLink(waisState->request);
+! errorAppendEntry(entry, err);
+ comm_close(fd);
+ } else {
+ /* Schedule read reply. */
+--- 170,176 ----
+ ErrorState *err;
+ err = errorCon(ERR_WRITE_ERROR, HTTP_SERVICE_UNAVAILABLE);
+ err->xerrno = errno;
+! fwdFail(waisState->fwd, err);
+ comm_close(fd);
+ } else {
+ /* Schedule read reply. */
+Index: squid/src/whois.c
+diff -c squid/src/whois.c:1.16 squid/src/whois.c:1.16.2.1
+*** squid/src/whois.c:1.16 Fri Apr 13 18:03:24 2001
+--- squid/src/whois.c Thu Sep 1 16:14:45 2005
+***************
+*** 109,122 ****
+ fd, xstrerror());
+ if (ignoreErrno(errno)) {
+ commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p, Config.Timeout.read);
+! } else if (mem->inmem_hi == 0) {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+ fwdFail(p->fwd, err);
+ comm_close(fd);
+- } else {
+- comm_close(fd);
+ }
+ } else {
+ fwdComplete(p->fwd);
+--- 109,120 ----
+ fd, xstrerror());
+ if (ignoreErrno(errno)) {
+ commSetSelect(fd, COMM_SELECT_READ, whoisReadReply, p, Config.Timeout.read);
+! } else {
+ ErrorState *err;
+ err = errorCon(ERR_READ_ERROR, HTTP_INTERNAL_SERVER_ERROR);
+ err->xerrno = errno;
+ fwdFail(p->fwd, err);
+ comm_close(fd);
+ }
+ } else {
+ fwdComplete(p->fwd);
--- /dev/null
+Index: squid/src/ftp.c
+diff -c squid/src/ftp.c:1.316.2.29 squid/src/ftp.c:1.316.2.30
+*** squid/src/ftp.c:1.316.2.29 Thu Sep 1 16:14:45 2005
+--- squid/src/ftp.c Thu Sep 1 16:28:29 2005
+***************
+*** 2279,2285 ****
+ {
+ int code = ftpState->ctrl.replycode;
+ debug(9, 3) ("This is ftpReadTransferDone\n");
+! if (code == 226) {
+ /* Connection closed; retrieval done. */
+ if (ftpState->flags.html_header_sent)
+ ftpListingFinish(ftpState);
+--- 2279,2285 ----
+ {
+ int code = ftpState->ctrl.replycode;
+ debug(9, 3) ("This is ftpReadTransferDone\n");
+! if (code == 226 || code == 250) {
+ /* Connection closed; retrieval done. */
+ if (ftpState->flags.html_header_sent)
+ ftpListingFinish(ftpState);
+***************
+*** 2345,2351 ****
+ {
+ int code = ftpState->ctrl.replycode;
+ debug(9, 3) ("This is ftpWriteTransferDone\n");
+! if (code != 226) {
+ debug(9, 1) ("ftpReadTransferDone: Got code %d after sending data\n",
+ code);
+ ftpFailed(ftpState, ERR_FTP_PUT_ERROR);
+--- 2345,2351 ----
+ {
+ int code = ftpState->ctrl.replycode;
+ debug(9, 3) ("This is ftpWriteTransferDone\n");
+! if (!(code == 226 || code == 250)) {
+ debug(9, 1) ("ftpReadTransferDone: Got code %d after sending data\n",
+ code);
+ ftpFailed(ftpState, ERR_FTP_PUT_ERROR);
+***************
+*** 2521,2527 ****
+ storeUrl(ftpState->entry), code);
+ if (cbdataValid(ftpState))
+ debug(9, 5) ("ftpSendReply: ftpState (%p) is valid!\n", ftpState);
+! if (code == 226) {
+ err_code = (ftpState->mdtm > 0) ? ERR_FTP_PUT_MODIFIED : ERR_FTP_PUT_CREATED;
+ http_code = (ftpState->mdtm > 0) ? HTTP_ACCEPTED : HTTP_CREATED;
+ } else if (code == 227) {
+--- 2521,2527 ----
+ storeUrl(ftpState->entry), code);
+ if (cbdataValid(ftpState))
+ debug(9, 5) ("ftpSendReply: ftpState (%p) is valid!\n", ftpState);
+! if (code == 226 || code == 250) {
+ err_code = (ftpState->mdtm > 0) ? ERR_FTP_PUT_MODIFIED : ERR_FTP_PUT_CREATED;
+ http_code = (ftpState->mdtm > 0) ? HTTP_ACCEPTED : HTTP_CREATED;
+ } else if (code == 227) {
--- /dev/null
+Index: squid/src/ftp.c
+diff -c squid/src/ftp.c:1.316.2.26 squid/src/ftp.c:1.316.2.27
+*** squid/src/ftp.c:1.316.2.26 Tue Jun 21 16:18:19 2005
+--- squid/src/ftp.c Tue Jun 21 16:21:31 2005
+***************
+*** 69,74 ****
+--- 69,75 ----
+ unsigned int http_header_sent:1;
+ unsigned int tried_nlst:1;
+ unsigned int use_base:1;
++ unsigned int dir_slash:1;
+ unsigned int root_dir:1;
+ unsigned int no_dotdot:1;
+ unsigned int html_header_sent:1;
+***************
+*** 87,92 ****
+--- 88,94 ----
+ int password_url;
+ char *reply_hdr;
+ int reply_hdr_state;
++ String clean_url;
+ String title_url;
+ String base_href;
+ int conn_att;
+***************
+*** 96,101 ****
+--- 98,104 ----
+ squid_off_t size;
+ wordlist *pathcomps;
+ char *filepath;
++ char *dirpath;
+ squid_off_t restart_offset;
+ squid_off_t restarted_offset;
+ int rest_att;
+***************
+*** 437,445 ****
+ storeBuffer(e);
+ storeAppendPrintf(e, "</PRE>\n");
+ if (ftpState->flags.listformat_unknown && !ftpState->flags.tried_nlst) {
+! storeAppendPrintf(e, "<A HREF=\"./;type=d\">[As plain directory]</A>\n");
+ } else if (ftpState->typecode == 'D') {
+! const char *path = ftpState->filepath ? ftpState->filepath : ".";
+ storeAppendPrintf(e, "<A HREF=\"%s/\">[As extended directory]</A>\n", html_quote(path));
+ }
+ storeAppendPrintf(e, "<HR noshade size=\"1px\">\n");
+--- 440,449 ----
+ storeBuffer(e);
+ storeAppendPrintf(e, "</PRE>\n");
+ if (ftpState->flags.listformat_unknown && !ftpState->flags.tried_nlst) {
+! storeAppendPrintf(e, "<A HREF=\"%s/;type=d\">[As plain directory]</A>\n",
+! ftpState->flags.dir_slash ? rfc1738_escape_part(ftpState->filepath) : ".");
+ } else if (ftpState->typecode == 'D') {
+! const char *path = ftpState->flags.dir_slash ? ftpState->filepath : ".";
+ storeAppendPrintf(e, "<A HREF=\"%s/\">[As extended directory]</A>\n", html_quote(path));
+ }
+ storeAppendPrintf(e, "<HR noshade size=\"1px\">\n");
+***************
+*** 681,686 ****
+--- 685,691 ----
+ LOCAL_ARRAY(char, download, 2048 + 40);
+ LOCAL_ARRAY(char, link, 2048 + 40);
+ LOCAL_ARRAY(char, html, 8192);
++ LOCAL_ARRAY(char, prefix, 2048);
+ size_t width = Config.Ftp.list_width;
+ ftpListParts *parts;
+ *icon = *href = *text = *size = *chdir = *view = *download = *link = *html = '\0';
+***************
+*** 688,693 ****
+--- 693,702 ----
+ snprintf(html, 8192, "%s\n", line);
+ return html;
+ }
++ if (ftpState->flags.dir_slash)
++ snprintf(prefix, sizeof(prefix), "%s/", rfc1738_escape_part(ftpState->dirpath));
++ else
++ prefix[0] = '\0';
+ /* Handle builtin <dirup> */
+ if (strcmp(line, "<internal-dirup>") == 0) {
+ /* <A HREF="{href}">{icon}</A> <A HREF="{href}">{text}</A> {link} */
+***************
+*** 696,702 ****
+ "[DIRUP]");
+ if (!ftpState->flags.no_dotdot && !ftpState->flags.root_dir) {
+ /* Normal directory */
+! strcpy(href, "../");
+ strcpy(text, "Parent Directory");
+ } else if (!ftpState->flags.no_dotdot && ftpState->flags.root_dir) {
+ /* "Top level" directory */
+--- 705,714 ----
+ "[DIRUP]");
+ if (!ftpState->flags.no_dotdot && !ftpState->flags.root_dir) {
+ /* Normal directory */
+! if (!ftpState->flags.dir_slash)
+! strcpy(href, "../");
+! else
+! strcpy(href, "./");
+ strcpy(text, "Parent Directory");
+ } else if (!ftpState->flags.no_dotdot && ftpState->flags.root_dir) {
+ /* "Top level" directory */
+***************
+*** 710,716 ****
+ strcpy(href, "%2e%2e/");
+ strcpy(text, "Parent Directory");
+ snprintf(link, 2048, "(<A HREF=\"%s\">%s</A>)",
+! "../",
+ "Back");
+ } else { /* NO_DOTDOT && ROOT_DIR */
+ /* "UNIX Root" directory */
+--- 722,728 ----
+ strcpy(href, "%2e%2e/");
+ strcpy(text, "Parent Directory");
+ snprintf(link, 2048, "(<A HREF=\"%s\">%s</A>)",
+! !ftpState->flags.dir_slash ? "../" : "./",
+ "Back");
+ } else { /* NO_DOTDOT && ROOT_DIR */
+ /* "UNIX Root" directory */
+***************
+*** 758,765 ****
+ /* sometimes there is an 'l' flag, but no "->" link */
+ if (parts->link) {
+ char *link2 = xstrdup(html_quote(rfc1738_escape(parts->link)));
+! snprintf(link, 2048, " -> <A HREF=\"%s\">%s</A>",
+! link2,
+ html_quote(parts->link));
+ safe_free(link2);
+ }
+--- 770,777 ----
+ /* sometimes there is an 'l' flag, but no "->" link */
+ if (parts->link) {
+ char *link2 = xstrdup(html_quote(rfc1738_escape(parts->link)));
+! snprintf(link, 2048, " -> <A HREF=\"%s%s\">%s</A>",
+! *link2 != '/' ? prefix : "", link2,
+ html_quote(parts->link));
+ safe_free(link2);
+ }
+***************
+*** 799,825 ****
+ }
+ if (parts->type != 'd') {
+ if (mimeGetViewOption(parts->name)) {
+! snprintf(view, 2048, " <A HREF=\"%s;type=a\"><IMG border=\"0\" SRC=\"%s\" "
+ "ALT=\"[VIEW]\"></A>",
+! href, mimeGetIconURL("internal-view"));
+ }
+ if (mimeGetDownloadOption(parts->name)) {
+! snprintf(download, 2048, " <A HREF=\"%s;type=i\"><IMG border=\"0\" SRC=\"%s\" "
+ "ALT=\"[DOWNLOAD]\"></A>",
+! href, mimeGetIconURL("internal-download"));
+ }
+ }
+ /* <A HREF="{href}">{icon}</A> <A HREF="{href}">{text}</A> . . . {date}{size}{chdir}{view}{download}{link}\n */
+ if (parts->type != '\0') {
+! snprintf(html, 8192, "<A HREF=\"%s\">%s</A> <A HREF=\"%s\">%s</A>%s "
+ "%s%8s%s%s%s%s\n",
+! href, icon, href, html_quote(text), dots_fill(strlen(text)),
+ parts->date, size, chdir, view, download, link);
+ } else {
+ /* Plain listing. {icon} {text} ... {chdir}{view}{download} */
+! snprintf(html, 8192, "<A HREF=\"%s\">%s</A> <A HREF=\"%s\">%s</A>%s "
+ "%s%s%s%s\n",
+! href, icon, href, html_quote(text), dots_fill(strlen(text)),
+ chdir, view, download, link);
+ }
+ ftpListPartsFree(&parts);
+--- 811,837 ----
+ }
+ if (parts->type != 'd') {
+ if (mimeGetViewOption(parts->name)) {
+! snprintf(view, 2048, " <A HREF=\"%s%s;type=a\"><IMG border=\"0\" SRC=\"%s\" "
+ "ALT=\"[VIEW]\"></A>",
+! prefix, href, mimeGetIconURL("internal-view"));
+ }
+ if (mimeGetDownloadOption(parts->name)) {
+! snprintf(download, 2048, " <A HREF=\"%s%s;type=i\"><IMG border=\"0\" SRC=\"%s\" "
+ "ALT=\"[DOWNLOAD]\"></A>",
+! prefix, href, mimeGetIconURL("internal-download"));
+ }
+ }
+ /* <A HREF="{href}">{icon}</A> <A HREF="{href}">{text}</A> . . . {date}{size}{chdir}{view}{download}{link}\n */
+ if (parts->type != '\0') {
+! snprintf(html, 8192, "<A HREF=\"%s%s\">%s</A> <A HREF=\"%s%s\">%s</A>%s "
+ "%s%8s%s%s%s%s\n",
+! prefix, href, icon, prefix, href, html_quote(text), dots_fill(strlen(text)),
+ parts->date, size, chdir, view, download, link);
+ } else {
+ /* Plain listing. {icon} {text} ... {chdir}{view}{download} */
+! snprintf(html, 8192, "<A HREF=\"%s%s\">%s</A> <A HREF=\"%s%s\">%s</A>%s "
+ "%s%s%s%s\n",
+! prefix, href, icon, prefix, href, html_quote(text), dots_fill(strlen(text)),
+ chdir, view, download, link);
+ }
+ ftpListPartsFree(&parts);
+***************
+*** 1557,1563 ****
+ debug(9, 4) ("ftpTraverseDirectory %s\n",
+ ftpState->filepath ? ftpState->filepath : "<NULL>");
+
+! safe_free(ftpState->filepath);
+ /* Done? */
+ if (ftpState->pathcomps == NULL) {
+ debug(9, 3) ("the final component was a directory\n");
+--- 1569,1578 ----
+ debug(9, 4) ("ftpTraverseDirectory %s\n",
+ ftpState->filepath ? ftpState->filepath : "<NULL>");
+
+! safe_free(ftpState->dirpath);
+! ftpState->dirpath = ftpState->filepath;
+! ftpState->filepath = NULL;
+!
+ /* Done? */
+ if (ftpState->pathcomps == NULL) {
+ debug(9, 3) ("the final component was a directory\n");
+***************
+*** 1662,1668 ****
+ debug(9, 3) ("Directory path did not end in /\n");
+ strCat(ftpState->title_url, "/");
+ ftpState->flags.isdir = 1;
+! ftpState->flags.use_base = 1;
+ }
+ ftpSendPasv(ftpState);
+ }
+--- 1677,1683 ----
+ debug(9, 3) ("Directory path did not end in /\n");
+ strCat(ftpState->title_url, "/");
+ ftpState->flags.isdir = 1;
+! ftpState->flags.dir_slash = 1;
+ }
+ ftpSendPasv(ftpState);
+ }
--- /dev/null
+Index: squid/src/ftp.c
+diff -c squid/src/ftp.c:1.316.2.25 squid/src/ftp.c:1.316.2.28
+*** squid/src/ftp.c:1.316.2.25 Fri Mar 25 19:50:53 2005
+--- squid/src/ftp.c Wed Jun 22 04:42:34 2005
+***************
+*** 365,379 ****
+ wordlist *w;
+ char *dirup;
+ int i, j, k;
+! char *title;
+ storeBuffer(e);
+ storeAppendPrintf(e, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
+ storeAppendPrintf(e, "<!-- HTML listing generated by Squid %s -->\n",
+ version_string);
+ storeAppendPrintf(e, "<!-- %s -->\n", mkrfc1123(squid_curtime));
+ storeAppendPrintf(e, "<HTML><HEAD><TITLE>\n");
+! storeAppendPrintf(e, "FTP Directory: %s\n",
+! html_quote(strBuf(ftpState->title_url)));
+ storeAppendPrintf(e, "</TITLE>\n");
+ storeAppendPrintf(e, "<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE>\n");
+ if (ftpState->flags.use_base)
+--- 365,383 ----
+ wordlist *w;
+ char *dirup;
+ int i, j, k;
+! const char *title = strBuf(ftpState->title_url);
+ storeBuffer(e);
+ storeAppendPrintf(e, "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">\n");
+ storeAppendPrintf(e, "<!-- HTML listing generated by Squid %s -->\n",
+ version_string);
+ storeAppendPrintf(e, "<!-- %s -->\n", mkrfc1123(squid_curtime));
+ storeAppendPrintf(e, "<HTML><HEAD><TITLE>\n");
+! {
+! char *t = xstrdup(title);
+! rfc1738_unescape(t);
+! storeAppendPrintf(e, "FTP Directory: %s\n", html_quote(t));
+! xfree(t);
+! }
+ storeAppendPrintf(e, "</TITLE>\n");
+ storeAppendPrintf(e, "<STYLE type=\"text/css\"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}--></STYLE>\n");
+ if (ftpState->flags.use_base)
+***************
+*** 392,418 ****
+ storeAppendPrintf(e, "FTP Directory: ");
+ /* "ftp://" == 6 characters */
+ assert(strLen(ftpState->title_url) >= 6);
+! title = html_quote(strBuf(ftpState->title_url));
+ for (i = 6, j = 0; title[i]; j = i) {
+ storeAppendPrintf(e, "<A HREF=\"");
+ i += strcspn(&title[i], "/");
+ if (title[i] == '/')
+ i++;
+- for (k = 0; k < i; k++)
+- storeAppendPrintf(e, "%c", title[k]);
+- storeAppendPrintf(e, "\">");
+- for (k = j; k < i - 1; k++)
+- storeAppendPrintf(e, "%c", title[k]);
+- if (strBuf(ftpState->title_url)[k] != '/')
+- storeAppendPrintf(e, "%c", title[k++]);
+- storeAppendPrintf(e, "</A>");
+- if (k < i)
+- storeAppendPrintf(e, "%c", title[k++]);
+ if (i == j) {
+ /* Error guard, or "assert" */
+ storeAppendPrintf(e, "ERROR: Failed to parse URL: %s\n",
+! html_quote(strBuf(ftpState->title_url)));
+! debug(9, 0) ("Failed to parse URL: %s\n", strBuf(ftpState->title_url));
+ break;
+ }
+ }
+--- 396,424 ----
+ storeAppendPrintf(e, "FTP Directory: ");
+ /* "ftp://" == 6 characters */
+ assert(strLen(ftpState->title_url) >= 6);
+! k = 6 + strcspn(&title[6], "/");
+ for (i = 6, j = 0; title[i]; j = i) {
+ storeAppendPrintf(e, "<A HREF=\"");
+ i += strcspn(&title[i], "/");
++ if (i > j) {
++ char *url = xstrdup(title);
++ url[i] = '\0';
++ storeAppendPrintf(e, "%s", html_quote(url + k));
++ storeAppendPrintf(e, "/");
++ storeAppendPrintf(e, "\">");
++ rfc1738_unescape(url + j);
++ storeAppendPrintf(e, "%s", html_quote(url + j));
++ safe_free(url);
++ storeAppendPrintf(e, "</A>");
++ }
++ storeAppendPrintf(e, "/");
+ if (title[i] == '/')
+ i++;
+ if (i == j) {
+ /* Error guard, or "assert" */
+ storeAppendPrintf(e, "ERROR: Failed to parse URL: %s\n",
+! html_quote(title));
+! debug(9, 0) ("Failed to parse URL: %s\n", title);
+ break;
+ }
+ }
+***************
+*** 1059,1070 ****
+ strCat(ftpState->title_url, xitoa(request->port));
+ }
+ strCat(ftpState->title_url, strBuf(request->urlpath));
+- {
+- char *t = xstrdup(strBuf(ftpState->title_url));
+- rfc1738_unescape(t);
+- stringReset(&ftpState->title_url, t);
+- xfree(t);
+- }
+
+ stringReset(&ftpState->base_href, "ftp://");
+ if (strcmp(ftpState->user, "anonymous")) {
+--- 1065,1070 ----
--- /dev/null
+Index: squid/include/Array.h
+diff -c squid/include/Array.h:1.6 squid/include/Array.h:1.6.2.1
+*** squid/include/Array.h:1.6 Mon Oct 8 10:18:31 2001
+--- squid/include/Array.h Thu Jun 9 01:51:46 2005
+***************
+*** 48,53 ****
+--- 48,54 ----
+ extern void arrayClean(Array * s);
+ extern void arrayDestroy(Array * s);
+ extern void arrayAppend(Array * s, void *obj);
++ extern void arrayInsert(Array * s, void *obj, int position);
+ extern void arrayPreAppend(Array * s, int app_count);
+
+
+Index: squid/lib/Array.c
+diff -c squid/lib/Array.c:1.7 squid/lib/Array.c:1.7.2.1
+*** squid/lib/Array.c:1.7 Wed Feb 7 11:56:50 2001
+--- squid/lib/Array.c Thu Jun 9 01:51:46 2005
+***************
+*** 95,100 ****
+--- 95,113 ----
+ a->items[a->count++] = obj;
+ }
+
++ void arrayInsert(Array *a, void *obj, int position)
++ {
++ assert(a);
++ if (a->count >= a->capacity)
++ arrayGrow(a, a->count + 1);
++ if (position > a->count)
++ position = a->count;
++ if (position < a->count)
++ memmove(&a->items[position + 1], &a->items[position], (a->count - position) * sizeof(void *));
++ a->items[position] = obj;
++ a->count++;
++ }
++
+ /* if you are going to append a known and large number of items, call this first */
+ void
+ arrayPreAppend(Array * a, int app_count)
+Index: squid/src/HttpHeader.c
+diff -c squid/src/HttpHeader.c:1.74.2.29 squid/src/HttpHeader.c:1.74.2.30
+*** squid/src/HttpHeader.c:1.74.2.29 Wed May 25 16:57:33 2005
+--- squid/src/HttpHeader.c Thu Jun 9 01:51:46 2005
+***************
+*** 680,685 ****
+--- 680,705 ----
+ hdr->len += strLen(e->name) + 2 + strLen(e->value) + 2;
+ }
+
++ /* inserts an entry at the given position;
++ * does not call httpHeaderEntryClone() so one should not reuse "*e"
++ */
++ void
++ httpHeaderInsertEntry(HttpHeader * hdr, HttpHeaderEntry * e, int pos)
++ {
++ assert(hdr && e);
++ assert_eid(e->id);
++
++ debug(55, 7) ("%p adding entry: %d at %d\n",
++ hdr, e->id, hdr->entries.count);
++ if (CBIT_TEST(hdr->mask, e->id))
++ Headers[e->id].stat.repCount++;
++ else
++ CBIT_SET(hdr->mask, e->id);
++ arrayInsert(&hdr->entries, e, pos);
++ /* increment header length, allow for ": " and crlf */
++ hdr->len += strLen(e->name) + 2 + strLen(e->value) + 2;
++ }
++
+ /* return a list of entries with the same id separated by ',' and ws */
+ String
+ httpHeaderGetList(const HttpHeader * hdr, http_hdr_type id)
+***************
+*** 850,855 ****
+--- 870,884 ----
+ }
+
+ void
++ httpHeaderInsertTime(HttpHeader * hdr, int pos, http_hdr_type id, time_t htime)
++ {
++ assert_eid(id);
++ assert(Headers[id].type == ftDate_1123); /* must be of an appropriate type */
++ assert(htime >= 0);
++ httpHeaderInsertEntry(hdr, httpHeaderEntryCreate(id, NULL, mkrfc1123(htime)), pos);
++ }
++
++ void
+ httpHeaderPutStr(HttpHeader * hdr, http_hdr_type id, const char *str)
+ {
+ assert_eid(id);
+Index: squid/src/cf.data.pre
+diff -c squid/src/cf.data.pre:1.245.2.94 squid/src/cf.data.pre:1.245.2.95
+*** squid/src/cf.data.pre:1.245.2.94 Tue May 10 17:08:40 2005
+--- squid/src/cf.data.pre Thu Jun 9 01:51:46 2005
+***************
+*** 3241,3246 ****
+--- 3241,3260 ----
+ @DEFAULT_ICON_DIR@
+ DOC_END
+
++ NAME: global_internal_static
++ TYPE: onoff
++ LOC: Config.onoff.global_internal_static
++ DEFAULT: on
++ DOC_START
++ This directive controls is Squid should intercept all requests for
++ /squid-internal-static/ no matter which host the URL is requesting
++ (default on setting), or if nothing special should be done for
++ such URLs (off setting). The purpose of this directive is to make
++ icons etc work better in complex cache hierarchies where it may
++ not always be possible for all corners in the cache mesh to reach
++ the server generating a directory listing.
++ DOC_END
++
+ NAME: short_icon_urls
+ TYPE: onoff
+ LOC: Config.icons.use_short_names
+Index: squid/src/client_side.c
+diff -c squid/src/client_side.c:1.561.2.76 squid/src/client_side.c:1.561.2.77
+*** squid/src/client_side.c:1.561.2.76 Wed Apr 20 15:46:06 2005
+--- squid/src/client_side.c Thu Jun 9 01:51:47 2005
+***************
+*** 1404,1410 ****
+ (void) 0;
+ else if (http->entry->timestamp < 0)
+ (void) 0;
+! else if (http->entry->timestamp < squid_curtime)
+ httpHeaderPutInt(hdr, HDR_AGE,
+ squid_curtime - http->entry->timestamp);
+ }
+--- 1404,1413 ----
+ (void) 0;
+ else if (http->entry->timestamp < 0)
+ (void) 0;
+! if (EBIT_TEST(http->entry->flags, ENTRY_SPECIAL)) {
+! httpHeaderDelById(hdr, HDR_DATE);
+! httpHeaderInsertTime(hdr, 0, HDR_DATE, squid_curtime);
+! } else if (http->entry->timestamp < squid_curtime)
+ httpHeaderPutInt(hdr, HDR_AGE,
+ squid_curtime - http->entry->timestamp);
+ }
+***************
+*** 2719,2729 ****
+ *t = '\0';
+ #endif
+
+! /* handle internal objects */
+! if (internalCheck(url)) {
+ /* prepend our name & port */
+ http->uri = xstrdup(internalLocalUri(NULL, url));
+- http->flags.internal = 1;
+ http->flags.accel = 1;
+ }
+ /* see if we running in Config2.Accel.on, if so got to convert it to URL */
+--- 2722,2731 ----
+ *t = '\0';
+ #endif
+
+! /* handle direct internal objects */
+! if (!Config2.Accel.on && internalCheck(url)) {
+ /* prepend our name & port */
+ http->uri = xstrdup(internalLocalUri(NULL, url));
+ http->flags.accel = 1;
+ }
+ /* see if we running in Config2.Accel.on, if so got to convert it to URL */
+***************
+*** 3099,3105 ****
+ if (internalHostnameIs(request->host) &&
+ request->port == ntohs(Config.Sockaddr.http->s.sin_port)) {
+ http->flags.internal = 1;
+! } else if (internalStaticCheck(strBuf(request->urlpath))) {
+ xstrncpy(request->host, internalHostname(), SQUIDHOSTNAMELEN);
+ request->port = ntohs(Config.Sockaddr.http->s.sin_port);
+ http->flags.internal = 1;
+--- 3101,3107 ----
+ if (internalHostnameIs(request->host) &&
+ request->port == ntohs(Config.Sockaddr.http->s.sin_port)) {
+ http->flags.internal = 1;
+! } else if (Config.onoff.global_internal_static && internalStaticCheck(strBuf(request->urlpath))) {
+ xstrncpy(request->host, internalHostname(), SQUIDHOSTNAMELEN);
+ request->port = ntohs(Config.Sockaddr.http->s.sin_port);
+ http->flags.internal = 1;
+Index: squid/src/protos.h
+diff -c squid/src/protos.h:1.420.2.35 squid/src/protos.h:1.420.2.36
+*** squid/src/protos.h:1.420.2.35 Wed May 18 09:28:32 2005
+--- squid/src/protos.h Thu Jun 9 01:51:47 2005
+***************
+*** 424,429 ****
+--- 424,430 ----
+ extern void httpHeaderPutInt(HttpHeader * hdr, http_hdr_type type, int number);
+ extern void httpHeaderPutSize(HttpHeader * hdr, http_hdr_type type, squid_off_t number);
+ extern void httpHeaderPutTime(HttpHeader * hdr, http_hdr_type type, time_t htime);
++ extern void httpHeaderInsertTime(HttpHeader * hdr, int pos, http_hdr_type type, time_t htime);
+ extern void httpHeaderPutStr(HttpHeader * hdr, http_hdr_type type, const char *str);
+ extern void httpHeaderPutAuth(HttpHeader * hdr, const char *auth_scheme, const char *realm);
+ extern void httpHeaderPutCc(HttpHeader * hdr, const HttpHdrCc * cc);
+***************
+*** 453,458 ****
+--- 454,460 ----
+ extern HttpHeaderEntry *httpHeaderGetEntry(const HttpHeader * hdr, HttpHeaderPos * pos);
+ extern HttpHeaderEntry *httpHeaderFindEntry(const HttpHeader * hdr, http_hdr_type id);
+ extern void httpHeaderAddEntry(HttpHeader * hdr, HttpHeaderEntry * e);
++ extern void httpHeaderInsertEntry(HttpHeader * hdr, HttpHeaderEntry * e, int pos);
+ extern HttpHeaderEntry *httpHeaderEntryClone(const HttpHeaderEntry * e);
+ extern void httpHeaderEntryPackInto(const HttpHeaderEntry * e, Packer * p);
+ /* store report about current header usage and other stats */
+Index: squid/src/structs.h
+diff -c squid/src/structs.h:1.408.2.43 squid/src/structs.h:1.408.2.44
+*** squid/src/structs.h:1.408.2.43 Wed May 4 12:03:47 2005
+--- squid/src/structs.h Thu Jun 9 01:51:47 2005
+***************
+*** 609,614 ****
+--- 609,615 ----
+ int relaxed_header_parser;
+ int accel_uses_host_header;
+ int accel_no_pmtu_disc;
++ int global_internal_static;
+ } onoff;
+ acl *aclList;
+ struct {
--- /dev/null
+Index: squid/helpers/basic_auth/LDAP/squid_ldap_auth.c
+diff -c squid/helpers/basic_auth/LDAP/squid_ldap_auth.c:1.21.2.21 squid/helpers/basic_auth/LDAP/squid_ldap_auth.c:1.21.2.22
+*** squid/helpers/basic_auth/LDAP/squid_ldap_auth.c:1.21.2.21 Fri Apr 22 14:29:29 2005
+--- squid/helpers/basic_auth/LDAP/squid_ldap_auth.c Thu Sep 1 16:47:19 2005
+***************
+*** 672,685 ****
+ }
+
+ if (debug)
+! fprintf(stderr, "attempting to bind to user '%s'\n", dn);
+ if (!bind_ld && !bind_once)
+ bind_ld = persistent_ld;
+ if (!bind_ld)
+ bind_ld = open_ldap_connection(ldapServer, port);
+! if (passwdattr && ldap_compare_s(bind_ld, dn, passwdattr, password) != LDAP_COMPARE_TRUE)
+! ret = 1;
+! else if (ldap_simple_bind_s(bind_ld, dn, password) != LDAP_SUCCESS)
+ ret = 1;
+ if (bind_ld != persistent_ld) {
+ ldap_unbind(bind_ld);
+--- 672,687 ----
+ }
+
+ if (debug)
+! fprintf(stderr, "attempting to authenticate user '%s'\n", dn);
+ if (!bind_ld && !bind_once)
+ bind_ld = persistent_ld;
+ if (!bind_ld)
+ bind_ld = open_ldap_connection(ldapServer, port);
+! if (passwdattr) {
+! if (ldap_compare_s(bind_ld, dn, passwdattr, password) != LDAP_COMPARE_TRUE) {
+! ret = 1;
+! }
+! } else if (ldap_simple_bind_s(bind_ld, dn, password) != LDAP_SUCCESS)
+ ret = 1;
+ if (bind_ld != persistent_ld) {
+ ldap_unbind(bind_ld);
--- /dev/null
+Index: squid/src/cf.data.pre
+diff -c squid/src/cf.data.pre:1.245.2.96 squid/src/cf.data.pre:1.245.2.97
+*** squid/src/cf.data.pre:1.245.2.96 Sun Aug 14 10:28:07 2005
+--- squid/src/cf.data.pre Sat Sep 3 03:14:43 2005
+***************
+*** 2444,2449 ****
+--- 2444,2461 ----
+ DOC_END
+
+
++ NAME: mail_from
++ TYPE: string
++ DEFAULT: none
++ LOC: Config.EmailFrom
++ DOC_START
++ From: email-address for mail sent when the cache dies.
++ The default is to use 'appname@unique_hostname'.
++ Default appname value is "squid", can be changed into
++ src/globals.h before building squid.
++ DOC_END
++
++
+ NAME: mail_program
+ TYPE: eol
+ DEFAULT: mail
+Index: squid/src/structs.h
+diff -c squid/src/structs.h:1.408.2.47 squid/src/structs.h:1.408.2.48
+*** squid/src/structs.h:1.408.2.47 Thu Sep 1 16:22:23 2005
+--- squid/src/structs.h Sat Sep 3 03:14:43 2005
+***************
+*** 480,485 ****
+--- 480,486 ----
+ int rotateNumber;
+ } Log;
+ char *adminEmail;
++ char *EmailFrom;
+ char *EmailProgram;
+ char *effectiveUser;
+ char *effectiveGroup;
+Index: squid/src/tools.c
+diff -c squid/src/tools.c:1.213.2.17 squid/src/tools.c:1.213.2.18
+*** squid/src/tools.c:1.213.2.17 Sun Aug 14 10:28:07 2005
+--- squid/src/tools.c Sat Sep 3 03:14:43 2005
+***************
+*** 106,112 ****
+ if ((fp = fopen(filename, "w")) == NULL)
+ return;
+ #endif
+! fprintf(fp, "From: %s\n", appname);
+ fprintf(fp, "To: %s\n", Config.adminEmail);
+ fprintf(fp, "Subject: %s\n", dead_msg());
+ fclose(fp);
+--- 106,115 ----
+ if ((fp = fopen(filename, "w")) == NULL)
+ return;
+ #endif
+! if (Config.EmailFrom)
+! fprintf(fp, "From: %s\n", Config.EmailFrom);
+! else
+! fprintf(fp, "From: %s@%s\n", appname, uniqueHostname());
+ fprintf(fp, "To: %s\n", Config.adminEmail);
+ fprintf(fp, "Subject: %s\n", dead_msg());
+ fclose(fp);
--- /dev/null
+Index: squid/src/cf.data.pre
+diff -c squid/src/cf.data.pre:1.245.2.95 squid/src/cf.data.pre:1.245.2.96
+*** squid/src/cf.data.pre:1.245.2.95 Thu Jun 9 01:51:46 2005
+--- squid/src/cf.data.pre Sun Aug 14 10:28:07 2005
+***************
+*** 2444,2449 ****
+--- 2444,2462 ----
+ DOC_END
+
+
++ NAME: mail_program
++ TYPE: eol
++ DEFAULT: mail
++ LOC: Config.EmailProgram
++ DOC_START
++ Email program used to send mail if the cache dies.
++ The default is "mail". The specified program must complain
++ with the standard Unix mail syntax:
++ mail_program recipient < mailfile
++ Optional command line options can be specified.
++ DOC_END
++
++
+ NAME: cache_effective_user
+ TYPE: string
+ DEFAULT: nobody
+Index: squid/src/structs.h
+diff -c squid/src/structs.h:1.408.2.44 squid/src/structs.h:1.408.2.45
+*** squid/src/structs.h:1.408.2.44 Thu Jun 9 01:51:47 2005
+--- squid/src/structs.h Sun Aug 14 10:28:07 2005
+***************
+*** 480,485 ****
+--- 480,486 ----
+ int rotateNumber;
+ } Log;
+ char *adminEmail;
++ char *EmailProgram;
+ char *effectiveUser;
+ char *effectiveGroup;
+ struct {
+Index: squid/src/tools.c
+diff -c squid/src/tools.c:1.213.2.16 squid/src/tools.c:1.213.2.17
+*** squid/src/tools.c:1.213.2.16 Mon Jun 13 16:26:22 2005
+--- squid/src/tools.c Sun Aug 14 10:28:07 2005
+***************
+*** 110,116 ****
+ fprintf(fp, "To: %s\n", Config.adminEmail);
+ fprintf(fp, "Subject: %s\n", dead_msg());
+ fclose(fp);
+! snprintf(command, 256, "mail %s < %s", Config.adminEmail, filename);
+ system(command); /* XXX should avoid system(3) */
+ unlink(filename);
+ }
+--- 110,116 ----
+ fprintf(fp, "To: %s\n", Config.adminEmail);
+ fprintf(fp, "Subject: %s\n", dead_msg());
+ fclose(fp);
+! snprintf(command, 256, "%s %s < %s", Config.EmailProgram, Config.adminEmail, filename);
+ system(command); /* XXX should avoid system(3) */
+ unlink(filename);
+ }
--- /dev/null
+Index: squid/src/client_side.c
+diff -c squid/src/client_side.c:1.561.2.78 squid/src/client_side.c:1.561.2.79
+*** squid/src/client_side.c:1.561.2.78 Mon Jun 13 16:32:33 2005
+--- squid/src/client_side.c Mon Jun 13 16:41:35 2005
+***************
+*** 357,362 ****
+--- 357,363 ----
+ new_request->client_addr = old_request->client_addr;
+ new_request->my_addr = old_request->my_addr;
+ new_request->my_port = old_request->my_port;
++ new_request->flags = old_request->flags;
+ new_request->flags.redirected = 1;
+ if (old_request->auth_user_request) {
+ new_request->auth_user_request = old_request->auth_user_request;
+***************
+*** 369,375 ****
+ old_request->body_reader_data = NULL;
+ }
+ new_request->content_length = old_request->content_length;
+- new_request->flags.proxy_keepalive = old_request->flags.proxy_keepalive;
+ requestUnlink(old_request);
+ http->request = requestLink(new_request);
+ }
+--- 370,375 ----
--- /dev/null
+Index: squid/src/snmp_core.c
+diff -c squid/src/snmp_core.c:1.51.2.5 squid/src/snmp_core.c:1.51.2.6
+*** squid/src/snmp_core.c:1.51.2.5 Wed May 4 12:03:47 2005
+--- squid/src/snmp_core.c Sun Jun 19 15:01:21 2005
+***************
+*** 660,666 ****
+ if (Current[count] == mibTreeEntry->name[count]) {
+ count++;
+ while ((mibTreeEntry) && (count < CurrentLen) && (!mibTreeEntry->parsefunction)) {
+! mibTreeEntry = snmpTreeEntry(Current[count], count, mibTreeEntry);
+ count++;
+ }
+ debug(49, 5) ("snmpTreeNext: Recursed down to requested object\n");
+--- 660,670 ----
+ if (Current[count] == mibTreeEntry->name[count]) {
+ count++;
+ while ((mibTreeEntry) && (count < CurrentLen) && (!mibTreeEntry->parsefunction)) {
+! mib_tree_entry *nextmibTreeEntry = snmpTreeEntry(Current[count], count, mibTreeEntry);
+! if (!nextmibTreeEntry)
+! break;
+! else
+! mibTreeEntry = nextmibTreeEntry;
+ count++;
+ }
+ debug(49, 5) ("snmpTreeNext: Recursed down to requested object\n");
--- /dev/null
+Index: squid/errors/Spanish//ERR_CACHE_ACCESS_DENIED
+diff -c squid/errors/Spanish//ERR_CACHE_ACCESS_DENIED:1.3.2.3 squid/errors/Spanish//ERR_CACHE_ACCESS_DENIED:1.3.2.4
+*** squid/errors/Spanish//ERR_CACHE_ACCESS_DENIED:1.3.2.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_CACHE_ACCESS_DENIED Mon Jun 6 15:35:43 2005
+***************
+*** 1,11 ****
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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 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>Acceso Denegado al Cache</H2>
+ <HR noshade size="1px">
+ <P>
+ Mientras se intentaba traer el URL:
+--- 1,11 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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é</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é</H2>
+ <HR noshade size="1px">
+ <P>
+ Mientras se intentaba traer el URL:
+***************
+*** 15,34 ****
+ <UL>
+ <LI>
+ <STRONG>
+! Acceso denegado al cache.
+ </STRONG>
+ </UL>
+
+ <P>
+ Disculpe, Ud. no está autorizado a acceder a:
+ <PRE> %U</PRE>
+! desde este cache hasta que se haya autenticado.
+
+
+ <P>
+! Ud. necesita utilizar Netscape version 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 cache</a> si
+ tiene dificultad para autenticarse o <A HREF="http://%h/cgi-bin/chpasswd.cgi">
+ cambie</a> su password.
+ </P>
+--- 15,34 ----
+ <UL>
+ <LI>
+ <STRONG>
+! Acceso denegado al caché.
+ </STRONG>
+ </UL>
+
+ <P>
+ Disculpe, Ud. no está autorizado a acceder a:
+ <PRE> %U</PRE>
+! desde este caché hasta que se haya autenticado.
+
+
+ <P>
+! Ud. necesita utilizar Netscape versió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é</a> si
+ tiene dificultad para autenticarse o <A HREF="http://%h/cgi-bin/chpasswd.cgi">
+ cambie</a> su password.
+ </P>
+Index: squid/errors/Spanish//ERR_CACHE_MGR_ACCESS_DENIED
+diff -c squid/errors/Spanish//ERR_CACHE_MGR_ACCESS_DENIED:1.2.4.3 squid/errors/Spanish//ERR_CACHE_MGR_ACCESS_DENIED:1.2.4.4
+*** squid/errors/Spanish//ERR_CACHE_MGR_ACCESS_DENIED:1.2.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_CACHE_MGR_ACCESS_DENIED Mon Jun 6 15:35:43 2005
+***************
+*** 1,6 ****
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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 Cache Manager</TITLE>
+ <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
+ </HEAD>
+ <BODY>
+--- 1,6 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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é Manager</TITLE>
+ <STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
+ </HEAD>
+ <BODY>
+***************
+*** 21,33 ****
+
+ <P>Disculpe, Ud. no está autorizado a acceder a:
+ <PRE> %U</PRE>
+! desde este cache hasta que se haya autenticado.
+
+ <P>
+! Ud. necesita utilizar Netscape version 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 cache</a> si
+ tiene dificultad para autenticarse, o si Ud. <em>es</em> el administrador,
+ lea la documentación de Squid sobre interfaz del cache manager y
+! chequee en el log de cache mensajes de error más detallados.
+ </P>
+--- 21,33 ----
+
+ <P>Disculpe, Ud. no está autorizado a acceder a:
+ <PRE> %U</PRE>
+! desde este caché hasta que se haya autenticado.
+
+ <P>
+! Ud. necesita utilizar Netscape versió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é</a> si
+ tiene dificultad para autenticarse, o si Ud. <em>es</em> el administrador,
+ lea la documentación de Squid sobre interfaz del cache manager y
+! chequee en el log de caché mensajes de error más detallados.
+ </P>
+Index: squid/errors/Spanish//ERR_CANNOT_FORWARD
+diff -c squid/errors/Spanish//ERR_CANNOT_FORWARD:1.3.4.3 squid/errors/Spanish//ERR_CANNOT_FORWARD:1.3.4.4
+*** squid/errors/Spanish//ERR_CANNOT_FORWARD:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_CANNOT_FORWARD Mon Jun 6 15:35:43 2005
+***************
+*** 19,31 ****
+ </UL>
+
+ <P>
+! La petición no ha podido ser enviada al servidor origen o a alguna
+! de las cachés padres. Las razones más probables de que haya
+ ocurrido este error son:
+ <UL>
+! <LI>El administrador de la caché no permite que esta
+ caché realice conexiones directas a los servidores
+ origen, y
+! <LI>Todas las cachés configuradas como padres son inalcanzables
+ en este momento.
+ </UL>
+--- 19,31 ----
+ </UL>
+
+ <P>
+! La petición no ha podido ser enviada al servidor origen o a alguno
+! de los cachés padres. Las razones más probables de que haya
+ ocurrido este error son:
+ <UL>
+! <LI>El administrador de lo caché no permite que este
+ caché realice conexiones directas a los servidores
+ origen, y
+! <LI>Todos los cachés configurados como padres son inalcanzables
+ en este momento.
+ </UL>
+Index: squid/errors/Spanish//ERR_DNS_FAIL
+diff -c squid/errors/Spanish//ERR_DNS_FAIL:1.3.4.3 squid/errors/Spanish//ERR_DNS_FAIL:1.3.4.4
+*** squid/errors/Spanish//ERR_DNS_FAIL:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_DNS_FAIL Mon Jun 6 15:35:43 2005
+***************
+*** 12,18 ****
+ Ha ocurrido el siguiente problema:
+ <BLOCKQUOTE>
+ Incapaz de determinar la dirección IP a partir
+! del nombre de la mƔquina:
+ <I>%H</I>
+ </BLOCKQUOTE>
+
+--- 12,18 ----
+ Ha ocurrido el siguiente problema:
+ <BLOCKQUOTE>
+ Incapaz de determinar la dirección IP a partir
+! del nombre de la máquina:
+ <I>%H</I>
+ </BLOCKQUOTE>
+
+***************
+*** 25,31 ****
+ <P>
+ Esto significa que:
+ <PRE>
+! La caché no ha sido capaz de resolver el nombre de máquina
+ presente en la URL.
+ Compruebe que la dirección sea correcta.
+ </PRE>
+--- 25,31 ----
+ <P>
+ Esto significa que:
+ <PRE>
+! El caché no ha sido capaz de resolver el nombre de máquina
+ presente en la URL.
+ Compruebe que la dirección sea correcta.
+ </PRE>
+Index: squid/errors/Spanish//ERR_FORWARDING_DENIED
+diff -c squid/errors/Spanish//ERR_FORWARDING_DENIED:1.3.4.3 squid/errors/Spanish//ERR_FORWARDING_DENIED:1.3.4.4
+*** squid/errors/Spanish//ERR_FORWARDING_DENIED:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_FORWARDING_DENIED Mon Jun 6 15:35:43 2005
+***************
+*** 19,25 ****
+ </UL>
+
+ <P>
+! Esta caché no permite reenviar su petición porque trata de
+ obligar a mantener una relación de hermandad.
+! Quizás el cliente en %i es una caché que ha sido mal configurada.
+ </P>
+--- 19,25 ----
+ </UL>
+
+ <P>
+! Este caché no permite reenviar su petición porque trata de
+ obligar a mantener una relación de hermandad.
+! Quizás el cliente en %i es un caché que ha sido mal configurado.
+ </P>
+Index: squid/errors/Spanish//ERR_FTP_DISABLED
+diff -c squid/errors/Spanish//ERR_FTP_DISABLED:1.3.4.3 squid/errors/Spanish//ERR_FTP_DISABLED:1.3.4.4
+*** squid/errors/Spanish//ERR_FTP_DISABLED:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_FTP_DISABLED Mon Jun 6 15:35:43 2005
+***************
+*** 19,23 ****
+ </UL>
+
+ <P>
+! Esta caché no proporciona servicio caché para el protocolo FTP.
+ </P>
+--- 19,23 ----
+ </UL>
+
+ <P>
+! Este caché no proporciona servicio caché para el protocolo FTP.
+ </P>
+Index: squid/errors/Spanish//ERR_FTP_NOT_FOUND
+diff -c squid/errors/Spanish//ERR_FTP_NOT_FOUND:1.3.4.3 squid/errors/Spanish//ERR_FTP_NOT_FOUND:1.3.4.4
+*** squid/errors/Spanish//ERR_FTP_NOT_FOUND:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_FTP_NOT_FOUND Mon Jun 6 15:35:43 2005
+***************
+*** 17,23 ****
+ <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 este es la causa, entonces el
+ archivo puede ser obtenido en <A HREF="%B">%B</A>.
+ </P>
+
+--- 17,23 ----
+ <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>
+
+Index: squid/errors/Spanish//ERR_INVALID_REQ
+diff -c squid/errors/Spanish//ERR_INVALID_REQ:1.3.4.3 squid/errors/Spanish//ERR_INVALID_REQ:1.3.4.4
+*** squid/errors/Spanish//ERR_INVALID_REQ:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_INVALID_REQ Mon Jun 6 15:35:43 2005
+***************
+*** 7,13 ****
+ <H2>El URL solicitado no se ha podido conseguir</H2>
+ <HR noshade size="1px">
+ <P>
+! Mientras se intentaba procesar la peticiĆ³n:
+ <PRE>
+ %R
+ </PRE>
+--- 7,13 ----
+ <H2>El URL solicitado no se ha podido conseguir</H2>
+ <HR noshade size="1px">
+ <P>
+! Mientras se intentaba procesar la petición:
+ <PRE>
+ %R
+ </PRE>
+Index: squid/errors/Spanish//ERR_INVALID_RESP
+diff -c squid/errors/Spanish//ERR_INVALID_RESP:1.1.2.1 squid/errors/Spanish//ERR_INVALID_RESP:1.1.2.2
+*** squid/errors/Spanish//ERR_INVALID_RESP:1.1.2.1 Mon Jan 17 15:13:04 2005
+--- squid/errors/Spanish//ERR_INVALID_RESP Mon Jun 6 15:35:43 2005
+***************
+*** 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>
+ <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>.
+--- 1,30 ----
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD 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ón:
+ <PRE>
+ %R
+ </PRE>
+ <P>
+! Ha ocurrido el siguiente problema:
+ <UL>
+ <LI>
+ <STRONG>
+! Respuesta no válida.
+ </STRONG>
+ </UL>
+
+ <P>
+! El mensaje de Respuesta HTTP recibido del servidor contactado
+! no pudo ser entendido o tenía alguna malformación.
+! Por favor contacte al operador del sitio web. Quizas su
+! administrador del caché pueda darle a Ud. más
+! detalles acerca de la naturaleza exacta del problema en caso
+! de ser necesario.
+! <P>Su administrador del caché es <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Spanish//ERR_INVALID_URL
+diff -c squid/errors/Spanish//ERR_INVALID_URL:1.3.4.3 squid/errors/Spanish//ERR_INVALID_URL:1.3.4.4
+*** squid/errors/Spanish//ERR_INVALID_URL:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_INVALID_URL Mon Jun 6 15:35:43 2005
+***************
+*** 14,20 ****
+ <UL>
+ <LI>
+ <STRONG>
+! URL incorrecta.
+ </STRONG>
+ </UL>
+
+--- 14,20 ----
+ <UL>
+ <LI>
+ <STRONG>
+! URL incorrecto.
+ </STRONG>
+ </UL>
+
+Index: squid/errors/Spanish//ERR_NO_RELAY
+diff -c squid/errors/Spanish//ERR_NO_RELAY:1.3.4.3 squid/errors/Spanish//ERR_NO_RELAY:1.3.4.4
+*** squid/errors/Spanish//ERR_NO_RELAY:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_NO_RELAY Mon Jun 6 15:35:43 2005
+***************
+*** 19,23 ****
+ </UL>
+
+ <P>
+! Esta caché no tiene definido ninguna pasarela para el protocolo WAIS !!
+! ¡Gríteselo al administrador de la caché !
+--- 19,24 ----
+ </UL>
+
+ <P>
+! Este caché no tiene definido ninguna pasarela para el protocolo WAIS !!
+! ¡Grítele al administrador del caché !
+! <P> Su administrador del caché es <A HREF="mailto:%w>%w</A>.
+Index: squid/errors/Spanish//ERR_ONLY_IF_CACHED_MISS
+diff -c squid/errors/Spanish//ERR_ONLY_IF_CACHED_MISS:1.2.4.3 squid/errors/Spanish//ERR_ONLY_IF_CACHED_MISS:1.2.4.4
+*** squid/errors/Spanish//ERR_ONLY_IF_CACHED_MISS:1.2.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_ONLY_IF_CACHED_MISS Mon Jun 6 15:35:43 2005
+***************
+*** 14,28 ****
+ <UL>
+ <LI>
+ <STRONG>
+! No se encontro un documento válido en la caché y se
+ especificó la directiva <code>only-if-cached</code>.
+ </STRONG>
+ </UL>
+
+ <P>
+
+! Ud. ha enviado una solicitud con la directiva de control de la caché
+! <code>only-if-cached</code>. El documento no fue encontrado en la caché,
+ <em>o</em> requiere revalidación prohibida por la directiva
+ <code>only-if-cached</code>.
+
+--- 14,28 ----
+ <UL>
+ <LI>
+ <STRONG>
+! No se encontró un documento válido en el caché y se
+ especificó la directiva <code>only-if-cached</code>.
+ </STRONG>
+ </UL>
+
+ <P>
+
+! Ud. ha enviado una solicitud con la directiva de control del caché
+! <code>only-if-cached</code>. El documento no fue encontrado en el caché,
+ <em>o</em> requiere revalidación prohibida por la directiva
+ <code>only-if-cached</code>.
+
+Index: squid/errors/Spanish//ERR_SHUTTING_DOWN
+diff -c squid/errors/Spanish//ERR_SHUTTING_DOWN:1.2.4.3 squid/errors/Spanish//ERR_SHUTTING_DOWN:1.2.4.4
+*** squid/errors/Spanish//ERR_SHUTTING_DOWN:1.2.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_SHUTTING_DOWN Mon Jun 6 15:35:43 2005
+***************
+*** 13,19 ****
+ Ha ocurrido el siguiente problema:
+ <UL>
+
+! Esta caché esta siendo desactivado y no puede atender su
+ solicitud en este momento. Por favor reintente su solicitud
+ nuevamente más tarde.
+
+--- 13,19 ----
+ Ha ocurrido el siguiente problema:
+ <UL>
+
+! Este caché esta siendo desactivado y no puede atender su
+ solicitud en este momento. Por favor reintente su solicitud
+ nuevamente más tarde.
+
+Index: squid/errors/Spanish//ERR_TOO_BIG
+diff -c squid/errors/Spanish//ERR_TOO_BIG:1.1.6.4 squid/errors/Spanish//ERR_TOO_BIG:1.1.6.5
+*** squid/errors/Spanish//ERR_TOO_BIG:1.1.6.4 Mon Jul 7 01:49:55 2003
+--- squid/errors/Spanish//ERR_TOO_BIG Mon Jun 6 15:35:43 2005
+***************
+*** 24,27 ****
+ directamente si cree que esto es un error.
+ </UL>
+ <P>
+! Su administrdor del caché es <A HREF="mailto:%w">%w</A>.
+--- 24,27 ----
+ directamente si cree que esto es un error.
+ </UL>
+ <P>
+! Su administrador del caché es <A HREF="mailto:%w">%w</A>.
+Index: squid/errors/Spanish//ERR_UNSUP_REQ
+diff -c squid/errors/Spanish//ERR_UNSUP_REQ:1.3.4.3 squid/errors/Spanish//ERR_UNSUP_REQ:1.3.4.4
+*** squid/errors/Spanish//ERR_UNSUP_REQ:1.3.4.3 Wed Aug 28 15:08:14 2002
+--- squid/errors/Spanish//ERR_UNSUP_REQ Mon Jun 6 15:35:43 2005
+***************
+*** 14,20 ****
+ <UL>
+ <LI>
+ <STRONG>
+! Método de la petición y protocolo no soportados
+ </STRONG>
+ </UL>
+
+--- 14,20 ----
+ <UL>
+ <LI>
+ <STRONG>
+! Método de la petición y protocolo no soportados.
+ </STRONG>
+ </UL>
+
--- /dev/null
+Index: squid/src/ssl.c
+diff -c squid/src/ssl.c:1.118.2.11 squid/src/ssl.c:1.118.2.12
+*** squid/src/ssl.c:1.118.2.11 Sun Apr 17 18:54:30 2005
+--- squid/src/ssl.c Thu Sep 1 14:24:27 2005
+***************
+*** 106,111 ****
+--- 106,113 ----
+ sslState->client.fd = -1;
+ if (sslState->server.fd == -1)
+ sslStateFree(sslState);
++ else if (!sslState->connected)
++ comm_close(sslState->server.fd);
+ }
+
+ static void
--- /dev/null
+Index: squid/src/StatHist.c
+diff -c squid/src/StatHist.c:1.26 squid/src/StatHist.c:1.26.2.1
+*** squid/src/StatHist.c:1.26 Wed Oct 24 02:19:08 2001
+--- squid/src/StatHist.c Thu Sep 1 15:52:23 2005
+***************
+*** 90,96 ****
+ /* a max value should go into the last bin */
+ assert(statHistBin(H, max) == H->capacity - 1);
+ /* it is hard to test val_out, here is a crude test */
+! assert(((int) floor(0.99L + statHistVal(H, 0) - min)) == 0);
+ }
+
+ void
+--- 90,96 ----
+ /* a max value should go into the last bin */
+ assert(statHistBin(H, max) == H->capacity - 1);
+ /* it is hard to test val_out, here is a crude test */
+! assert(((int) floor(0.99 + statHistVal(H, 0) - min)) == 0);
+ }
+
+ void
--- /dev/null
+Index: squid/src/client_side.c
+diff -c squid/src/client_side.c:1.561.2.77 squid/src/client_side.c:1.561.2.80
+*** squid/src/client_side.c:1.561.2.77 Thu Jun 9 01:51:47 2005
+--- squid/src/client_side.c Thu Jun 30 02:38:00 2005
+@@ -2733,6 +2733,7 @@
+ int vport;
+ if (vhost_mode) {
+ #if IPF_TRANSPARENT
++ static time_t last_reported = 0;
+ natLookup.nl_inport = http->conn->me.sin_port;
+ natLookup.nl_outport = http->conn->peer.sin_port;
+ natLookup.nl_inip = http->conn->me.sin_addr;
+@@ -2751,12 +2752,10 @@
+ errno = save_errno;
+ }
+ if (natfd < 0) {
+- debug(50, 1) ("parseHttpRequest: NAT open failed: %s\n",
+- xstrerror());
+- dlinkDelete(&http->active, &ClientActiveRequests);
+- xfree(http->uri);
+- cbdataFree(http);
+- xfree(inbuf);
++ if (squid_curtime - last_reported > 60) {
++ debug(50, 1) ("parseHttpRequest: NAT open failed: %s\n", xstrerror());
++ last_reported = squid_curtime;
++ }
+ } else {
+ /*
+ * IP-Filter changed the type for SIOCGNATL between
+@@ -2773,48 +2772,59 @@
+ }
+ if (x < 0) {
+ if (errno != ESRCH) {
+- debug(50, 1) ("parseHttpRequest: NAT lookup failed: ioctl(SIOCGNATL)\n");
++ if (squid_curtime - last_reported > 60) {
++ debug(50, 1) ("parseHttpRequest: NAT lookup failed: ioctl(SIOCGNATL): %s\n", xstrerror());
++ last_reported = squid_curtime;
++ }
+ close(natfd);
+ natfd = -1;
+- dlinkDelete(&http->active, &ClientActiveRequests);
+- xfree(http->uri);
+- cbdataFree(http);
+- xfree(inbuf);
+ }
+ } else {
+ conn->me.sin_port = natLookup.nl_realport;
+- http->conn->me.sin_addr = natLookup.nl_realip;
++ conn->me.sin_addr = natLookup.nl_realip;
+ }
+ }
+ #elif PF_TRANSPARENT
++ static time_t last_reported = 0;
+ if (pffd < 0)
+ pffd = open("/dev/pf", O_RDWR);
+ if (pffd < 0) {
+- debug(50, 1) ("parseHttpRequest: PF open failed: %s\n",
+- xstrerror());
+- return parseHttpRequestAbort(conn, "error:pf-open-failed");
+- }
+- memset(&nl, 0, sizeof(struct pfioc_natlook));
+- nl.saddr.v4.s_addr = http->conn->peer.sin_addr.s_addr;
+- nl.sport = http->conn->peer.sin_port;
+- nl.daddr.v4.s_addr = http->conn->me.sin_addr.s_addr;
+- nl.dport = http->conn->me.sin_port;
+- nl.af = AF_INET;
+- nl.proto = IPPROTO_TCP;
+- nl.direction = PF_OUT;
+- if (ioctl(pffd, DIOCNATLOOK, &nl)) {
+- if (errno != ENOENT) {
+- debug(50, 1) ("parseHttpRequest: PF lookup failed: ioctl(DIOCNATLOOK)\n");
+- close(pffd);
+- pffd = -1;
++ if (squid_curtime - last_reported > 60) {
++ debug(50, 1) ("parseHttpRequest: PF open failed: %s\n", xstrerror());
++ last_reported = squid_curtime;
+ }
+ } else {
+- conn->me.sin_port = nl.rdport;
+- http->conn->me.sin_addr = nl.rdaddr.v4;
++ memset(&nl, 0, sizeof(struct pfioc_natlook));
++ nl.saddr.v4.s_addr = http->conn->peer.sin_addr.s_addr;
++ nl.sport = http->conn->peer.sin_port;
++ nl.daddr.v4.s_addr = http->conn->me.sin_addr.s_addr;
++ nl.dport = http->conn->me.sin_port;
++ nl.af = AF_INET;
++ nl.proto = IPPROTO_TCP;
++ nl.direction = PF_OUT;
++ if (ioctl(pffd, DIOCNATLOOK, &nl)) {
++ if (errno != ENOENT) {
++ if (squid_curtime - last_reported > 60) {
++ debug(50, 1) ("parseHttpRequest: PF lookup failed: ioctl(DIOCNATLOOK): %s\n", xstrerror());
++ last_reported = squid_curtime;
++ }
++ close(pffd);
++ pffd = -1;
++ }
++ } else {
++ conn->me.sin_port = nl.rdport;
++ conn->me.sin_addr = nl.rdaddr.v4;
++ }
+ }
+ #elif LINUX_NETFILTER
++ static time_t last_reported = 0;
+ /* If the call fails the address structure will be unchanged */
+- getsockopt(conn->fd, SOL_IP, SO_ORIGINAL_DST, &conn->me, &sock_sz);
++ if (getsockopt(conn->fd, SOL_IP, SO_ORIGINAL_DST, &conn->me, &sock_sz) != 0) {
++ if (squid_curtime - last_reported > 60) {
++ debug(50, 1) ("parseHttpRequest: NF getsockopt(SO_ORIGINAL_DST) failed: %s\n", xstrerror());
++ last_reported = squid_curtime;
++ }
++ }
+ #endif
+ }
+ if (vport_mode)
--- /dev/null
+Index: squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c
+diff -c squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c:1.1.2.9 squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c:1.1.2.10
+*** squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c:1.1.2.9 Thu Jun 30 12:50:56 2005
+--- squid/helpers/ntlm_auth/winbind/wb_ntlm_auth.c Sat Jul 9 02:42:49 2005
+***************
+*** 117,138 ****
+ if (have_urandom == DONTKNOW) {
+ int result = 0;
+ struct stat st;
+ result = stat(ENTROPY_SOURCE, &st);
+ if (result != 0 || !(S_ISCHR(st.st_mode) || S_ISBLK(st.st_mode))) {
+ debug("Entropy source " ENTROPY_SOURCE " is unavailable\n");
+ have_urandom = NO;
+! }
+! if ((urandom_file = fopen(ENTROPY_SOURCE, "r")) == NULL) {
+! unsigned int seed;
+! struct timeval t;
+ warn("Can't open entropy source " ENTROPY_SOURCE "\n");
+ have_urandom = NO;
+! gettimeofday(&t, NULL);
+! seed = squid_random() * getpid() * t.tv_sec * t.tv_usec;
+! squid_srandom(seed);
+! } else {
+ have_urandom = YES;
+- }
+ }
+ }
+
+--- 117,136 ----
+ if (have_urandom == DONTKNOW) {
+ int result = 0;
+ struct stat st;
++ unsigned int seed;
++ struct timeval t;
++ gettimeofday(&t, NULL);
++ seed = squid_random() * getpid() * t.tv_sec * t.tv_usec;
++ squid_srandom(seed);
+ result = stat(ENTROPY_SOURCE, &st);
+ if (result != 0 || !(S_ISCHR(st.st_mode) || S_ISBLK(st.st_mode))) {
+ debug("Entropy source " ENTROPY_SOURCE " is unavailable\n");
+ have_urandom = NO;
+! } else if ((urandom_file = fopen(ENTROPY_SOURCE, "r")) == NULL) {
+ warn("Can't open entropy source " ENTROPY_SOURCE "\n");
+ have_urandom = NO;
+! } else
+ have_urandom = YES;
+ }
+ }
+
+***************
+*** 349,355 ****
+ domain = strdup(response.data.domain_name);
+ uc(domain);
+
+! warn("target domain is %s\n", domain);
+ return domain;
+ }
+
+--- 347,353 ----
+ domain = strdup(response.data.domain_name);
+ uc(domain);
+
+! debug("target domain is %s\n", domain);
+ return domain;
+ }
+
--- /dev/null
+Index: squid/helpers/external_acl/wbinfo_group/wbinfo_group.pl
+diff -c squid/helpers/external_acl/wbinfo_group/wbinfo_group.pl:1.1.2.2 squid/helpers/external_acl/wbinfo_group/wbinfo_group.pl:1.1.2.3
+*** squid/helpers/external_acl/wbinfo_group/wbinfo_group.pl:1.1.2.2 Tue Feb 17 15:37:51 2004
+--- squid/helpers/external_acl/wbinfo_group/wbinfo_group.pl Wed Jun 29 14:34:14 2005
+***************
+*** 15,20 ****
+--- 15,23 ----
+ # 2002-07-05 Jerry Murdock <jmurdock@itraktech.com>
+ # Initial release
+ #
++ # 2005-06-28 Arno Streuli <astreuli@gmail.com>
++ # Add multi group check
++
+
+ # external_acl uses shell style lines in it's protocol
+ require 'shellwords.pl';
+***************
+*** 47,54 ****
+ while (<STDIN>) {
+ chop;
+ &debug ("Got $_ from squid");
+! ($user, $group) = &shellwords;
+! $ans = &check($user, $group);
+ &debug ("Sending $ans to squid");
+ print "$ans\n";
+ }
+--- 50,61 ----
+ while (<STDIN>) {
+ chop;
+ &debug ("Got $_ from squid");
+! ($user, @groups) = &shellwords;
+! # test for each group squid send in it's request
+! foreach $group (@groups) {
+! $ans = &check($user, $group);
+! last if $ans eq "OK";
+! }
+ &debug ("Sending $ans to squid");
+ print "$ans\n";
+ }