]> git.ipfire.org Git - thirdparty/squid.git/blobdiff - src/errorpage.cc
Merge form trunk
[thirdparty/squid.git] / src / errorpage.cc
index 7c4205e120b50825737bd63b6ba9e32e08e384af..80d0ae344dfb09806e05dc7b3aca3116edebf1b1 100644 (file)
 
 #include "auth/UserRequest.h"
 #include "comm/Connection.h"
+#include "err_detail_type.h"
 #include "errorpage.h"
 #include "fde.h"
+#include "html_quote.h"
 #include "HttpReply.h"
 #include "HttpRequest.h"
 #include "MemBuf.h"
@@ -369,7 +371,7 @@ errorReservePageId(const char *page_name)
 }
 
 /// \ingroup ErrorPageInternal
-static const char *
+const char *
 errorPageName(int pageId)
 {
     if (pageId >= ERR_NONE && pageId < ERR_MAX)                /* common case */
@@ -393,6 +395,7 @@ errorCon(err_type type, http_status status, HttpRequest * request)
     if (request != NULL) {
         err->request = HTTPMSGLOCK(request);
         err->src_addr = request->client_addr;
+        request->detailError(type, ERR_DETAIL_NONE);
     }
 
     return err;
@@ -451,15 +454,15 @@ errorSend(const Comm::ConnectionPointer &conn, ErrorState * err)
      */
 
     if (err->request)
-        err->request->errType = err->type;
+        err->request->detailError(err->type, err->xerrno);
 
     /* moved in front of errorBuildBuf @?@ */
     err->flags.flag_cbdata = 1;
 
     rep = err->BuildHttpReply();
-
-    comm_write_mbuf(conn, rep->pack(), errorSendComplete, err);
-
+    MemBuf *mb = rep->pack();
+    comm_write_mbuf(conn, mb, errorSendComplete, err);
+    delete mb;
     delete rep;
 }
 
@@ -484,8 +487,7 @@ errorSendComplete(const Comm::ConnectionPointer &conn, char *bufnotused, size_t
             err->callback(conn->fd, err->callback_data, size);
         } else {
             debugs(4, 3, "errorSendComplete: comm_close");
-            Comm::ConnectionPointer nonConst = conn;
-            nonConst->close();
+            conn->close();
         }
     }