This removes the needless Comm::ConnectionList* parameter to the PSC (Peer Select callback) function.
The callee state object (data) of PSC is the original owner of the vector "list" being returned so always has direct access to it as a member variable. Amos
=== modified file 'src/FwdState.cc' --- src/FwdState.cc 2014-03-31 06:57:27 +0000 +++ src/FwdState.cc 2014-04-02 10:23:34 +0000 @@ -493,7 +493,7 @@ /**** CALLBACK WRAPPERS ************************************************************/ static void -fwdPeerSelectionCompleteWrapper(Comm::ConnectionList * unused, ErrorState *err, void *data) +fwdPeerSelectionCompleteWrapper(ErrorState *err, void *data) { FwdState *fwd = (FwdState *) data; if (err) === modified file 'src/PeerSelectState.h' --- src/PeerSelectState.h 2014-02-10 17:52:49 +0000 +++ src/PeerSelectState.h 2014-04-02 10:21:42 +0000 @@ -45,7 +45,7 @@ class StoreEntry; class ErrorState; -typedef void PSC(Comm::ConnectionList *, ErrorState *, void *); +typedef void PSC(ErrorState *, void *); void peerSelect(Comm::ConnectionList *, HttpRequest *, AccessLogEntry::Pointer const&, StoreEntry *, PSC *, void *data); void peerSelectInit(void); === modified file 'src/peer_select.cc' --- src/peer_select.cc 2014-02-02 01:24:53 +0000 +++ src/peer_select.cc 2014-04-02 10:20:22 +0000 @@ -307,7 +307,7 @@ void *cbdata; if (cbdataReferenceValidDone(psstate->callback_data, &cbdata)) { - callback(psstate->paths, psstate->lastError, cbdata); + callback(psstate->lastError, cbdata); psstate->lastError = NULL; // FwdState has taken control over the ErrorState object. } === modified file 'src/tunnel.cc' --- src/tunnel.cc 2014-02-21 10:46:19 +0000 +++ src/tunnel.cc 2014-04-02 10:35:47 +0000 @@ -957,11 +957,12 @@ } static void -tunnelPeerSelectComplete(Comm::ConnectionList *peer_paths, ErrorState *err, void *data) +tunnelPeerSelectComplete(ErrorState *err, void *data) { TunnelStateData *tunnelState = (TunnelStateData *)data; + assert(cbdataReferenceValid(tunnelState)); - if (peer_paths == NULL || peer_paths->size() < 1) { + if (tunnelState->serverDestinations.empty()) { debugs(26, 3, HERE << "No paths found. Aborting CONNECT"); if (!err) { err = new ErrorState(ERR_CANNOT_FORWARD, Http::scServiceUnavailable, tunnelState->request.getRaw()); @@ -982,8 +983,8 @@ tunnelState->serverDestinations[0]->nfmark = GetNfmarkToServer(tunnelState->request.getRaw()); #endif - debugs(26, 3, HERE << "paths=" << peer_paths->size() << ", p[0]={" << (*peer_paths)[0] << "}, serverDest[0]={" << - tunnelState->serverDestinations[0] << "}"); + debugs(26, 3, "paths=" << tunnelState->serverDestinations.size() << + ", serverDest[0]={" << tunnelState->serverDestinations[0] << "}"); AsyncCall::Pointer call = commCbCall(26,3, "tunnelConnectDone", CommConnectCbPtrFun(tunnelConnectDone, tunnelState)); Comm::ConnOpener *cs = new Comm::ConnOpener(tunnelState->serverDestinations[0], call, Config.Timeout.connect);