bool noConnections() const;
char *url;
- HttpRequest *request;
+ HttpRequest::Pointer request;
Comm::ConnectionList serverDestinations;
const char * getHost() const {
assert(noConnections());
xfree(url);
serverDestinations.clean();
- HTTPMSGUNLOCK(request);
}
TunnelStateData::Connection::~Connection()
TunnelStateData *tunnelState = (TunnelStateData *)data;
debugs(26, 3, HERE << server << ", tunnelState=" << tunnelState);
- if (tunnelState->request && (tunnelState->request->flags.interceptTproxy || tunnelState->request->flags.intercepted))
+ if (tunnelState->request != NULL && (tunnelState->request->flags.interceptTproxy || tunnelState->request->flags.intercepted))
tunnelStartShoveling(tunnelState); // ssl-bumped connection, be quiet
else {
AsyncCall::Pointer call = commCbCall(5,5, "tunnelConnectedWriteDone",
/* Try another IP of this destination host */
if (Ip::Qos::TheConfig.isAclTosActive()) {
- tunnelState->serverDestinations[0]->tos = GetTosToServer(tunnelState->request);
+ tunnelState->serverDestinations[0]->tos = GetTosToServer(tunnelState->request.getRaw());
}
#if SO_MARK && USE_LIBCAP
- tunnelState->serverDestinations[0]->nfmark = GetNfmarkToServer(tunnelState->request);
+ tunnelState->serverDestinations[0]->nfmark = GetNfmarkToServer(tunnelState->request.getRaw());
#endif
debugs(26, 4, HERE << "retry with : " << tunnelState->serverDestinations[0]);
AsyncJob::Start(cs);
} else {
debugs(26, 4, HERE << "terminate with error.");
- ErrorState *err = new ErrorState(ERR_CONNECT_FAIL, Http::scServiceUnavailable, tunnelState->request);
+ ErrorState *err = new ErrorState(ERR_CONNECT_FAIL, Http::scServiceUnavailable, tunnelState->request.getRaw());
*tunnelState->status_ptr = Http::scServiceUnavailable;
err->xerrno = xerrno;
// on timeout is this still: err->xerrno = ETIMEDOUT;
#endif
tunnelState->url = xstrdup(url);
tunnelState->request = request;
- HTTPMSGLOCK(tunnelState->request);
tunnelState->server.size_ptr = size_ptr;
tunnelState->status_ptr = status_ptr;
tunnelState->client.conn = http->getConn()->clientConnection;
MemBuf mb;
mb.init();
mb.Printf("CONNECT %s HTTP/1.1\r\n", tunnelState->url);
- HttpStateData::httpBuildRequestHeader(tunnelState->request,
+ HttpStateData::httpBuildRequestHeader(tunnelState->request.getRaw(),
NULL, /* StoreEntry */
NULL, /* AccessLogEntry */
&hdr_out,
if (peer_paths == NULL || peer_paths->size() < 1) {
debugs(26, 3, HERE << "No paths found. Aborting CONNECT");
if (!err) {
- err = new ErrorState(ERR_CANNOT_FORWARD, Http::scServiceUnavailable, tunnelState->request);
+ err = new ErrorState(ERR_CANNOT_FORWARD, Http::scServiceUnavailable, tunnelState->request.getRaw());
}
*tunnelState->status_ptr = err->httpStatus;
err->callback = tunnelErrorComplete;
delete err;
if (Ip::Qos::TheConfig.isAclTosActive()) {
- tunnelState->serverDestinations[0]->tos = GetTosToServer(tunnelState->request);
+ tunnelState->serverDestinations[0]->tos = GetTosToServer(tunnelState->request.getRaw());
}
#if SO_MARK && USE_LIBCAP
- tunnelState->serverDestinations[0]->nfmark = GetNfmarkToServer(tunnelState->request);
+ tunnelState->serverDestinations[0]->nfmark = GetNfmarkToServer(tunnelState->request.getRaw());
#endif
debugs(26, 3, HERE << "paths=" << peer_paths->size() << ", p[0]={" << (*peer_paths)[0] << "}, serverDest[0]={" <<
StoreEntry *entry;
store_client *sc;
StoreEntry *urlres_e;
- HttpRequest *request;
- HttpRequest *urlres_r;
+ HttpRequest::Pointer request;
+ HttpRequest::Pointer urlres_r;
struct {
bool force_menu;
return;
}
- HTTPMSGLOCK(urlres_r);
urlres_r->header.putStr(HDR_ACCEPT, "text/plain");
}
debugs(52, 3, "urnStart: '" << e->url() << "'" );
entry = e;
request = r;
- HTTPMSGLOCK(request);
entry->lock();
setUriResFromRequest(r);
if (urlres_e->isNull()) {
urlres_e = storeCreateEntry(urlres, urlres, RequestFlags(), Http::METHOD_GET);
sc = storeClientListAdd(urlres_e, this);
- FwdState::fwdStart(Comm::ConnectionPointer(), urlres_e, urlres_r);
+ FwdState::fwdStart(Comm::ConnectionPointer(), urlres_e, urlres_r.getRaw());
} else {
-
urlres_e->lock();
sc = storeClientListAdd(urlres_e, this);
}
{
urlres_e->unlock();
urnState->entry->unlock();
- HTTPMSGUNLOCK(urnState->request);
- HTTPMSGUNLOCK(urnState->urlres_r);
delete urnState;
}
if (rep->sline.status() != Http::scOkay) {
debugs(52, 3, "urnHandleReply: failed.");
- err = new ErrorState(ERR_URN_RESOLVE, Http::scNotFound, urnState->request);
+ err = new ErrorState(ERR_URN_RESOLVE, Http::scNotFound, urnState->request.getRaw());
err->url = xstrdup(e->url());
errorAppendEntry(e, err);
delete rep;
debugs(53, 3, "urnFindMinRtt: Counted " << i << " URLs");
if (urls == NULL) { /* unkown URN error */
- debugs(52, 3, "urnTranslateDone: unknown URN " << e->url() );
- err = new ErrorState(ERR_URN_RESOLVE, Http::scNotFound, urnState->request);
+ debugs(52, 3, "urnTranslateDone: unknown URN " << e->url());
+ err = new ErrorState(ERR_URN_RESOLVE, Http::scNotFound, urnState->request.getRaw());
err->url = xstrdup(e->url());
errorAppendEntry(e, err);
urnHandleReplyError(urnState, urlres_e);