]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Fill access log's %error_detail when responding with
authorChristos Tsantilas <chtsanti@users.sourceforge.net>
Fri, 18 Nov 2011 16:40:10 +0000 (18:40 +0200)
committerChristos Tsantilas <chtsanti@users.sourceforge.net>
Fri, 18 Nov 2011 16:40:10 +0000 (18:40 +0200)
ERR_SECURE_CONNECT_FAIL.

This is a Measurement Factory project

src/format/Format.cc
src/forward.cc
src/ssl/ErrorDetail.h

index 13708abed8c2b43bc79ef472bd0c2b97df4f0ace..02eadd2947ca329ab92ad5aea92ad009d29d3e66 100644 (file)
 #include "rfc1738.h"
 #include "SquidTime.h"
 #include "Store.h"
+#if USE_SSL
+#include "ssl/ErrorDetail.h"
+#endif
+
 
 /// Convert a string to NULL pointer if it is ""
 #define strOrNull(s) ((s)==NULL||(s)[0]=='\0'?NULL:(s))
@@ -822,6 +826,14 @@ Format::Format::assemble(MemBuf &mb, AccessLogEntry *al, int logSequenceNumber)
             break;
 
         case LFT_SQUID_ERROR_DETAIL:
+#if USE_SSL
+            if (al->request && al->request->errType == ERR_SECURE_CONNECT_FAIL) {
+                if (! (out = Ssl::GetErrorName(al->request->errDetail))) {
+                    snprintf(tmp, sizeof(tmp), "SSL_ERR=%d", al->request->errDetail);
+                    out = tmp;
+                }
+            } else 
+#endif
             if (al->request && al->request->errDetail != ERR_DETAIL_NONE) {
                 if (al->request->errDetail > ERR_DETAIL_START  &&
                         al->request->errDetail < ERR_DETAIL_MAX)
index c1462c91018560e5727ab734b494876a0fb59ea4..f2bb3e22f47cd4e5bb2b39697d4b66b006f6bb8a 100644 (file)
@@ -332,6 +332,11 @@ FwdState::fail(ErrorState * errorState)
     if (!errorState->request)
         errorState->request = HTTPMSGLOCK(request);
 
+#if USE_SSL
+    if (errorState->type == ERR_SECURE_CONNECT_FAIL && errorState->detail)
+        request->detailError(errorState->type, errorState->detail->errorNo());
+    else
+#endif
     request->detailError(errorState->type, errorState->xerrno);
 }
 
index 94c84072bfd8d324ded5d70f58425ade20e34b5f..2e2896263648368eb579dc49cdc9e1751cd31bae 100644 (file)
@@ -52,6 +52,8 @@ public:
     void useRequest(HttpRequest *aRequest) { if (aRequest != NULL) request = aRequest;}
     /// The error name to embed in squid error pages
     const char *errorName() const {return err_code();}
+    /// The error no
+    ssl_error_t errorNo() const {return error_no;}
     ///Sets the low-level error returned by OpenSSL ERR_get_error()
     void setLibError(unsigned long lib_err_no) {lib_error_no = lib_err_no;}