]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
url checksum debugging; sometimes URL memory gets trashed
authorwessels <>
Wed, 29 Sep 1999 06:22:13 +0000 (06:22 +0000)
committerwessels <>
Wed, 29 Sep 1999 06:22:13 +0000 (06:22 +0000)
src/forward.cc
src/http.cc
src/protos.h
src/store.cc
src/structs.h

index e953521476114c646fb16143d40fbfce11c8cd58..b5dadfe1bb0318918744cb0e957d6a41a1c1727f 100644 (file)
@@ -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",
index 73ed6a6299f140bf07001d856a306f3e0a5eceba..ca7981eb2e8b1cf8d2c07a3d1dae17f40c8c3e26 100644 (file)
@@ -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);
index 25a67a4972e503a0ed6e06fc68c5a3d91486bbfc..763a4ca2ac6099823b54074704107103efe0c61f 100644 (file)
@@ -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
index fd340c94b579aaaf9592bddd0c017a4396d374b6..a84501ffd04c91e8de5037e1510fa8840d912b33 100644 (file)
@@ -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);
index b4952610ab64e884fb029b712d880970e14e8d64..929bf7492da4777e8961b12cca7003baf43a13e4 100644 (file)
@@ -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 {