Convrts the Http::Message lock/unlock macros to inline functions so the compiler can
catch this type of regression in future Pointer updates
* Might want to assert that request is NULL at this point
*/
entry->mem_obj->request = request;
- HTTPMSGLOCK(entry->mem_obj->request);
#if URL_CHECKSUM_DEBUG
entry->mem_obj->checkUrlChecksum();
delete err;
err = errorState;
- if (!errorState->request) {
+ if (!errorState->request)
errorState->request = request;
- HTTPMSGLOCK(errorState->request);
- }
if (err->type != ERR_ZERO_SIZE_OBJECT)
return;
} // namespace Http
-#define HTTPMSGUNLOCK(a) if (a) { if ((a)->unlock() == 0) delete (a); (a)=NULL; }
-#define HTTPMSGLOCK(a) (a)->lock()
+inline void
+HTTPMSGUNLOCK(Http::Message *a)
+{
+ if (a) {
+ if (a->unlock() == 0)
+ delete a;
+ a = nullptr;
+ }
+}
+
+inline void
+HTTPMSGLOCK(Http::Message *a)
+{
+ if (a)
+ a->lock();
+}
#endif /* SQUID_HTTPMSG_H */
EBIT_SET(e->flags, ENTRY_SPECIAL);
e->setPublicKey();
e->buffer();
- HttpRequest *r = HttpRequest::CreateFromUrl(url_);
- if (NULL == r)
+ HttpRequestPointer r(HttpRequest::CreateFromUrl(url_));
+ if (!r)
fatalf("mimeLoadIcon: cannot parse internal URL: %s", url_);
e->mem_obj->request = r;
- HTTPMSGLOCK(e->mem_obj->request);
- HttpReply *reply = new HttpReply;
+ HttpReplyPointer reply(new HttpReply);
if (status == Http::scNoContent)
reply->setHeaders(status, NULL, NULL, 0, -1, -1);
reply->cache_control = new HttpHdrCc();
reply->cache_control->maxAge(86400);
reply->header.putCc(reply->cache_control);
- e->replaceHttpReply(reply);
+ e->replaceHttpReply(reply.getRaw());
if (status == Http::scOkay) {
/* read the file into the buffer and append it to store */
psstate->ping.start = current_time;
mem = fake->mem_obj;
mem->request = psstate->request;
- HTTPMSGLOCK(mem->request);
mem->start_ping = current_time;
mem->ping_reply_callback = peerCountHandleIcpReply;
mem->ircb_data = psstate;
/* our old entry is fine */
assert(fetch->old_entry);
- if (!fetch->old_entry->mem_obj->request) {
+ if (!fetch->old_entry->mem_obj->request)
fetch->old_entry->mem_obj->request = fetch->entry->mem_obj->request;
- HTTPMSGLOCK(fetch->old_entry->mem_obj->request);
- }
assert(fetch->old_entry->mem_obj->request);
assert(e);
sd_state.rewrite_lock = e;
debugs(71, 3, "storeDigestRewrite: url: " << url << " key: " << e->getMD5Text());
- HttpRequest *req = HttpRequest::CreateFromUrl(url);
- e->mem_obj->request = req;
- HTTPMSGLOCK(e->mem_obj->request);
+ e->mem_obj->request = HttpRequest::CreateFromUrl(url);
/* wait for rebuild (if any) to finish */
if (sd_state.rebuild_lock) {