Program: 102888
Project: 102888
Buggy source:
@Override public Page download(Request request,Task task){
  Site site=task.getSite();
  logger.info("String_Node_Str" + request.getUrl());
  HttpClient httpClient=HttpClientPool.getInstance().getClient(site);
  String charset=site.getCharset();
  try {
    HttpGet httpGet=new HttpGet(request.getUrl());
    HttpResponse httpResponse=null;
    int tried=0;
    boolean retry;
    do {
      try {
        httpResponse=httpClient.execute(httpGet);
        retry=false;
      }
 catch (      IOException e) {
        tried++;
        if (tried > site.getRetryTimes()) {
          logger.warn("String_Node_Str" + request.getUrl() + "String_Node_Str",e);
          return null;
        }
        logger.info("String_Node_Str" + request.getUrl() + "String_Node_Str"+ tried+ "String_Node_Str");
        retry=true;
      }
    }
 while (retry);
    int statusCode=httpResponse.getStatusLine().getStatusCode();
    if (site.getAcceptStatCode().contains(statusCode)) {
      if (charset == null) {
        String value=httpResponse.getEntity().getContentType().getValue();
        charset=UrlUtils.getCharset(value);
      }
      handleGzip(httpResponse);
      String content=IOUtils.toString(httpResponse.getEntity().getContent(),charset);
      Page page=new Page();
      page.setHtml(new Html(UrlUtils.fixAllRelativeHrefs(content,request.getUrl())));
      page.setUrl(new PlainText(request.getUrl()));
      page.setRequest(request);
      return page;
    }
 else {
      logger.warn("String_Node_Str" + statusCode + "String_Node_Str"+ request.getUrl());
    }
  }
 catch (  Exception e) {
    logger.warn("String_Node_Str" + request.getUrl() + "String_Node_Str",e);
  }
  return null;
}

Fixed version (ground truth):
@Override public Page download(Request request,Task task){
  Site site=task.getSite();
  logger.info("String_Node_Str" + request.getUrl());
  HttpClient httpClient=HttpClientPool.getInstance(poolSize).getClient(site);
  String charset=site.getCharset();
  try {
    HttpGet httpGet=new HttpGet(request.getUrl());
    HttpResponse httpResponse=null;
    int tried=0;
    boolean retry;
    do {
      try {
        httpResponse=httpClient.execute(httpGet);
        retry=false;
      }
 catch (      IOException e) {
        tried++;
        if (tried > site.getRetryTimes()) {
          logger.warn("String_Node_Str" + request.getUrl() + "String_Node_Str",e);
          return null;
        }
        logger.info("String_Node_Str" + request.getUrl() + "String_Node_Str"+ tried+ "String_Node_Str");
        retry=true;
      }
    }
 while (retry);
    int statusCode=httpResponse.getStatusLine().getStatusCode();
    if (site.getAcceptStatCode().contains(statusCode)) {
      if (charset == null) {
        String value=httpResponse.getEntity().getContentType().getValue();
        charset=UrlUtils.getCharset(value);
      }
      handleGzip(httpResponse);
      String content=IOUtils.toString(httpResponse.getEntity().getContent(),charset);
      Page page=new Page();
      page.setHtml(new Html(UrlUtils.fixAllRelativeHrefs(content,request.getUrl())));
      page.setUrl(new PlainText(request.getUrl()));
      page.setRequest(request);
      return page;
    }
 else {
      logger.warn("String_Node_Str" + statusCode + "String_Node_Str"+ request.getUrl());
    }
  }
 catch (  Exception e) {
    logger.warn("String_Node_Str" + request.getUrl() + "String_Node_Str",e);
  }
  return null;
}