/*
- * $Id: net_db.cc,v 1.162 2002/06/26 09:55:56 hno Exp $
+ * $Id: net_db.cc,v 1.163 2002/09/25 22:23:59 robertc Exp $
*
* DEBUG: section 38 Network Measurement Database
* AUTHOR: Duane Wessels
#include "squid.h"
#if USE_ICMP
+#include "StoreClient.h"
+
#define NETDB_REQBUF_SZ 4096
typedef enum {
static void
-netdbExchangeHandleReply(void *data, char *notused, ssize_t retsize)
+netdbExchangeHandleReply(void *data, StoreIOBuffer recievedData)
{
netdbExchangeState *ex = data;
int rec_sz = 0;
rec_sz += 1 + sizeof(addr.s_addr);
rec_sz += 1 + sizeof(int);
rec_sz += 1 + sizeof(int);
- debug(38, 3) ("netdbExchangeHandleReply: %d read bytes\n", (int) retsize);
+ debug(38, 3) ("netdbExchangeHandleReply: %d read bytes\n", (int) recievedData.length);
if (!cbdataReferenceValid(ex->p)) {
debug(38, 3) ("netdbExchangeHandleReply: Peer became invalid\n");
netdbExchangeDone(ex);
p = ex->buf;
/* Get the size of the buffer now */
- size = ex->buf_ofs + retsize;
+ size = ex->buf_ofs + recievedData.length;
debug(38, 3) ("netdbExchangeHandleReply: %d bytes buf\n", (int) size);
/* Check if we're still doing headers */
if (ex->connstate == STATE_HEADER) {
- ex->buf_ofs += retsize;
+ ex->buf_ofs += recievedData.length;
/* skip reply headers */
if ((hdr_sz = headersEnd(p, ex->buf_ofs))) {
/* Finally, set the conn state mode to STATE_BODY */
ex->connstate = STATE_BODY;
} else {
+ StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ tempBuffer.offset = ex->buf_ofs;
+ tempBuffer.length = ex->buf_sz - ex->buf_ofs;
+ tempBuffer.data = ex->buf + ex->buf_ofs;
/* Have more headers .. */
- storeClientCopy(ex->sc, ex->e, ex->buf_ofs,
- ex->buf_sz - ex->buf_ofs, ex->buf + ex->buf_ofs,
+ storeClientCopy(ex->sc, ex->e, tempBuffer,
netdbExchangeHandleReply, ex);
return;
}
debug(38, 3) ("netdbExchangeHandleReply: ENTRY_ABORTED\n");
netdbExchangeDone(ex);
} else if (ex->e->store_status == STORE_PENDING) {
+ StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ tempBuffer.offset = ex->used;
+ tempBuffer.length = ex->buf_sz - ex->buf_ofs;
+ tempBuffer.data = ex->buf + ex->buf_ofs;
debug(38, 3) ("netdbExchangeHandleReply: STORE_PENDING\n");
- storeClientCopy(ex->sc, ex->e, ex->used, ex->buf_sz - ex->buf_ofs,
- ex->buf + ex->buf_ofs, netdbExchangeHandleReply, ex);
+ storeClientCopy(ex->sc, ex->e, tempBuffer,
+ netdbExchangeHandleReply, ex);
} else if (ex->used < ex->e->mem_obj->inmem_hi) {
+ StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
+ tempBuffer.offset = ex->used;
+ tempBuffer.length = ex->buf_sz - ex->buf_ofs;
+ tempBuffer.data = ex->buf + ex->buf_ofs;
debug(38, 3) ("netdbExchangeHandleReply: ex->e->mem_obj->inmem_hi\n");
- storeClientCopy(ex->sc, ex->e, ex->used, ex->buf_sz - ex->buf_ofs,
- ex->buf + ex->buf_ofs, netdbExchangeHandleReply, ex);
+ storeClientCopy(ex->sc, ex->e, tempBuffer,
+ netdbExchangeHandleReply, ex);
} else {
debug(38, 3) ("netdbExchangeHandleReply: Done\n");
netdbExchangeDone(ex);
peer *p = data;
char *uri;
netdbExchangeState *ex;
+ StoreIOBuffer tempBuffer = EMPTYIOBUFFER;
CBDATA_INIT_TYPE(netdbExchangeState);
ex = cbdataAlloc(netdbExchangeState);
ex->p = cbdataReference(p);
ex->buf_sz = NETDB_REQBUF_SZ;
assert(NULL != ex->e);
ex->sc = storeClientListAdd(ex->e, ex);
- storeClientCopy(ex->sc, ex->e, 0, ex->buf_sz, ex->buf,
+ tempBuffer.offset = 0;
+ tempBuffer.length = ex->buf_sz;
+ tempBuffer.data = ex->buf;
+ storeClientCopy(ex->sc, ex->e, tempBuffer,
netdbExchangeHandleReply, ex);
ex->r->flags.loopdetect = 1; /* cheat! -- force direct */
if (p->login)