Index: squid/lib/rfc2617.c diff -c squid/lib/rfc2617.c:1.5 squid/lib/rfc2617.c:1.5.2.1 *** squid/lib/rfc2617.c:1.5 Wed Oct 17 07:30:50 2001 --- squid/lib/rfc2617.c Tue Sep 23 10:05:41 2003 *************** *** 79,89 **** unsigned char j; for (i = 0; i < HASHHEXLEN; i++) { j = Hex[i]; if (('0' <= j) && (j <= '9')) ! Bin[i / 2] |= ((j - '0') << ((i % 2 == 0) ? 4 : 0)); else ! Bin[i / 2] |= ((j - 'a' + 10) << ((i % 2 == 0) ? 4 : 0)); } Bin[HASHLEN] = '\0'; } --- 79,94 ---- unsigned char j; for (i = 0; i < HASHHEXLEN; i++) { + unsigned char n; j = Hex[i]; if (('0' <= j) && (j <= '9')) ! n = j - '0'; else ! n = j - 'a' + 10; ! if (i % 2 == 0) ! Bin[i / 2] = n << 4; ! else ! Bin[i / 2] |= n; } Bin[HASHLEN] = '\0'; } Index: squid/src/auth/digest/auth_digest.c diff -c squid/src/auth/digest/auth_digest.c:1.10.2.7 squid/src/auth/digest/auth_digest.c:1.10.2.8 *** squid/src/auth/digest/auth_digest.c:1.10.2.7 Sun Aug 10 01:31:33 2003 --- squid/src/auth/digest/auth_digest.c Tue Sep 23 10:05:41 2003 *************** *** 695,701 **** debug(29, 9) ("\nResponse = '%s'\n" "squid is = '%s'\n", digest_request->response, Response); ! if (strcasecmp(digest_request->response, Response)) { if (digestConfig->PostWorkaround && request->method != METHOD_GET) { /* Ugly workaround for certain very broken browsers using the * wrong method to calculate the request-digest on POST request. --- 695,707 ---- debug(29, 9) ("\nResponse = '%s'\n" "squid is = '%s'\n", digest_request->response, Response); ! if (strcasecmp(digest_request->response, Response) != 0) { ! if (!digest_request->flags.helper_queried) { ! /* Query the helper in case the password has changed */ ! digest_request->flags.helper_queried = 1; ! digest_request->flags.credentials_ok = 2; ! return; ! } if (digestConfig->PostWorkaround && request->method != METHOD_GET) { /* Ugly workaround for certain very broken browsers using the * wrong method to calculate the request-digest on POST request. Index: squid/src/auth/digest/auth_digest.h diff -c squid/src/auth/digest/auth_digest.h:1.5.2.3 squid/src/auth/digest/auth_digest.h:1.5.2.4 *** squid/src/auth/digest/auth_digest.h:1.5.2.3 Sun May 18 15:49:20 2003 --- squid/src/auth/digest/auth_digest.h Tue Sep 23 10:05:42 2003 *************** *** 44,49 **** --- 44,50 ---- unsigned int authinfo_sent:1; unsigned int credentials_ok:2; /*0=unchecked,1=ok,2=helper,3=failed */ unsigned int nonce_stale:1; + unsigned int helper_queried:1; } flags; digest_nonce_h *nonce; };