From: Amos Jeffries Date: Sat, 4 Dec 2010 09:34:55 +0000 (+1300) Subject: Unwrap users of legacy comm_read() wrapper X-Git-Tag: take08~55^2~124^2~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=abd8f1401c3ecc861256630aa8fd49f720cbadcd;p=thirdparty%2Fsquid.git Unwrap users of legacy comm_read() wrapper --- diff --git a/src/comm.cc b/src/comm.cc index a4ff2ef1eb..52fd50eda2 100644 --- a/src/comm.cc +++ b/src/comm.cc @@ -151,10 +151,7 @@ commHandleRead(int fd, void *data) commSetSelect(fd, COMM_SELECT_READ, commHandleRead, data, 0); } -/** - * Queue a read. handler/handler_data are called when the read - * completes, on error, or on file descriptor close. - */ +#if 0 // obsolete wrapper. void comm_read(const Comm::ConnectionPointer &conn, char *buf, int size, IOCB *handler, void *handler_data) { @@ -162,7 +159,12 @@ comm_read(const Comm::ConnectionPointer &conn, char *buf, int size, IOCB *handle CommIoCbPtrFun(handler, handler_data)); comm_read(conn, buf, size, call); } +#endif +/** + * Queue a read. handler/handler_data are called when the read + * completes, on error, or on file descriptor close. + */ void comm_read(const Comm::ConnectionPointer &conn, char *buf, int size, AsyncCall::Pointer &callback) { diff --git a/src/comm.h b/src/comm.h index 2c76b5d974..10bd170a7f 100644 --- a/src/comm.h +++ b/src/comm.h @@ -89,7 +89,7 @@ extern void comm_remove_close_handler(int fd, AsyncCall::Pointer &); extern int comm_has_pending_read_callback(int fd); extern bool comm_monitors_read(int fd); -extern void comm_read(const Comm::ConnectionPointer &conn, char *buf, int len, IOCB *handler, void *data); +//extern void comm_read(const Comm::ConnectionPointer &conn, char *buf, int len, IOCB *handler, void *data); extern void comm_read(const Comm::ConnectionPointer &conn, char *buf, int len, AsyncCall::Pointer &callback); extern void comm_read_cancel(int fd, IOCB *callback, void *data); extern void comm_read_cancel(int fd, AsyncCall::Pointer &callback); diff --git a/src/dns_internal.cc b/src/dns_internal.cc index 903ef656aa..c18626ef59 100644 --- a/src/dns_internal.cc +++ b/src/dns_internal.cc @@ -796,7 +796,9 @@ idnsInitVCConnected(const Comm::ConnectionPointer &conn, comm_err_t status, int vc->conn = conn; comm_add_close_handler(conn->fd, idnsVCClosed, vc); - comm_read(conn, (char *)&vc->msglen, 2 , idnsReadVCHeader, vc); + AsyncCall::Pointer call = commCbCall(5,4, "idnsReadVCHeader", + CommIoCbPtrFun(idnsReadVCHeader, vc)); + comm_read(conn, (char *)&vc->msglen, 2, call); vc->busy = 0; idnsDoSendQueryVC(vc); } @@ -1373,7 +1375,9 @@ idnsReadVC(const Comm::ConnectionPointer &conn, char *buf, size_t len, comm_err_ vc->msg->size += len; // XXX should not access -> size directly if (vc->msg->contentSize() < vc->msglen) { - comm_read(conn, buf + len, vc->msglen - vc->msg->contentSize(), idnsReadVC, vc); + AsyncCall::Pointer call = commCbCall(5,4, "idnsReadVC", + CommIoCbPtrFun(idnsReadVC, vc)); + comm_read(conn, buf+len, vc->msglen - vc->msg->contentSize(), call); return; } @@ -1382,7 +1386,9 @@ idnsReadVC(const Comm::ConnectionPointer &conn, char *buf, size_t len, comm_err_ idnsGrokReply(vc->msg->buf, vc->msg->contentSize(), vc->ns); vc->msg->clean(); - comm_read(conn, (char *)&vc->msglen, 2 , idnsReadVCHeader, vc); + AsyncCall::Pointer call = commCbCall(5,4, "idnsReadVCHeader", + CommIoCbPtrFun(idnsReadVCHeader, vc)); + comm_read(conn, (char *)&vc->msglen, 2, call); } static void @@ -1404,7 +1410,9 @@ idnsReadVCHeader(const Comm::ConnectionPointer &conn, char *buf, size_t len, com assert(vc->read_msglen <= 2); if (vc->read_msglen < 2) { - comm_read(conn, buf + len, 2 - vc->read_msglen, idnsReadVCHeader, vc); + AsyncCall::Pointer call = commCbCall(5,4, "idnsReadVCHeader", + CommIoCbPtrFun(idnsReadVCHeader, vc)); + comm_read(conn, buf+len, 2 - vc->read_msglen, call); return; } @@ -1413,7 +1421,9 @@ idnsReadVCHeader(const Comm::ConnectionPointer &conn, char *buf, size_t len, com vc->msglen = ntohs(vc->msglen); vc->msg->init(vc->msglen, vc->msglen); - comm_read(conn, vc->msg->buf, vc->msglen, idnsReadVC, vc); + AsyncCall::Pointer call = commCbCall(5,4, "idnsReadVC", + CommIoCbPtrFun(idnsReadVC, vc)); + comm_read(conn, vc->msg->buf, vc->msglen, call); } /* diff --git a/src/gopher.cc b/src/gopher.cc index b46045bab9..b87ab15995 100644 --- a/src/gopher.cc +++ b/src/gopher.cc @@ -865,9 +865,11 @@ gopherReadReply(const Comm::ConnectionPointer &conn, char *buf, size_t len, comm do_next_read = 1; } - if (do_next_read) - comm_read(conn, buf, read_sz, gopherReadReply, gopherState); - + if (do_next_read) { + AsyncCall::Pointer call = commCbCall(5,4, "gopherReadReply", + CommIoCbPtrFun(gopherReadReply, gopherState)); + comm_read(conn, buf, read_sz, call); + } return; } diff --git a/src/helper.cc b/src/helper.cc index 30a5ea0d7b..ffa19ae2de 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -234,7 +234,9 @@ helperOpenServers(helper * hlp) comm_add_close_handler(rfd, helperServerFree, srv); - comm_read(srv->readPipe, srv->rbuf, srv->rbuf_sz - 1, helperHandleRead, srv); + AsyncCall::Pointer call = commCbCall(5,4, "helperHandleRead", + CommIoCbPtrFun(helperHandleRead, srv)); + comm_read(srv->readPipe, srv->rbuf, srv->rbuf_sz - 1, call); } hlp->last_restart = squid_curtime; @@ -352,7 +354,9 @@ helperStatefulOpenServers(statefulhelper * hlp) comm_add_close_handler(rfd, helperStatefulServerFree, srv); - comm_read(srv->readPipe, srv->rbuf, srv->rbuf_sz - 1, helperStatefulHandleRead, srv); + AsyncCall::Pointer call = commCbCall(5,4, "helperStatefulHandleRead", + CommIoCbPtrFun(helperStatefulHandleRead, srv)); + comm_read(srv->readPipe, srv->rbuf, srv->rbuf_sz - 1, call); } hlp->last_restart = squid_curtime; @@ -905,8 +909,11 @@ helperHandleRead(const Comm::ConnectionPointer &conn, char *buf, size_t len, com } } - if (Comm::IsConnOpen(srv->readPipe)) - comm_read(srv->readPipe, srv->rbuf + srv->roffset, srv->rbuf_sz - srv->roffset - 1, helperHandleRead, srv); + if (Comm::IsConnOpen(srv->readPipe)) { + AsyncCall::Pointer call = commCbCall(5,4, "helperHandleRead", + CommIoCbPtrFun(helperHandleRead, srv)); + comm_read(srv->readPipe, srv->rbuf + srv->roffset, srv->rbuf_sz - srv->roffset - 1, call); + } } static void @@ -985,9 +992,11 @@ helperStatefulHandleRead(const Comm::ConnectionPointer &conn, char *buf, size_t helperStatefulReleaseServer(srv); } - if (Comm::IsConnOpen(srv->readPipe)) - comm_read(srv->readPipe, srv->rbuf + srv->roffset, srv->rbuf_sz - srv->roffset - 1, - helperStatefulHandleRead, srv); + if (Comm::IsConnOpen(srv->readPipe)) { + AsyncCall::Pointer call = commCbCall(5,4, "helperStatefulHandleRead", + CommIoCbPtrFun(helperStatefulHandleRead, srv)); + comm_read(srv->readPipe, srv->rbuf + srv->roffset, srv->rbuf_sz - srv->roffset - 1, call); + } } static void diff --git a/src/ident/Ident.cc b/src/ident/Ident.cc index 1a099e490c..edf2ee973f 100644 --- a/src/ident/Ident.cc +++ b/src/ident/Ident.cc @@ -50,6 +50,7 @@ namespace Ident #define IDENT_PORT 113 #define IDENT_KEY_SZ 50 +#define IDENT_BUFSIZE 4096 typedef struct _IdentClient { IDCB *callback; @@ -62,7 +63,7 @@ typedef struct _IdentStateData { hash_link hash; /* must be first */ Comm::ConnectionPointer conn; IdentClient *clients; - char buf[4096]; + char buf[IDENT_BUFSIZE]; } IdentStateData; // TODO: make these all a series of Async job calls. They are self-contained callbacks now. @@ -156,7 +157,9 @@ Ident::ConnectDone(const Comm::ConnectionPointer &conn, comm_err_t status, int x conn->local.GetPort()); AsyncCall::Pointer nil; Comm::Write(conn, &mb, nil); - comm_read(conn, state->buf, BUFSIZ, Ident::ReadReply, state); + AsyncCall::Pointer call = commCbCall(5,4, "Ident::ReadReply", + CommIoCbPtrFun(Ident::ReadReply, state)); + comm_read(conn, state->buf, IDENT_BUFSIZE, call); commSetTimeout(conn->fd, Ident::TheConfig.timeout, Ident::Timeout, state); } diff --git a/src/pconn.cc b/src/pconn.cc index 19716bb7e5..f066f74526 100644 --- a/src/pconn.cc +++ b/src/pconn.cc @@ -140,7 +140,9 @@ IdleConnList::push(const Comm::ConnectionPointer &conn) } theList_[size_++] = conn; - comm_read(conn, fakeReadBuf_, sizeof(fakeReadBuf_), IdleConnList::Read, this); + AsyncCall::Pointer call = commCbCall(5,4, "IdleConnList::Read", + CommIoCbPtrFun(IdleConnList::Read, this)); + comm_read(conn, fakeReadBuf_, sizeof(fakeReadBuf_), call); commSetTimeout(conn->fd, Config.Timeout.pconn, IdleConnList::Timeout, this); } diff --git a/src/tunnel.cc b/src/tunnel.cc index 6404ab87fd..f25d48e841 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -457,7 +457,9 @@ void TunnelStateData::copyRead(Connection &from, IOCB *completion) { assert(from.len == 0); - comm_read(from.conn, from.buf, from.bytesWanted(1, SQUID_TCP_SO_RCVBUF), completion, this); + AsyncCall::Pointer call = commCbCall(5,4, "SomeTunnelReadHandler", + CommIoCbPtrFun(completion, this)); + comm_read(from.conn, from.buf, from.bytesWanted(1, SQUID_TCP_SO_RCVBUF), call); } /** diff --git a/src/whois.cc b/src/whois.cc index a7e182b74a..0d81b99d83 100644 --- a/src/whois.cc +++ b/src/whois.cc @@ -101,11 +101,12 @@ whoisStart(FwdState * fwd) String str_print=p->request->urlpath.substr(1,p->request->urlpath.size()); snprintf(buf, l, SQUIDSTRINGPH"\r\n", SQUIDSTRINGPRINT(str_print)); - AsyncCall::Pointer call = commCbCall(5,5, "whoisWriteComplete", - CommIoCbPtrFun(whoisWriteComplete, p)); - - Comm::Write(fwd->serverConnection(), buf, strlen(buf), call, NULL); - comm_read(fwd->serverConnection(), p->buf, BUFSIZ, whoisReadReply, p); + AsyncCall::Pointer writeCall = commCbCall(5,5, "whoisWriteComplete", + CommIoCbPtrFun(whoisWriteComplete, p)); + Comm::Write(fwd->serverConnection(), buf, strlen(buf), writeCall, NULL); + AsyncCall::Pointer readCall = commCbCall(5,4, "whoisReadReply", + CommIoCbPtrFun(whoisReadReply, p)); + comm_read(fwd->serverConnection(), p->buf, BUFSIZ, readCall); commSetTimeout(fwd->serverConnection()->fd, Config.Timeout.read, whoisTimeout, p); } @@ -192,8 +193,11 @@ WhoisState::readReply(const Comm::ConnectionPointer &conn, char *aBuffer, size_t do_next_read = 0; } - if (do_next_read) - comm_read(conn, aBuffer, BUFSIZ, whoisReadReply, this); + if (do_next_read) { + AsyncCall::Pointer call = commCbCall(5,4, "whoisReadReply", + CommIoCbPtrFun(whoisReadReply, this)); + comm_read(conn, aBuffer, BUFSIZ, call); + } } static void