Program: 99296
Project: 99296
Buggy source:
/** 
 * @param httpRequest HttpServletRequest which is being handled 
 * @param httpResponse HttpServletResponse which is being handled 
 * @return true if the request was actually handled
 * @throws ServletException per usual
 * @throws IOException per usual
 */
public boolean handleRequest(HttpServletRequest httpRequest,HttpServletResponse httpResponse) throws ServletException, IOException {
  WaybackRequest wbRequest=null;
  boolean handled=false;
  try {
    String inputPath=translateRequestPathQuery(httpRequest);
    Thread.currentThread().setName("String_Node_Str" + Thread.currentThread().getId() + "String_Node_Str"+ getBeanName()+ "String_Node_Str"+ inputPath);
    LOGGER.fine("String_Node_Str" + inputPath);
    wbRequest=getParser().parse(httpRequest,this);
    if (wbRequest != null) {
      handled=true;
      wbRequest.setAccessPoint(this);
      wbRequest.fixup(httpRequest);
      if (getAuthentication() != null) {
        if (!getAuthentication().isTrue(wbRequest)) {
          throw new AuthenticationControlException("String_Node_Str");
        }
      }
      if (getExclusionFactory() != null) {
        ExclusionFilter exclusionFilter=getExclusionFactory().get();
        if (exclusionFilter == null) {
          throw new AdministrativeAccessControlException("String_Node_Str");
        }
        wbRequest.setExclusionFilter(exclusionFilter);
      }
      wbRequest.setExactScheme(isExactSchemeMatch());
      if (wbRequest.isReplayRequest()) {
        if (bounceToReplayPrefix) {
          String suffix=translateRequestPathQuery(httpRequest);
          String replayUrl=replayPrefix + suffix;
          httpResponse.sendRedirect(replayUrl);
          return true;
        }
        handleReplay(wbRequest,httpRequest,httpResponse);
      }
 else {
        if (bounceToQueryPrefix) {
          String suffix=translateRequestPathQuery(httpRequest);
          String replayUrl=queryPrefix + suffix;
          httpResponse.sendRedirect(replayUrl);
          return true;
        }
        wbRequest.setExactHost(isExactHostMatch());
        handleQuery(wbRequest,httpRequest,httpResponse);
      }
    }
 else {
      handled=dispatchLocal(httpRequest,httpResponse);
    }
  }
 catch (  BetterRequestException e) {
    e.generateResponse(httpResponse);
    handled=true;
  }
catch (  WaybackException e) {
    if (wbRequest.isReplayRequest() && (getLiveWebPrefix() != null) && (getLiveWebPrefix().length() > 0)) {
      httpResponse.setHeader("String_Node_Str",e.getMessage() + e.getDetails());
      String liveUrl=getLiveWebPrefix() + wbRequest.getRequestUrl();
      httpResponse.sendRedirect(liveUrl);
    }
 else {
      logNotInArchive(e,wbRequest);
      httpResponse.setHeader("String_Node_Str",e.getMessage());
      getException().renderException(httpRequest,httpResponse,wbRequest,e,getUriConverter());
    }
  }
  return handled;
}

Fixed version (ground truth):
/** 
 * @param httpRequest HttpServletRequest which is being handled 
 * @param httpResponse HttpServletResponse which is being handled 
 * @return true if the request was actually handled
 * @throws ServletException per usual
 * @throws IOException per usual
 */
public boolean handleRequest(HttpServletRequest httpRequest,HttpServletResponse httpResponse) throws ServletException, IOException {
  WaybackRequest wbRequest=null;
  boolean handled=false;
  try {
    String inputPath=translateRequestPathQuery(httpRequest);
    Thread.currentThread().setName("String_Node_Str" + Thread.currentThread().getId() + "String_Node_Str"+ getBeanName()+ "String_Node_Str"+ inputPath);
    LOGGER.fine("String_Node_Str" + inputPath);
    wbRequest=getParser().parse(httpRequest,this);
    if (wbRequest != null) {
      handled=true;
      wbRequest.setAccessPoint(this);
      wbRequest.fixup(httpRequest);
      if (getAuthentication() != null) {
        if (!getAuthentication().isTrue(wbRequest)) {
          throw new AuthenticationControlException("String_Node_Str");
        }
      }
      if (getExclusionFactory() != null) {
        ExclusionFilter exclusionFilter=getExclusionFactory().get();
        if (exclusionFilter == null) {
          throw new AdministrativeAccessControlException("String_Node_Str");
        }
        wbRequest.setExclusionFilter(exclusionFilter);
      }
      wbRequest.setExactScheme(isExactSchemeMatch());
      if (wbRequest.isReplayRequest()) {
        if (bounceToReplayPrefix) {
          String suffix=translateRequestPathQuery(httpRequest);
          String replayUrl=replayPrefix + suffix;
          httpResponse.sendRedirect(replayUrl);
          return true;
        }
        handleReplay(wbRequest,httpRequest,httpResponse);
      }
 else {
        if (bounceToQueryPrefix) {
          String suffix=translateRequestPathQuery(httpRequest);
          String replayUrl=queryPrefix + suffix;
          httpResponse.sendRedirect(replayUrl);
          return true;
        }
        wbRequest.setExactHost(isExactHostMatch());
        handleQuery(wbRequest,httpRequest,httpResponse);
      }
    }
 else {
      handled=dispatchLocal(httpRequest,httpResponse);
    }
  }
 catch (  BetterRequestException e) {
    e.generateResponse(httpResponse);
    handled=true;
  }
catch (  WaybackException e) {
    if (wbRequest.isReplayRequest() && (getLiveWebPrefix() != null) && (getLiveWebPrefix().length() > 0)) {
      writeErrorHeader(httpResponse,"String_Node_Str",e.getMessage());
      String liveUrl=getLiveWebPrefix() + wbRequest.getRequestUrl();
      httpResponse.sendRedirect(liveUrl);
    }
 else {
      logNotInArchive(e,wbRequest);
      writeErrorHeader(httpResponse,"String_Node_Str",e.getMessage());
      getException().renderException(httpRequest,httpResponse,wbRequest,e,getUriConverter());
    }
  }
  return handled;
}