From: Amos Jeffries Date: Mon, 2 Mar 2015 15:33:49 +0000 (-0800) Subject: Make packerClean() the destructor actions for Packer class X-Git-Tag: merge-candidate-3-v1~101^2~16^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=aada7cc226681f9b84495086147e77c77008772b;p=thirdparty%2Fsquid.git Make packerClean() the destructor actions for Packer class --- diff --git a/src/HttpHeader.cc b/src/HttpHeader.cc index ad433fb936..0095eaf31a 100644 --- a/src/HttpHeader.cc +++ b/src/HttpHeader.cc @@ -1242,7 +1242,6 @@ HttpHeader::putCc(const HttpHdrCc * cc) /* put */ addEntry(new HttpHeaderEntry(HDR_CACHE_CONTROL, NULL, mb.buf)); /* cleanup */ - packerClean(&p); mb.clean(); } @@ -1261,7 +1260,6 @@ HttpHeader::putContRange(const HttpHdrContRange * cr) /* put */ addEntry(new HttpHeaderEntry(HDR_CONTENT_RANGE, NULL, mb.buf)); /* cleanup */ - packerClean(&p); mb.clean(); } @@ -1280,7 +1278,6 @@ HttpHeader::putRange(const HttpHdrRange * range) /* put */ addEntry(new HttpHeaderEntry(HDR_RANGE, NULL, mb.buf)); /* cleanup */ - packerClean(&p); mb.clean(); } @@ -1299,7 +1296,6 @@ HttpHeader::putSc(HttpHdrSc *sc) /* put */ addEntry(new HttpHeaderEntry(HDR_SURROGATE_CONTROL, NULL, mb.buf)); /* cleanup */ - packerClean(&p); mb.clean(); } diff --git a/src/HttpMsg.cc b/src/HttpMsg.cc index d995e3c5f3..59185ebb22 100644 --- a/src/HttpMsg.cc +++ b/src/HttpMsg.cc @@ -338,6 +338,5 @@ void HttpMsg::firstLineBuf(MemBuf& mb) Packer p; packerToMemInit(&p, &mb); packFirstLineInto(&p, true); - packerClean(&p); } diff --git a/src/HttpReply.cc b/src/HttpReply.cc index d403616e4d..22a2ab0f68 100644 --- a/src/HttpReply.cc +++ b/src/HttpReply.cc @@ -132,7 +132,6 @@ HttpReply::pack() mb->init(); packerToMemInit(&p, mb); packInto(&p); - packerClean(&p); return mb; } diff --git a/src/HttpRequest.cc b/src/HttpRequest.cc index 17abf97b93..9f60ad7cc8 100644 --- a/src/HttpRequest.cc +++ b/src/HttpRequest.cc @@ -369,7 +369,6 @@ HttpRequest::swapOut(StoreEntry * e) assert(e); packerToStoreInit(&p, e); pack(&p); - packerClean(&p); } /* packs request-line and headers, appends terminator */ diff --git a/src/Packer.cc b/src/Packer.cc index 6b78bd573a..a39b6303fe 100644 --- a/src/Packer.cc +++ b/src/Packer.cc @@ -104,19 +104,15 @@ packerToMemInit(Packer * p, MemBuf * mb) p->real_handler = mb; } -/* call this when you are done */ -void -packerClean(Packer * p) +Packer::~Packer() { - assert(p); - - if (p->append == (append_f) store_append && p->real_handler) - static_cast(p->real_handler)->flush(); + if (append == (append_f) store_append && real_handler) + static_cast(real_handler)->flush(); /* it is not really necessary to do this, but, just in case... */ - p->append = NULL; - p->packer_vprintf = NULL; - p->real_handler = NULL; + append = NULL; + packer_vprintf = NULL; + real_handler = NULL; } void diff --git a/src/Packer.h b/src/Packer.h index 6737c596c8..0cba846876 100644 --- a/src/Packer.h +++ b/src/Packer.h @@ -23,13 +23,14 @@ class Packer { public: + virtual ~Packer(); + /* protected, use interface functions instead */ append_f append; vprintf_f packer_vprintf; void *real_handler; /* first parameter to real append and vprintf */ }; -void packerClean(Packer * p); void packerAppend(Packer * p, const char *buf, int size); void packerPrintf(Packer * p, const char *fmt,...) PRINTF_FORMAT_ARG2; diff --git a/src/adaptation/ecap/MessageRep.cc b/src/adaptation/ecap/MessageRep.cc index 257a3c4918..8e5feeada1 100644 --- a/src/adaptation/ecap/MessageRep.cc +++ b/src/adaptation/ecap/MessageRep.cc @@ -95,7 +95,6 @@ Adaptation::Ecap::HeaderRep::image() const Packer p; packerToMemInit(&p, &mb); theMessage.packInto(&p, true); - packerClean(&p); return Area::FromTempBuffer(mb.content(), mb.contentSize()); } diff --git a/src/adaptation/icap/ModXact.cc b/src/adaptation/icap/ModXact.cc index d8a3b4106c..dfc72ba4aa 100644 --- a/src/adaptation/icap/ModXact.cc +++ b/src/adaptation/icap/ModXact.cc @@ -1326,7 +1326,6 @@ void Adaptation::Icap::ModXact::finalizeLogInfo() reply_->header.packInto(&p); al.headers.reply = xstrdup(mb.buf); - packerClean(&p); mb.clean(); } prepareLogWithRequestDetails(adapted_request_, alep); @@ -1579,7 +1578,6 @@ void Adaptation::Icap::ModXact::packHead(MemBuf &httpBuf, const HttpMsg *head) Packer p; packerToMemInit(&p, &httpBuf); head->packInto(&p, true); - packerClean(&p); } // decides whether to offer a preview and calculates its size diff --git a/src/client_side.cc b/src/client_side.cc index 613678f339..a487921634 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -518,17 +518,17 @@ prepareLogWithRequestDetails(HttpRequest * request, AccessLogEntry::Pointer &aLo assert(aLogEntry != NULL); if (Config.onoff.log_mime_hdrs) { - Packer p; MemBuf mb; mb.init(); - packerToMemInit(&p, &mb); - request->header.packInto(&p); + Packer pa; + packerToMemInit(&pa, &mb); + request->header.packInto(&pa); //This is the request after adaptation or redirection aLogEntry->headers.adapted_request = xstrdup(mb.buf); // the virgin request is saved to aLogEntry->request if (aLogEntry->request) { - packerClean(&p); + Packer p; mb.reset(); packerToMemInit(&p, &mb); aLogEntry->request->header.packInto(&p); @@ -538,7 +538,7 @@ prepareLogWithRequestDetails(HttpRequest * request, AccessLogEntry::Pointer &aLo #if USE_ADAPTATION const Adaptation::History::Pointer ah = request->adaptLogHistory(); if (ah != NULL) { - packerClean(&p); + Packer p; mb.reset(); packerToMemInit(&p, &mb); ah->lastMeta.packInto(&p); @@ -546,7 +546,6 @@ prepareLogWithRequestDetails(HttpRequest * request, AccessLogEntry::Pointer &aLo } #endif - packerClean(&p); mb.clean(); } @@ -1077,8 +1076,6 @@ clientPackRangeHdr(const HttpReply * rep, const HttpHdrRangeSpec * spec, String hdr.packInto(&p); - packerClean(&p); - hdr.clean(); /* append (we packed a header, not a reply) */ diff --git a/src/errorpage.cc b/src/errorpage.cc index 1c68a91ecf..812464379e 100644 --- a/src/errorpage.cc +++ b/src/errorpage.cc @@ -752,7 +752,6 @@ ErrorState::Dump(MemBuf * mb) request->http_ver.major, request->http_ver.minor); packerToMemInit(&pck, &str); request->header.packInto(&pck); - packerClean(&pck); } str.Printf("\r\n"); @@ -972,7 +971,6 @@ ErrorState::Convert(char token, bool building_deny_info_url, bool allowRecursion request->http_ver.major, request->http_ver.minor); packerToMemInit(&pck, &mb); request->header.packInto(&pck, true); //hide authorization data - packerClean(&pck); } else if (request_hdrs) { p = request_hdrs; } else { diff --git a/src/htcp.cc b/src/htcp.cc index 4c1dbe676a..ad6d912c36 100644 --- a/src/htcp.cc +++ b/src/htcp.cc @@ -849,8 +849,6 @@ htcpTstReply(htcpDataHeader * dhdr, StoreEntry * e, htcpSpecifier * spec, Ip::Ad { static char pkt[8192]; HttpHeader hdr(hoHtcpReply); - MemBuf mb; - Packer p; ssize_t pktlen; htcpStuff stuff(dhdr->msg_id, HTCP_TST, RR_RESPONSE, 0); @@ -858,7 +856,9 @@ htcpTstReply(htcpDataHeader * dhdr, StoreEntry * e, htcpSpecifier * spec, Ip::Ad debugs(31, 3, "htcpTstReply: response = " << stuff.response); if (spec) { + MemBuf mb; mb.init(); + Packer p; packerToMemInit(&p, &mb); stuff.S.method = spec->method; stuff.S.uri = spec->uri; @@ -915,7 +915,6 @@ htcpTstReply(htcpDataHeader * dhdr, StoreEntry * e, htcpSpecifier * spec, Ip::Ad debugs(31, 3, "htcpTstReply: cache_hdrs = {" << stuff.D.cache_hdrs << "}"); mb.clean(); hdr.clean(); - packerClean(&p); } pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff); @@ -1519,8 +1518,6 @@ htcpQuery(StoreEntry * e, HttpRequest * req, CachePeer * p) ssize_t pktlen; char vbuf[32]; HttpHeader hdr(hoRequest); - Packer pa; - MemBuf mb; HttpStateFlags flags; if (!Comm::IsConnOpen(htcpIncomingConn)) @@ -1537,11 +1534,12 @@ htcpQuery(StoreEntry * e, HttpRequest * req, CachePeer * p) stuff.S.uri = (char *) e->url(); stuff.S.version = vbuf; HttpStateData::httpBuildRequestHeader(req, e, NULL, &hdr, flags); + MemBuf mb; mb.init(); + Packer pa; packerToMemInit(&pa, &mb); hdr.packInto(&pa); hdr.clean(); - packerClean(&pa); stuff.S.req_hdrs = mb.buf; pktlen = htcpBuildPacket(pkt, sizeof(pkt), &stuff); mb.clean(); @@ -1571,7 +1569,6 @@ htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestM ssize_t pktlen; char vbuf[32]; HttpHeader hdr(hoRequest); - Packer pa; MemBuf mb; HttpStateFlags flags; @@ -1601,10 +1598,10 @@ htcpClear(StoreEntry * e, const char *uri, HttpRequest * req, const HttpRequestM if (reason != HTCP_CLR_INVALIDATION) { HttpStateData::httpBuildRequestHeader(req, e, NULL, &hdr, flags); mb.init(); + Packer pa; packerToMemInit(&pa, &mb); hdr.packInto(&pa); hdr.clean(); - packerClean(&pa); stuff.S.req_hdrs = mb.buf; } else { stuff.S.req_hdrs = NULL; diff --git a/src/http.cc b/src/http.cc index f5a9b35397..6c16676a19 100644 --- a/src/http.cc +++ b/src/http.cc @@ -2195,7 +2195,6 @@ HttpStateData::buildRequestPrefix(MemBuf * mb) packerToMemInit(&p, mb); hdr.packInto(&p); hdr.clean(); - packerClean(&p); } /* append header terminator */ mb->append(crlf, 2); diff --git a/src/servers/FtpServer.cc b/src/servers/FtpServer.cc index 42f3329fe7..b6e0e8cd2f 100644 --- a/src/servers/FtpServer.cc +++ b/src/servers/FtpServer.cc @@ -1290,7 +1290,6 @@ Ftp::Server::handleRequest(HttpRequest *request) mb.init(); packerToMemInit(&p, &mb); request->pack(&p); - packerClean(&p); debugs(9, 2, "FTP Client " << clientConnection); debugs(9, 2, "FTP Client REQUEST:\n---------\n" << mb.buf << diff --git a/src/store.cc b/src/store.cc index 89629dec10..ae51d1ec65 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1898,8 +1898,6 @@ StoreEntry::startWriting() EBIT_CLR(flags, ENTRY_FWD_HDR_WAIT); rep->body.packInto(&p); - - packerClean(&p); } char const * diff --git a/src/tests/testRock.cc b/src/tests/testRock.cc index ce4f57885b..61ab8962f0 100644 --- a/src/tests/testRock.cc +++ b/src/tests/testRock.cc @@ -206,7 +206,6 @@ testRock::addEntry(const int i) Packer p; packerToStoreInit(&p, pe); pe->getReply()->packHeadersInto(&p); - packerClean(&p); } pe->flush(); diff --git a/src/tests/testUfs.cc b/src/tests/testUfs.cc index a21ee007be..c2e142de62 100644 --- a/src/tests/testUfs.cc +++ b/src/tests/testUfs.cc @@ -157,7 +157,6 @@ testUfs::testUfsSearch() Packer p; packerToStoreInit(&p, pe); pe->getReply()->packHeadersInto(&p); - packerClean(&p); } pe->flush(); diff --git a/src/tools.cc b/src/tools.cc index 95634a81ca..a027414aa5 100644 --- a/src/tools.cc +++ b/src/tools.cc @@ -978,7 +978,6 @@ debugObj(int section, int level, const char *label, void *obj, ObjPackMethod pm) packerToMemInit(&p, &mb); (*pm) (obj, &p); debugs(section, level, "" << label << "" << mb.buf << ""); - packerClean(&p); mb.clean(); } diff --git a/src/tunnel.cc b/src/tunnel.cc index 485de198ff..9d6ec5bf61 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -1073,7 +1073,6 @@ tunnelRelayConnectRequest(const Comm::ConnectionPointer &srv, void *data) packerToMemInit(&p, &mb); hdr_out.packInto(&p); hdr_out.clean(); - packerClean(&p); mb.append("\r\n", 2); debugs(11, 2, "Tunnel Server REQUEST: " << tunnelState->server.conn << ":\n----------\n" <<