/*
- * $Id: store.cc,v 1.594 2006/05/23 16:22:34 hno Exp $
+ * $Id: store.cc,v 1.595 2006/05/23 20:29:04 hno Exp $
*
* DEBUG: section 20 Storage Manager
* AUTHOR: Harvest Derived
assert(!EBIT_TEST(e->flags, RELEASE_REQUEST));
if (mem->request) {
- StoreEntry *pe;
HttpRequest *request = mem->request;
if (!mem->vary_headers) {
* to record the new variance key
*/
safe_free(request->vary_headers); /* free old "bad" variance key */
- pe = storeGetPublic(mem->url, mem->method);
+ StoreEntry *pe = storeGetPublic(mem->url, mem->method);
if (pe)
pe->release();
if (mem->vary_headers && !storeGetPublic(mem->url, mem->method)) {
/* Create "vary" base object */
String vary;
- pe = storeCreateEntry(mem->url, mem->log_url, request->flags, request->method);
+ StoreEntry *pe = storeCreateEntry(mem->url, mem->log_url, request->flags, request->method);
HttpVersion version(1, 0);
/* We are allowed to do this typecast */
- HttpReply *rep = (HttpReply *) pe->getReply(); // bypass const
+ HttpReply *rep = new HttpReply;
rep->setHeaders(version, HTTP_OK, "Internal marker object", "x-squid-internal/vary", -1, -1, squid_curtime + 100000);
vary = mem->getReply()->header.getList(HDR_VARY);
}
#endif
- storeSetPublicKey(pe);
+ pe->replaceHttpReply(rep);
- storeBuffer(pe);
+ storeTimestampsSet(pe);
- /* TODO: remove this when the metadata is separated */
- {
- Packer p;
- packerToStoreInit(&p, pe);
- pe->getReply()->packHeadersInto(&p);
- packerClean(&p);
- }
+ pe->makePublic();
- storeBufferFlush(pe);
- storeTimestampsSet(pe);
pe->complete();
+
pe->unlock();
}