Program: 20939
Project: 20939
Buggy source:
private void getRedirectforAPI(String url,DownloadLink downloadLink) throws PluginException, InterruptedException {
  try {
    br.getPage(url);
    if (br.getRequest().getHttpConnection().getResponseCode() == 404)     throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  }
 catch (  IOException e) {
    try {
      JDLogger.getLogger().info(br.getRequest().getHttpConnection().toString());
    }
 catch (    Throwable e2) {
    }
    JDLogger.exception(e);
    try {
      String passCode;
      if (downloadLink.getStringProperty("String_Node_Str",null) == null) {
        passCode=Plugin.getUserInput(null,downloadLink);
      }
 else {
        passCode=downloadLink.getStringProperty("String_Node_Str",null);
      }
      br.getPage(url + "String_Node_Str" + passCode);
      if (br.getRequest().getHttpConnection().getResponseCode() == 404)       throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
      downloadLink.setProperty("String_Node_Str",passCode);
      return;
    }
 catch (    IOException e2) {
      try {
        JDLogger.getLogger().info(br.getRequest().getHttpConnection().toString());
      }
 catch (      Throwable e3) {
      }
      JDLogger.exception(e2);
      downloadLink.setProperty("String_Node_Str",null);
      throw new PluginException(LinkStatus.ERROR_FATAL,JDL.L("String_Node_Str","String_Node_Str"));
    }
  }
}

Fixed version (ground truth):
private void getRedirectforAPI(String url,DownloadLink downloadLink) throws PluginException, InterruptedException {
  try {
    br.getPage(url);
    if (br.getRequest().getHttpConnection().getResponseCode() == 404)     throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
  }
 catch (  IOException e) {
    try {
      if (br.getRequest().getHttpConnection().getResponseCode() == 503)       limitReached(downloadLink,10 * 60,"String_Node_Str");
    }
 catch (    IOException e1) {
      JDLogger.exception(e1);
    }
    try {
      JDLogger.getLogger().info(br.getRequest().getHttpConnection().toString());
    }
 catch (    Throwable e2) {
    }
    JDLogger.exception(e);
    try {
      String passCode;
      if (downloadLink.getStringProperty("String_Node_Str",null) == null) {
        passCode=Plugin.getUserInput(null,downloadLink);
      }
 else {
        passCode=downloadLink.getStringProperty("String_Node_Str",null);
      }
      br.getPage(url + "String_Node_Str" + passCode);
      if (br.getRequest().getHttpConnection().getResponseCode() == 404)       throw new PluginException(LinkStatus.ERROR_FILE_NOT_FOUND);
      downloadLink.setProperty("String_Node_Str",passCode);
      return;
    }
 catch (    IOException e2) {
      try {
        if (br.getRequest().getHttpConnection().getResponseCode() == 503)         limitReached(downloadLink,10 * 60,"String_Node_Str");
      }
 catch (      IOException e1) {
        JDLogger.exception(e1);
      }
      try {
        JDLogger.getLogger().info(br.getRequest().getHttpConnection().toString());
      }
 catch (      Throwable e3) {
      }
      JDLogger.exception(e2);
      downloadLink.setProperty("String_Node_Str",null);
      throw new PluginException(LinkStatus.ERROR_FATAL,JDL.L("String_Node_Str","String_Node_Str"));
    }
  }
}