Program: 152132
Project: 152132
Buggy source:
/** 
 * Perform POST request.
 * @param url URL where to connect
 * @param postData data which to send. In the form [key1, value1, key2, value2, ...].
 * @return true if connection succeeded; false otherwise
 * @throws java.io.IOException When there is some problem with connection
 */
private boolean doPost(String url,String[] postData) throws IOException {
  logger.fine("String_Node_Str" + url);
  PostMethod method=new PostMethod(url);
  if (referer != null) {
    method.setRequestHeader("String_Node_Str",referer);
  }
  method.setRequestEntity(new StringRequestEntity(convertParamsToString(postData),"String_Node_Str","String_Node_Str"));
  int statuscode=client.executeMethod(method);
  if (statuscode >= 400) {
    logger.warning("String_Node_Str" + url + "String_Node_Str"+ method.getStatusLine());
    return false;
  }
  Header contentType=method.getResponseHeader("String_Node_Str");
  boolean text=(contentType != null && contentType.getValue().startsWith("String_Node_Str"));
  byte[] response=new byte[0];
  InputStream responseStream=method.getResponseBodyAsStream();
  if (responseStream != null) {
    response=IOUtils.toByteArray(responseStream);
    responseStream.close();
  }
  method.releaseConnection();
  if (text) {
    setTextContent(new String(response,method.getResponseCharSet()));
    logger.finest("String_Node_Str" + contentType + "String_Node_Str"+ "String_Node_Str"+ getTextContent()+ "String_Node_Str");
  }
 else {
    setBinaryContent(response);
    logger.finest("String_Node_Str" + contentType);
  }
  if (statuscode >= 300 && statuscode < 400) {
    Header header=method.getResponseHeader("String_Node_Str");
    if (header == null) {
      throw new IOException("String_Node_Str");
    }
    String newURL=header.getValue();
    if (StringUtils.isEmpty(newURL)) {
      throw new IOException("String_Node_Str");
    }
    if (newURL.startsWith("String_Node_Str") || newURL.startsWith("String_Node_Str")) {
      try {
        newURL=convertRelativeRedirectToAbsolute(url,newURL);
      }
 catch (      IOException ex) {
        throw new IOException("String_Node_Str" + "String_Node_Str" + newURL + "String_Node_Str",ex);
      }
    }
    if (!isAbsoluteURL(newURL) && !newURL.startsWith("String_Node_Str")) {
      newURL="String_Node_Str" + newURL;
    }
    logger.fine("String_Node_Str" + newURL);
    return doGet(newURL);
  }
  if (text) {
    String redirect=checkMetaRedirect(textContent);
    if (redirect != null) {
      logger.fine("String_Node_Str" + redirect);
      return followMetaRedirect(redirect,method.getURI());
    }
  }
  return true;
}

Fixed version (ground truth):
/** 
 * Perform POST request.
 * @param url URL where to connect
 * @param postData data which to send. In the form [key1, value1, key2, value2, ...].
 * @return true if connection succeeded; false otherwise
 * @throws java.io.IOException When there is some problem with connection
 */
private boolean doPost(String url,String[] postData) throws IOException {
  logger.fine("String_Node_Str" + url);
  PostMethod method=new PostMethod(url);
  if (referer != null) {
    method.setRequestHeader("String_Node_Str",referer);
  }
  method.setRequestEntity(new StringRequestEntity(convertParamsToString(postData),"String_Node_Str","String_Node_Str"));
  int statuscode=client.executeMethod(method);
  if (statuscode >= 400) {
    logger.warning("String_Node_Str" + url + "String_Node_Str"+ method.getStatusLine());
    return false;
  }
  Header contentType=method.getResponseHeader("String_Node_Str");
  boolean text=(contentType != null && contentType.getValue().startsWith("String_Node_Str"));
  byte[] response=new byte[0];
  InputStream responseStream=method.getResponseBodyAsStream();
  if (responseStream != null) {
    response=IOUtils.toByteArray(responseStream);
    responseStream.close();
  }
  method.releaseConnection();
  if (text) {
    String charset=findContentCharset(response);
    setTextContent(new String(response,StringUtils.defaultIfEmpty(charset,method.getResponseCharSet())));
    logger.finest("String_Node_Str" + contentType + "String_Node_Str"+ "String_Node_Str"+ getTextContent()+ "String_Node_Str");
  }
 else {
    setBinaryContent(response);
    logger.finest("String_Node_Str" + contentType);
  }
  if (statuscode >= 300 && statuscode < 400) {
    Header header=method.getResponseHeader("String_Node_Str");
    if (header == null) {
      throw new IOException("String_Node_Str");
    }
    String newURL=header.getValue();
    if (StringUtils.isEmpty(newURL)) {
      throw new IOException("String_Node_Str");
    }
    if (newURL.startsWith("String_Node_Str") || newURL.startsWith("String_Node_Str")) {
      try {
        newURL=convertRelativeRedirectToAbsolute(url,newURL);
      }
 catch (      IOException ex) {
        throw new IOException("String_Node_Str" + "String_Node_Str" + newURL + "String_Node_Str",ex);
      }
    }
    if (!isAbsoluteURL(newURL) && !newURL.startsWith("String_Node_Str")) {
      newURL="String_Node_Str" + newURL;
    }
    logger.fine("String_Node_Str" + newURL);
    return doGet(newURL);
  }
  if (text) {
    String redirect=checkMetaRedirect(textContent);
    if (redirect != null) {
      logger.fine("String_Node_Str" + redirect);
      return followMetaRedirect(redirect,method.getURI());
    }
  }
  return true;
}