/// <exception cref="System.IO.IOException"/>
 /// <exception cref="Javax.Servlet.ServletException"/>
 public override void DoFilter(ServletRequest request, ServletResponse response, FilterChain
                               filterChain)
 {
     KMSAuthenticationFilter.KMSResponse kmsResponse = new KMSAuthenticationFilter.KMSResponse
                                                           (response);
     base.DoFilter(request, kmsResponse, filterChain);
     if (kmsResponse.statusCode != HttpServletResponse.ScOk && kmsResponse.statusCode
         != HttpServletResponse.ScCreated && kmsResponse.statusCode != HttpServletResponse
         .ScUnauthorized)
     {
         KMSWebApp.GetInvalidCallsMeter().Mark();
     }
     // HttpServletResponse.SC_UNAUTHORIZED is because the request does not
     // belong to an authenticated user.
     if (kmsResponse.statusCode == HttpServletResponse.ScUnauthorized)
     {
         KMSWebApp.GetUnauthenticatedCallsMeter().Mark();
         string        method      = ((HttpServletRequest)request).GetMethod();
         StringBuilder requestURL  = ((HttpServletRequest)request).GetRequestURL();
         string        queryString = ((HttpServletRequest)request).GetQueryString();
         if (queryString != null)
         {
             requestURL.Append("?").Append(queryString);
         }
         KMSWebApp.GetKMSAudit().Unauthenticated(request.GetRemoteHost(), method, requestURL
                                                 .ToString(), kmsResponse.msg);
     }
 }