From: wessels <> Date: Wed, 29 Sep 1999 06:22:13 +0000 (+0000) Subject: url checksum debugging; sometimes URL memory gets trashed X-Git-Tag: SQUID_3_0_PRE1~2117 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bc87dc2510b33a160e21d6c231c223dc348c72bc;p=thirdparty%2Fsquid.git url checksum debugging; sometimes URL memory gets trashed --- diff --git a/src/forward.cc b/src/forward.cc index e953521476..b5dadfe1bb 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -1,6 +1,6 @@ /* - * $Id: forward.cc,v 1.64 1999/08/02 06:18:36 wessels Exp $ + * $Id: forward.cc,v 1.65 1999/09/29 00:22:13 wessels Exp $ * * DEBUG: section 17 Request Forwarding * AUTHOR: Duane Wessels @@ -68,6 +68,9 @@ fwdStateFree(FwdState * fwdState) int sfd; debug(17, 3) ("fwdStateFree: %p\n", fwdState); assert(e->mem_obj); +#if URL_CHECKSUM_DEBUG + assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); +#endif if (e->store_status == STORE_PENDING) { if (e->mem_obj->inmem_hi == 0) { assert(fwdState->err); @@ -240,6 +243,9 @@ fwdConnectStart(void *data) fwdConnectDone(fd, COMM_OK, fwdState); return; } +#if URL_CHECKSUM_DEBUG + assert(fwdState->entry->mem_obj->chksum == url_checksum(url)); +#endif fd = comm_open(SOCK_STREAM, 0, Config.Addrs.tcp_outgoing, @@ -369,6 +375,9 @@ fwdReforward(FwdState * fwdState) http_status s; assert(e->store_status == STORE_PENDING); assert(e->mem_obj); +#if URL_CHECKSUM_DEBUG + assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); +#endif debug(17, 3) ("fwdReforward: %s?\n", storeUrl(e)); if (!EBIT_TEST(e->flags, ENTRY_FWD_HDR_WAIT)) { debug(17, 3) ("fwdReforward: No, ENTRY_FWD_HDR_WAIT isn't set\n"); @@ -436,6 +445,9 @@ fwdStart(int fd, StoreEntry * e, request_t * r, struct in_addr client_addr, debug(17, 3) ("fwdStart: '%s'\n", storeUrl(e)); e->mem_obj->request = requestLink(r); e->mem_obj->fd = fd; +#if URL_CHECKSUM_DEBUG + assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); +#endif if (shutting_down) { /* more yuck */ err = errorCon(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE); @@ -479,6 +491,9 @@ fwdCheckDeferRead(int fd, void *data) MemObject *mem = e->mem_obj; if (mem == NULL) return 0; +#if URL_CHECKSUM_DEBUG + assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); +#endif #if DELAY_POOLS if (fd < 0) (void) 0; @@ -544,6 +559,9 @@ fwdComplete(FwdState * fwdState) assert(e->store_status == STORE_PENDING); debug(17, 3) ("fwdComplete: %s\n\tstatus %d\n", storeUrl(e), e->mem_obj->reply->sline.status); +#if URL_CHECKSUM_DEBUG + assert(e->mem_obj->chksum == url_checksum(e->mem_obj->url)); +#endif fwdLogReplyStatus(fwdState->n_tries, e->mem_obj->reply->sline.status); if (fwdReforward(fwdState)) { debug(17, 3) ("fwdComplete: re-forwarding %d %s\n", diff --git a/src/http.cc b/src/http.cc index 73ed6a6299..ca7981eb2e 100644 --- a/src/http.cc +++ b/src/http.cc @@ -1,6 +1,6 @@ /* - * $Id: http.cc,v 1.352 1999/08/02 06:18:37 wessels Exp $ + * $Id: http.cc,v 1.353 1999/09/29 00:22:14 wessels Exp $ * * DEBUG: section 11 Hypertext Transfer Protocol (HTTP) * AUTHOR: Harvest Derived @@ -560,6 +560,9 @@ httpSendComplete(int fd, char *bufnotused, size_t size, int errflag, void *data) ErrorState *err; debug(11, 5) ("httpSendComplete: FD %d: size %d: errflag %d.\n", fd, size, errflag); +#if URL_CHECKSUM_DEBUG + assert(entry->mem_obj->chksum == url_checksum(entry->mem_obj->url)); +#endif if (size > 0) { fd_bytes(fd, size, FD_WRITE); kb_incr(&Counter.server.all.kbytes_out, size); diff --git a/src/protos.h b/src/protos.h index 25a67a4972..763a4ca2ac 100644 --- a/src/protos.h +++ b/src/protos.h @@ -1,6 +1,6 @@ /* - * $Id: protos.h,v 1.345 1999/09/28 23:48:47 wessels Exp $ + * $Id: protos.h,v 1.346 1999/09/29 00:22:16 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -1229,3 +1229,7 @@ extern int getrusage(int, struct rusage *); extern int getpagesize(void); extern int gethostname(char *, int); #endif + +#if URL_CHECKSUM_DEBUG +extern unsigned int url_checksum(const char *url); +#endif diff --git a/src/store.cc b/src/store.cc index fd340c94b5..a84501ffd0 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.507 1999/08/02 06:18:42 wessels Exp $ + * $Id: store.cc,v 1.508 1999/09/29 00:22:18 wessels Exp $ * * DEBUG: section 20 Storage Manager * AUTHOR: Harvest Derived @@ -110,12 +110,30 @@ static int store_swap_low = 0; static int store_swap_mid = 0; static Stack LateReleaseStack; +#if URL_CHECKSUM_DEBUG +unsigned int +url_checksum(const char *url) +{ + unsigned int ck; + MD5_CTX M; + static unsigned char digest[16]; + MD5Init(&M); + MD5Update(&M, (unsigned char *) url, strlen(url)); + MD5Final(digest, &M); + xmemcpy(&ck, digest, sizeof(ck)); + return ck; +} +#endif + static MemObject * new_MemObject(const char *url, const char *log_url) { MemObject *mem = memAllocate(MEM_MEMOBJECT); mem->reply = httpReplyCreate(); mem->url = xstrdup(url); +#if URL_CHECKSUM_DEBUG + mem->chksum = url_checksum(mem->url); +#endif mem->log_url = xstrdup(log_url); mem->object_sz = -1; mem->fd = -1; @@ -142,6 +160,9 @@ destroy_MemObject(StoreEntry * e) MemObject *mem = e->mem_obj; const Ctx ctx = ctx_enter(mem->url); debug(20, 3) ("destroy_MemObject: destroying %p\n", mem); +#if URL_CHECKSUM_DEBUG + assert(mem->chksum == url_checksum(mem->url)); +#endif e->mem_obj = NULL; if (!shutting_down) assert(mem->swapout.sio == NULL); diff --git a/src/structs.h b/src/structs.h index b4952610ab..929bf7492d 100644 --- a/src/structs.h +++ b/src/structs.h @@ -1,6 +1,6 @@ /* - * $Id: structs.h,v 1.305 1999/08/02 06:18:48 wessels Exp $ + * $Id: structs.h,v 1.306 1999/09/29 00:22:20 wessels Exp $ * * * SQUID Internet Object Cache http://squid.nlanr.net/Squid/ @@ -1251,6 +1251,9 @@ struct _MemObject { int id; ssize_t object_sz; size_t swap_hdr_sz; +#if URL_CHECKSUM_DEBUG + unsigned int chksum; +#endif }; struct _StoreEntry {