Program: 21542
Project: 21542
Buggy source:
public String postPage(final URL url,final String data) throws IOException, InterruptedException {
synchronized (BasicHTTP.CALL_LOCK) {
    OutputStreamWriter writer=null;
    BufferedReader reader=null;
    OutputStream outputStream=null;
    InputStreamReader isr=null;
    try {
      this.connection=HTTPConnectionFactory.createHTTPConnection(url,this.proxy);
      this.connection.setConnectTimeout(this.connectTimeout);
      this.connection.setReadTimeout(this.readTimeout);
      this.connection.setRequestMethod(RequestMethod.POST);
      this.connection.setRequestProperty("String_Node_Str",TranslationFactory.getDesiredLanguage());
      this.connection.setRequestProperty("String_Node_Str","String_Node_Str" + Application.getApplication());
      this.connection.setRequestProperty(HTTPConstants.HEADER_REQUEST_CONTENT_LENGTH,data.getBytes().length + "String_Node_Str");
      for (      final Entry<String,String> next : this.requestHeader.entrySet()) {
        this.connection.setRequestProperty(next.getKey(),next.getValue());
      }
      this.connection.setRequestProperty("String_Node_Str","String_Node_Str");
      int lookupTry=0;
      while (true) {
        try {
          this.connection.connect();
          break;
        }
 catch (        final UnknownHostException e) {
          if (++lookupTry > 3) {
            throw e;
          }
          Thread.sleep(200);
        }
      }
      outputStream=this.connection.getOutputStream();
      writer=new OutputStreamWriter(outputStream);
      writer.write(data);
      writer.flush();
      reader=new BufferedReader(isr=new InputStreamReader(this.connection.getInputStream(),"String_Node_Str"));
      final StringBuilder sb=new StringBuilder();
      String str;
      while ((str=reader.readLine()) != null) {
        if (sb.length() > 0) {
          sb.append("String_Node_Str");
        }
        sb.append(str);
      }
      return sb.toString();
    }
  finally {
      try {
        reader.close();
      }
 catch (      final Throwable e) {
      }
      try {
        isr.close();
      }
 catch (      final Throwable e) {
      }
      try {
        writer.close();
      }
 catch (      final Throwable e) {
      }
      try {
        outputStream.close();
      }
 catch (      final Throwable e) {
      }
      try {
        this.connection.disconnect();
      }
 catch (      final Throwable e) {
      }
    }
  }
}

Fixed version (ground truth):
public String postPage(final URL url,final String data) throws IOException, InterruptedException {
synchronized (BasicHTTP.CALL_LOCK) {
    OutputStreamWriter writer=null;
    BufferedReader reader=null;
    OutputStream outputStream=null;
    InputStreamReader isr=null;
    try {
      this.connection=HTTPConnectionFactory.createHTTPConnection(url,this.proxy);
      this.connection.setConnectTimeout(this.connectTimeout);
      this.connection.setReadTimeout(this.readTimeout);
      this.connection.setRequestMethod(RequestMethod.POST);
      this.connection.setRequestProperty("String_Node_Str",TranslationFactory.getDesiredLanguage());
      this.connection.setRequestProperty("String_Node_Str","String_Node_Str" + Application.getApplication());
      this.connection.setRequestProperty(HTTPConstants.HEADER_REQUEST_CONTENT_LENGTH,data.getBytes().length + "String_Node_Str");
      for (      final Entry<String,String> next : this.requestHeader.entrySet()) {
        this.connection.setRequestProperty(next.getKey(),next.getValue());
      }
      this.connection.setRequestProperty("String_Node_Str","String_Node_Str");
      int lookupTry=0;
      while (true) {
        try {
          this.connection.connect();
          break;
        }
 catch (        final UnknownHostException e) {
          if (++lookupTry > 3) {
            throw e;
          }
          Thread.sleep(200);
        }
      }
      outputStream=this.connection.getOutputStream();
      writer=new OutputStreamWriter(outputStream);
      writer.write(data);
      writer.flush();
      this.connection.postDataSend();
      reader=new BufferedReader(isr=new InputStreamReader(this.connection.getInputStream(),"String_Node_Str"));
      final StringBuilder sb=new StringBuilder();
      String str;
      while ((str=reader.readLine()) != null) {
        if (sb.length() > 0) {
          sb.append("String_Node_Str");
        }
        sb.append(str);
      }
      return sb.toString();
    }
  finally {
      try {
        reader.close();
      }
 catch (      final Throwable e) {
      }
      try {
        isr.close();
      }
 catch (      final Throwable e) {
      }
      try {
        writer.close();
      }
 catch (      final Throwable e) {
      }
      try {
        outputStream.close();
      }
 catch (      final Throwable e) {
      }
      try {
        this.connection.disconnect();
      }
 catch (      final Throwable e) {
      }
    }
  }
}