From: Amos Jeffries Date: Tue, 30 Oct 2012 09:16:33 +0000 (+1300) Subject: Fix HelperReply(const HelperReply&) is private X-Git-Tag: SQUID_3_4_0_1~536 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=12f7e09b442f4f234e89cdded18a4b28c98a7060;p=thirdparty%2Fsquid.git Fix HelperReply(const HelperReply&) is private GCC 4.1 and possibly others use copy-constructor when an instance is created in a function parameter list using copy by reference. We must create such objects as loal variables and pass to the function for best efficiency. --- diff --git a/src/dns.cc b/src/dns.cc index f119433945..8fcf3d6f76 100644 --- a/src/dns.cc +++ b/src/dns.cc @@ -131,7 +131,8 @@ dnsSubmit(const char *lookup, HLPCB * callback, void *data) debugs(34, DBG_IMPORTANT, "dnsSubmit: queue overload, rejecting " << lookup); const char *t = "$fail Temporary network problem, please retry later"; - callback(data, HelperReply(t, strlen(t))); + HelperReply failReply(t, strlen(t)); + callback(data, failReply); return; } diff --git a/src/helper.cc b/src/helper.cc index 4be084bdb1..0656f4aac0 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -398,7 +398,8 @@ helperSubmit(helper * hlp, const char *buf, HLPCB * callback, void *data) { if (hlp == NULL) { debugs(84, 3, "helperSubmit: hlp == NULL"); - callback(data, HelperReply(NULL,0)); + HelperReply nilReply(NULL, 0); + callback(data, nilReply); return; } @@ -423,7 +424,8 @@ helperStatefulSubmit(statefulhelper * hlp, const char *buf, HLPCB * callback, vo { if (hlp == NULL) { debugs(84, 3, "helperStatefulSubmit: hlp == NULL"); - callback(data, HelperReply(NULL,0)); + HelperReply nilReply(NULL, 0); + callback(data, nilReply); return; } @@ -755,8 +757,10 @@ helperServerFree(helper_server *srv) if ((r = srv->requests[i])) { void *cbdata; - if (cbdataReferenceValidDone(r->data, &cbdata)) - r->callback(cbdata, HelperReply(NULL,0)); + if (cbdataReferenceValidDone(r->data, &cbdata)) { + HelperReply nilReply(NULL, 0); + r->callback(cbdata, nilReply); + } helperRequestFree(r); @@ -854,8 +858,10 @@ helperReturnBuffer(int request_number, helper_server * srv, helper * hlp, char * r->callback = NULL; void *cbdata = NULL; - if (cbdataReferenceValidDone(r->data, &cbdata)) - callback(cbdata, HelperReply(msg, (msg_end-msg))); + if (cbdataReferenceValidDone(r->data, &cbdata)) { + HelperReply response(msg, (msg_end-msg)); + callback(cbdata, response); + } -- srv->stats.pending; ++ srv->stats.replies; diff --git a/src/redirect.cc b/src/redirect.cc index 0e3aee5c0f..e4d57becdb 100644 --- a/src/redirect.cc +++ b/src/redirect.cc @@ -151,7 +151,8 @@ redirectStart(ClientHttpRequest * http, HLPCB * handler, void *data) if (Config.onoff.redirector_bypass && redirectors->stats.queue_size) { /* Skip redirector if there is one request queued */ ++n_bypassed; - handler(data, HelperReply(NULL,0)); + HelperReply nilReply(NULL,0); + handler(data, nilReply); return; } diff --git a/src/ssl/helper.cc b/src/ssl/helper.cc index d3792f819f..dd6b00b90f 100644 --- a/src/ssl/helper.cc +++ b/src/ssl/helper.cc @@ -94,7 +94,8 @@ void Ssl::Helper::sslSubmit(CrtdMessage const & message, HLPCB * callback, void fatal("SSL servers not responding for 3 minutes"); debugs(34, DBG_IMPORTANT, HERE << "Queue overload, rejecting"); const char *errMsg = "BH error 45 Temporary network problem, please retry later"; // XXX: upgrade to message="" - callback(data, HelperReply(errMsg,strlen(errMsg))); + HelperReply failReply(errMsg,strlen(errMsg)); + callback(data, failReply); return; }