Program: 20954
Project: 20954
Buggy source:
@Override public AvailableStatus requestFileInformation(DownloadLink downloadLink) throws IOException, PluginException, InterruptedException {
  this.setBrowserExclusive();
  String url=downloadLink.getDownloadURL();
  AvailableStatus status=AvailableStatus.TRUE;
  for (int i=0; i < NUMBER_OF_RETRIES; i++) {
    try {
      br.getPage(url);
      String redirectURL=br.getRedirectLocation();
      if (redirectURL != null && redirectURL.indexOf(ERROR_PAGE) > 0) {
        status=AvailableStatus.FALSE;
        String errorCode=redirectURL.substring(redirectURL.indexOf("String_Node_Str") + 1,redirectURL.length());
        if (errorCode.equals("String_Node_Str")) {
          logger.warning("String_Node_Str" + url + "String_Node_Str");
        }
        break;
      }
      if (redirectURL != null && br.getCookie("String_Node_Str","String_Node_Str") != null) {
        if (Plugin.extractFileNameFromURL(url).equals("String_Node_Str")) {
          br.getPage(redirectURL);
          break;
        }
        downloadLink.setProperty("String_Node_Str","String_Node_Str");
        if (!downloadLink.getStringProperty("String_Node_Str","String_Node_Str").equalsIgnoreCase("String_Node_Str")) {
          downloadLink.setName(Plugin.extractFileNameFromURL(br.getRedirectLocation()));
        }
        return AvailableStatus.TRUE;
      }
      break;
    }
 catch (    IOException e) {
      if (e.getMessage().contains("String_Node_Str")) {
        logger.info("String_Node_Str");
        Thread.sleep(200);
        continue;
      }
 else {
        status=AvailableStatus.FALSE;
      }
    }
  }
  if (status == AvailableStatus.FALSE)   throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  if (br.getRegex(offlinelink).matches())   throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  String filename=br.getRegex("String_Node_Str").getMatch(0);
  String filesize=br.getRegex("String_Node_Str").getMatch(0);
  if (filesize == null)   filesize=br.getRegex("String_Node_Str").getMatch(0);
  if (filename == null || filesize == null)   throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  downloadLink.setFinalFileName(filename.trim());
  downloadLink.setDownloadSize(Regex.getSize(filesize));
  status=AvailableStatus.TRUE;
  return status;
}

Fixed version (ground truth):
@Override public AvailableStatus requestFileInformation(DownloadLink downloadLink) throws IOException, PluginException, InterruptedException {
  this.setBrowserExclusive();
  br.setFollowRedirects(false);
  downloadLink.setProperty("String_Node_Str","String_Node_Str");
  String url=downloadLink.getDownloadURL();
  AvailableStatus status=AvailableStatus.TRUE;
  for (int i=0; i < NUMBER_OF_RETRIES; i++) {
    try {
      br.getPage(url);
      String redirectURL=br.getRedirectLocation();
      if (redirectURL != null && redirectURL.indexOf(ERROR_PAGE) > 0) {
        status=AvailableStatus.FALSE;
        String errorCode=redirectURL.substring(redirectURL.indexOf("String_Node_Str") + 1,redirectURL.length());
        if (errorCode.equals("String_Node_Str")) {
          logger.warning("String_Node_Str" + url + "String_Node_Str");
        }
        break;
      }
      if (redirectURL != null && br.getCookie("String_Node_Str","String_Node_Str") != null) {
        if (url.contains("String_Node_Str")) {
          br.getPage(redirectURL);
          break;
        }
        downloadLink.setProperty("String_Node_Str","String_Node_Str");
        if (!downloadLink.getStringProperty("String_Node_Str","String_Node_Str").equalsIgnoreCase("String_Node_Str")) {
          downloadLink.setName(Plugin.extractFileNameFromURL(br.getRedirectLocation()));
        }
        return AvailableStatus.TRUE;
      }
      break;
    }
 catch (    IOException e) {
      if (e.getMessage().contains("String_Node_Str")) {
        logger.info("String_Node_Str");
        Thread.sleep(200);
        continue;
      }
 else {
        status=AvailableStatus.FALSE;
      }
    }
  }
  if (status == AvailableStatus.FALSE)   throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  if (br.getRegex(offlinelink).matches())   throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  String filename=br.getRegex("String_Node_Str").getMatch(0);
  String filesize=br.getRegex("String_Node_Str").getMatch(0);
  if (filesize == null)   filesize=br.getRegex("String_Node_Str").getMatch(0);
  if (filename == null || filesize == null)   throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  downloadLink.setFinalFileName(filename.trim());
  downloadLink.setDownloadSize(Regex.getSize(filesize));
  status=AvailableStatus.TRUE;
  return status;
}