]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Add default constructor for HelperReply()
authorAmos Jeffries <squid3@treenet.co.nz>
Thu, 8 Nov 2012 08:49:33 +0000 (21:49 +1300)
committerAmos Jeffries <squid3@treenet.co.nz>
Thu, 8 Nov 2012 08:49:33 +0000 (21:49 +1300)
Simplifies the nil-response code a little and allows hard-coded helper
error cases HelperReply objects to be explicitly initialized instead of
parsed.

src/HelperReply.h
src/client_side_request.cc
src/dns.cc
src/helper.cc
src/redirect.cc
src/ssl/helper.cc

index 112850787262c64ba9fdbfb8ab708b002e84aeb7..5f06136f85217d460885f5e527587d1e2caa77c7 100644 (file)
@@ -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);
index a97d558d8c1c1f74bcca8d4f49652f2ace2ab75d..d43097c0408a9411017f4e44c4dad6315c23cc64 100644 (file)
@@ -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);
     }
 }
index 8fcf3d6f769ae53c782afd4648b329cd45f2924d..5c51a5343f8c9e0ba48832a9e4a046e0c2102d8d 100644 (file)
@@ -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;
     }
index 0656f4aac02499cf3437997bb9c332d7467f8bbc..fe07223d075b5c65c0aff5192fc4a79b63ec9de6 100644 (file)
@@ -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 */
index e4d57becdbdbcdb8fc088eb5fb1a4f92e98bcd00..a0eab3a05748733d8c76d0979c64086b142493ca 100644 (file)
@@ -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;
     }
 
index c6b109958907879fdcb626707fa0febdbd00c765..bf1153e0930794a403f9965c8d7148f8a8ee5265 100644 (file)
@@ -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;
     }