From: Amos Jeffries Date: Sat, 28 Aug 2010 13:39:09 +0000 (+1200) Subject: Make CNCB use const conn X-Git-Tag: take08~55^2~124^2~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f01d4b80df735ccda39dbc86111d7f351a76b85b;p=thirdparty%2Fsquid.git Make CNCB use const conn --- diff --git a/src/CommCalls.cc b/src/CommCalls.cc index 859b1c915b..63d51750fb 100644 --- a/src/CommCalls.cc +++ b/src/CommCalls.cc @@ -47,7 +47,7 @@ CommAcceptCbParams::print(std::ostream &os) const if (nfd >= 0) os << ", newFD " << nfd; if (details != NULL) - os << ", conn.FD " << details->fd << ", conn.local=" << details->local << ", conn.remote=" << details->remote; + os << ", " << details; } @@ -75,7 +75,7 @@ CommConnectCbParams::print(std::ostream &os) const { CommCommonCbParams::print(os); if (conn != NULL) - os << ", conn.FD " << conn->fd << ", conn.local=" << conn->local << ", conn.remote=" << conn->remote; + os << ", " << conn; } /* CommIoCbParams */ diff --git a/src/CommCalls.h b/src/CommCalls.h index 067e7eb113..b67b59b2cb 100644 --- a/src/CommCalls.h +++ b/src/CommCalls.h @@ -22,7 +22,7 @@ */ typedef void IOACB(int fd, int nfd, Comm::ConnectionPointer &details, comm_err_t flag, int xerrno, void *data); -typedef void CNCB(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data); +typedef void CNCB(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data); typedef void IOCB(int fd, char *, size_t size, comm_err_t flag, int xerrno, void *data); /* diff --git a/src/dns_internal.cc b/src/dns_internal.cc index 39cfc4c7cb..d021190b2e 100644 --- a/src/dns_internal.cc +++ b/src/dns_internal.cc @@ -705,14 +705,13 @@ idnsDoSendQueryVC(nsvc *vc) } static void -idnsInitVCConnected(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) +idnsInitVCConnected(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) { nsvc * vc = (nsvc *)data; if (status != COMM_OK || !conn) { char buf[MAX_IPSTRLEN]; debugs(78, DBG_IMPORTANT, "Failed to connect to nameserver " << nameservers[vc->ns].S.NtoA(buf,MAX_IPSTRLEN) << " using TCP!"); - conn = NULL; return; } diff --git a/src/forward.cc b/src/forward.cc index 3c4fbccafc..0552a97025 100644 --- a/src/forward.cc +++ b/src/forward.cc @@ -395,7 +395,7 @@ fwdNegotiateSSLWrapper(int fd, void *data) #endif void -fwdConnectDoneWrapper(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) +fwdConnectDoneWrapper(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) { FwdState *fwd = (FwdState *) data; fwd->connectDone(conn, status, xerrno); @@ -519,10 +519,13 @@ FwdState::retryOrBail() return; } // else bail. no more serverDestinations possible to try. + + // AYJ: cannot-forward error ?? } if (!err && shutting_down) { - errorCon(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE, request); + ErrorState *anErr = errorCon(ERR_SHUTTING_DOWN, HTTP_SERVICE_UNAVAILABLE, request); + errorAppendEntry(entry, anErr); } self = NULL; // refcounted @@ -657,7 +660,7 @@ FwdState::initiateSSL() #endif void -FwdState::connectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno) +FwdState::connectDone(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno) { if (status != COMM_OK) { ErrorState *anErr = errorCon(ERR_CONNECT_FAIL, HTTP_SERVICE_UNAVAILABLE, request); @@ -669,7 +672,8 @@ FwdState::connectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerr if (conn->getPeer()) peerConnectFailed(conn->getPeer()); - conn->close(); + Comm::ConnectionPointer nonConst = conn; + nonConst->close(); } retryOrBail(); return; @@ -682,7 +686,7 @@ FwdState::connectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerr updateHierarchyInfo(); #endif - debugs(17, 3, "FD " << serverConnection()->fd << ": '" << entry->url() << "'" ); + debugs(17, 3, HERE << serverConnection() << ": '" << entry->url() << "'" ); comm_add_close_handler(serverConnection()->fd, fwdServerClosedWrapper, this); diff --git a/src/forward.h b/src/forward.h index 34eb3d0030..597d0d9007 100644 --- a/src/forward.h +++ b/src/forward.h @@ -30,7 +30,7 @@ public: bool reforwardableStatus(http_status s); void serverClosed(int fd); void connectStart(); - void connectDone(Comm::ConnectionPointer & conn, comm_err_t status, int xerrno); + void connectDone(const Comm::ConnectionPointer & conn, comm_err_t status, int xerrno); void connectTimeout(int fd); void initiateSSL(); void negotiateSSL(int fd); diff --git a/src/ftp.cc b/src/ftp.cc index 4ef57178e9..cb608e796c 100644 --- a/src/ftp.cc +++ b/src/ftp.cc @@ -2680,7 +2680,7 @@ ftpReadPasv(FtpStateData * ftpState) } void -FtpStateData::ftpPasvCallback(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) +FtpStateData::ftpPasvCallback(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) { FtpStateData *ftpState = (FtpStateData *)data; debugs(9, 3, HERE); diff --git a/src/ident/Ident.cc b/src/ident/Ident.cc index ae1ef2b0ca..e47c13ddbb 100644 --- a/src/ident/Ident.cc +++ b/src/ident/Ident.cc @@ -118,7 +118,7 @@ Ident::Timeout(int fd, void *data) } void -Ident::ConnectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) +Ident::ConnectDone(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) { IdentStateData *state = (IdentStateData *)data; @@ -142,7 +142,8 @@ Ident::ConnectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, if (c == NULL) { /* no clients care */ - conn->close(); + Comm::ConnectionPointer nonConst = conn; + nonConst->close(); return; } diff --git a/src/neighbors.cc b/src/neighbors.cc index ef797ad554..b2f4f577d1 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1381,7 +1381,7 @@ peerProbeConnect(peer * p) } static void -peerProbeConnectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) +peerProbeConnectDone(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) { peer *p = (peer*)data; @@ -1391,7 +1391,6 @@ peerProbeConnectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerrn peerConnectFailedSilent(p); } - conn->close(); p->testing_now--; return; } diff --git a/src/tunnel.cc b/src/tunnel.cc index 7db4a76c44..3461045d34 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -127,8 +127,8 @@ static PF tunnelClientClosed; static PF tunnelTimeout; static PSC tunnelPeerSelectComplete; static void tunnelStateFree(TunnelStateData * tunnelState); -static void tunnelConnected(Comm::ConnectionPointer &server, void *); -static void tunnelRelayConnectRequest(Comm::ConnectionPointer &server, void *); +static void tunnelConnected(const Comm::ConnectionPointer &server, void *); +static void tunnelRelayConnectRequest(const Comm::ConnectionPointer &server, void *); static void tunnelServerClosed(int fd, void *data) @@ -475,10 +475,10 @@ tunnelConnectedWriteDone(int fd, char *buf, size_t size, comm_err_t flag, int xe } static void -tunnelConnected(Comm::ConnectionPointer &server, void *data) +tunnelConnected(const Comm::ConnectionPointer &server, void *data) { TunnelStateData *tunnelState = (TunnelStateData *)data; - debugs(26, 3, HERE << "FD " << server->fd << " tunnelState=" << tunnelState); + debugs(26, 3, HERE << server << ", tunnelState=" << tunnelState); *tunnelState->status_ptr = HTTP_OK; comm_write(tunnelState->client.conn->fd, conn_established, strlen(conn_established), tunnelConnectedWriteDone, tunnelState, NULL); @@ -503,7 +503,7 @@ tunnelErrorComplete(int fdnotused, void *data, size_t sizenotused) static void -tunnelConnectDone(Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) +tunnelConnectDone(const Comm::ConnectionPointer &conn, comm_err_t status, int xerrno, void *data) { TunnelStateData *tunnelState = (TunnelStateData *)data; HttpRequest *request = tunnelState->request; @@ -633,13 +633,13 @@ tunnelStart(ClientHttpRequest * http, int64_t * size_ptr, int *status_ptr) } static void -tunnelRelayConnectRequest(Comm::ConnectionPointer &server, void *data) +tunnelRelayConnectRequest(const Comm::ConnectionPointer &server, void *data) { TunnelStateData *tunnelState = (TunnelStateData *)data; HttpHeader hdr_out(hoRequest); Packer p; http_state_flags flags; - debugs(26, 3, HERE << "FD " << server->fd << " tunnelState=" << tunnelState); + debugs(26, 3, HERE << server << ", tunnelState=" << tunnelState); memset(&flags, '\0', sizeof(flags)); flags.proxying = tunnelState->request->flags.proxying; MemBuf mb; @@ -656,8 +656,8 @@ tunnelRelayConnectRequest(Comm::ConnectionPointer &server, void *data) packerClean(&p); mb.append("\r\n", 2); - comm_write_mbuf(tunnelState->server.conn->fd, &mb, tunnelConnectedWriteDone, tunnelState); - commSetTimeout(tunnelState->server.conn->fd, Config.Timeout.read, tunnelTimeout, tunnelState); + comm_write_mbuf(server->fd, &mb, tunnelConnectedWriteDone, tunnelState); + commSetTimeout(server->fd, Config.Timeout.read, tunnelTimeout, tunnelState); } static void