--------------------- PatchSet 10338 Date: 2007/12/28 07:52:30 Author: adri Branch: s27_adri Tag: (none) Log: A couple of tidyups. peer_digest.c: fix; store_client.c: don't allow storeClientCopy() calls. Members: src/peer_digest.c:1.21.10.2.4.7->1.21.10.2.4.8 src/store_client.c:1.25.10.5.4.2->1.25.10.5.4.3 Index: squid/src/peer_digest.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/peer_digest.c,v retrieving revision 1.21.10.2.4.7 retrieving revision 1.21.10.2.4.8 diff -u -r1.21.10.2.4.7 -r1.21.10.2.4.8 --- squid/src/peer_digest.c 28 Dec 2007 04:05:41 -0000 1.21.10.2.4.7 +++ squid/src/peer_digest.c 28 Dec 2007 07:52:30 -0000 1.21.10.2.4.8 @@ -1,6 +1,6 @@ /* - * $Id: peer_digest.c,v 1.21.10.2.4.7 2007/12/28 04:05:41 adri Exp $ + * $Id: peer_digest.c,v 1.21.10.2.4.8 2007/12/28 07:52:30 adri Exp $ * * DEBUG: section 72 Peer Digest Routines * AUTHOR: Alex Rousskov @@ -341,11 +341,11 @@ static void peerDigestFetchReply(void *data, mem_node_ref nr, ssize_t size) { - const char *buf; + const char *buf = NULL; DigestFetchState *fetch = data; PeerDigest *pd = fetch->pd; size_t hdr_size; - assert(pd && buf); + assert(pd && ! MEMREF_ISNULL(nr)); assert(!fetch->offset); assert(size <= MEMREF_LEN(nr)); Index: squid/src/store_client.c =================================================================== RCS file: /cvsroot/squid-sf//squid/src/store_client.c,v retrieving revision 1.25.10.5.4.2 retrieving revision 1.25.10.5.4.3 diff -u -r1.25.10.5.4.2 -r1.25.10.5.4.3 --- squid/src/store_client.c 22 Dec 2007 14:32:13 -0000 1.25.10.5.4.2 +++ squid/src/store_client.c 28 Dec 2007 07:52:30 -0000 1.25.10.5.4.3 @@ -1,6 +1,6 @@ /* - * $Id: store_client.c,v 1.25.10.5.4.2 2007/12/22 14:32:13 adri Exp $ + * $Id: store_client.c,v 1.25.10.5.4.3 2007/12/28 07:52:30 adri Exp $ * * DEBUG: section 20 Storage Manager Client-Side Interface * AUTHOR: Duane Wessels @@ -225,6 +225,7 @@ STCB * callback, void *data) { + assert(1==0); assert(!EBIT_TEST(e->flags, ENTRY_ABORTED)); debug(20, 3) ("storeClientCopy: %s, seen %" PRINTF_OFF_T ", want %" PRINTF_OFF_T ", size %d, cb %p, cbdata %p\n", storeKeyText(e->hash.key), @@ -405,11 +406,12 @@ assert(!sc->flags.disk_io_pending); sc->flags.disk_io_pending = 1; assert(sc->node_ref.node == NULL); /* We should never, ever have a node here; or we'd leak! */ - stmemNodeRefCreate(&sc->node_ref); /* Creates an entry with reference count == 1 */ + stmemNodeRefCreate(&sc->node_ref); /* Creates an entry with reference count == 0 (which is "a reference" in that code) */ + /* XXX these macros should be const char! [ahc] */ if (mem->swap_hdr_sz == 0) { storeRead(sc->swapin_sio, - sc->node_ref.node->data, - XMIN(SM_PAGE_SIZE, sc->copy_size), + MEMREF_BUF(sc->node_ref), + XMIN(MEMREF_LEN(sc->node_ref), sc->copy_size), 0, storeClientReadHeader, sc); @@ -417,8 +419,8 @@ if (sc->entry->swap_status == SWAPOUT_WRITING) assert(storeSwapOutObjectBytesOnDisk(mem) > sc->copy_offset); /* XXX is this right? Shouldn't we incl. mem->swap_hdr_sz? */ storeRead(sc->swapin_sio, - sc->node_ref.node->data, - XMIN(SM_PAGE_SIZE, sc->copy_size), + MEMREF_BUF(sc->node_ref), + XMIN(MEMREF_LEN(sc->node_ref), sc->copy_size), sc->copy_offset + mem->swap_hdr_sz, storeClientReadBody, sc); @@ -439,14 +441,13 @@ } if (sc->new_callback) { assert(sc->node_ref.node); - cbuf = sc->node_ref.node->data; + cbuf = MEMREF_BUF(sc->node_ref); } else { cbuf = sc->copy_buf; } /* XXX update how much data in that mem page is active; argh this should be done in a storage layer */ if (sc->new_callback) { - assert(sc->node_ref.node); - sc->node_ref.node->len = len; + assert(! MEMREF_ISNULL(sc->node_ref)); } debug(20, 3) ("storeClientReadBody: len %d\n", (int) len); if (sc->copy_offset == 0 && len > 0 && memHaveHeaders(mem) == 0) @@ -477,15 +478,14 @@ } if (sc->new_callback) { assert(sc->node_ref.node); - cbuf = sc->node_ref.node->data; + cbuf = MEMREF_BUF(sc->node_ref); } else { cbuf = sc->copy_buf; } debug(20, 3) ("storeClientReadHeader: len %d\n", (int) len); /* XXX update how much data in that mem page is active; argh this should be done in a storage layer */ if (sc->new_callback) { - assert(sc->node_ref.node); - sc->node_ref.node->len = len; + assert(! MEMREF_ISNULL(sc->node_ref)); } if (len < 0) { debug(20, 3) ("storeClientReadHeader: %s\n", xstrerror()); @@ -608,8 +608,8 @@ copy_sz = XMIN(sc->copy_size, body_sz); debug(20, 3) ("storeClientReadHeader: copying %d bytes of body\n", (int) copy_sz); - debug(20, 8) ("sc %p; node_ref->node %p; data %p; copy size %d; data size %d\n", - sc, sc->node_ref.node, sc->node_ref.node->data, (int) copy_sz, (int) len); + debug(20, 8) ("sc %p; node_ref->node %p; buf %p; copy size %d; data size %d\n", + sc, sc->node_ref.node, MEMREF_BUF(sc->node_ref), (int) copy_sz, (int) len); xmemmove(cbuf, cbuf + swap_hdr_sz, copy_sz); if (sc->copy_offset == 0 && len > 0 && memHaveHeaders(mem) == 0) httpReplyParse(mem->reply, cbuf,