From: Amos Jeffries Date: Thu, 8 Nov 2012 08:49:33 +0000 (+1300) Subject: Add default constructor for HelperReply() X-Git-Tag: SQUID_3_4_0_1~471^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3c2c35d384f479b00f0ce9f1bfcc58cf1669383b;p=thirdparty%2Fsquid.git Add default constructor for HelperReply() Simplifies the nil-response code a little and allows hard-coded helper error cases HelperReply objects to be explicitly initialized instead of parsed. --- diff --git a/src/HelperReply.h b/src/HelperReply.h index 1128507872..5f06136f85 100644 --- a/src/HelperReply.h +++ b/src/HelperReply.h @@ -24,6 +24,11 @@ private: HelperReply &operator =(const HelperReply &r); public: + HelperReply() : result(HelperReply::Unknown), responseKeys(), whichServer(NULL) { + other_.init(1,1); + other_.terminate(); + } + // create/parse details from the msg buffer provided // XXX: buf should be const but parse() needs non-const for now HelperReply(char *buf, size_t len, bool urlQuoting = false); diff --git a/src/client_side_request.cc b/src/client_side_request.cc index a97d558d8c..d43097c040 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -902,7 +902,7 @@ clientRedirectAccessCheckDone(allow_t answer, void *data) if (answer == ACCESS_ALLOWED) redirectStart(http, clientRedirectDoneWrapper, context); else { - HelperReply nilReply(NULL,0); + HelperReply nilReply; context->clientRedirectDone(nilReply); } } diff --git a/src/dns.cc b/src/dns.cc index 8fcf3d6f76..5c51a5343f 100644 --- a/src/dns.cc +++ b/src/dns.cc @@ -131,7 +131,13 @@ 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"; - HelperReply failReply(t, strlen(t)); + HelperReply failReply; + /* XXX: upgrade the ipcache and fqdn cache handlers to new syntax + failReply.result= HelperReply::BrokenHelper; + failReply.responseKeys.add("message","Temporary network problem, please retry later"); + failReply.responseKeys.add("message","DNS lookup queue overloaded"); + */ + failReply.modifiableOther().append(t, strlen(t)); callback(data, failReply); return; } diff --git a/src/helper.cc b/src/helper.cc index 0656f4aac0..fe07223d07 100644 --- a/src/helper.cc +++ b/src/helper.cc @@ -398,7 +398,7 @@ helperSubmit(helper * hlp, const char *buf, HLPCB * callback, void *data) { if (hlp == NULL) { debugs(84, 3, "helperSubmit: hlp == NULL"); - HelperReply nilReply(NULL, 0); + HelperReply nilReply; callback(data, nilReply); return; } @@ -424,7 +424,7 @@ helperStatefulSubmit(statefulhelper * hlp, const char *buf, HLPCB * callback, vo { if (hlp == NULL) { debugs(84, 3, "helperStatefulSubmit: hlp == NULL"); - HelperReply nilReply(NULL, 0); + HelperReply nilReply; callback(data, nilReply); return; } @@ -758,7 +758,7 @@ helperServerFree(helper_server *srv) void *cbdata; if (cbdataReferenceValidDone(r->data, &cbdata)) { - HelperReply nilReply(NULL, 0); + HelperReply nilReply; r->callback(cbdata, nilReply); } @@ -824,7 +824,7 @@ helperStatefulServerFree(helper_stateful_server *srv) void *cbdata; if (cbdataReferenceValidDone(r->data, &cbdata)) { - HelperReply nilReply(NULL,0); + HelperReply nilReply; nilReply.whichServer = srv; r->callback(cbdata, nilReply); } @@ -1366,7 +1366,7 @@ helperStatefulDispatch(helper_stateful_server * srv, helper_stateful_request * r /* a callback is needed before this request can _use_ a helper. */ /* we don't care about releasing this helper. The request NEVER * gets to the helper. So we throw away the return code */ - HelperReply nilReply(NULL,0); + HelperReply nilReply; nilReply.whichServer = srv; r->callback(r->data, nilReply); /* throw away the placeholder */ diff --git a/src/redirect.cc b/src/redirect.cc index e4d57becdb..a0eab3a057 100644 --- a/src/redirect.cc +++ b/src/redirect.cc @@ -151,8 +151,10 @@ 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; - HelperReply nilReply(NULL,0); - handler(data, nilReply); + HelperReply bypassReply; + bypassReply.result = HelperReply::Okay; + bypassReply.responseKeys.add("message","URL rewrite/redirect queue too long. Bypassed."); + handler(data, bypassReply); return; } diff --git a/src/ssl/helper.cc b/src/ssl/helper.cc index c6b1099589..bf1153e093 100644 --- a/src/ssl/helper.cc +++ b/src/ssl/helper.cc @@ -93,8 +93,9 @@ void Ssl::Helper::sslSubmit(CrtdMessage const & message, HLPCB * callback, void if (squid_curtime - first_warn > 3 * 60) fatal("SSL servers not responding for 3 minutes"); debugs(34, DBG_IMPORTANT, HERE << "Queue overload, rejecting"); - const char *errMsg = "BH message=\"error 45 Temporary network problem, please retry later\""; - HelperReply failReply(errMsg,strlen(errMsg)); + HelperReply failReply; + failReply.result = HelperReply::BrokenHelper; + failReply.responseKeys.add("message", "error 45 Temporary network problem, please retry later"); callback(data, failReply); return; }