Program: 94523
Project: 94523
Buggy source:
protected void openStreams() throws IncomingFileTransferException {
  final String urlString=getRemoteFileURL().toString();
  try {
    httpClient.getHttpConnectionManager().getParams().setSoTimeout(DEFAULT_CONNECTION_TIMEOUT);
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
    setupAuthentication(urlString);
    setupHostAndPort(urlString);
    getMethod=new GzipGetMethod(urlString);
    getMethod.setFollowRedirects(true);
    getMethod.getParams().setParameter(CredentialsProvider.PROVIDER,new ECFCredentialsProvider());
    setRequestHeaderValues();
    final int code=httpClient.executeMethod(getMethod);
    if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {
      getResponseHeaderValues();
      setInputStream(getMethod.getResponseBodyAsUnzippedStream());
      fireReceiveStartEvent();
    }
 else     if (code == HttpURLConnection.HTTP_NOT_FOUND) {
      getMethod.releaseConnection();
      throw new FileNotFoundException(urlString);
    }
 else     if (code == HttpURLConnection.HTTP_UNAUTHORIZED || code == HttpURLConnection.HTTP_FORBIDDEN) {
      getMethod.getResponseBody();
      getMethod.releaseConnection();
      throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized);
    }
 else     if (code == HttpURLConnection.HTTP_PROXY_AUTH) {
      getMethod.releaseConnection();
      throw new LoginException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required);
    }
 else {
      getMethod.releaseConnection();
      throw new IOException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE,new Integer(code)));
    }
  }
 catch (  final Exception e) {
    throw new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT,urlString),e,getResponseCode());
  }
}

Fixed version (ground truth):
protected void openStreams() throws IncomingFileTransferException {
  final String urlString=getRemoteFileURL().toString();
  int code=-1;
  try {
    httpClient.getHttpConnectionManager().getParams().setSoTimeout(DEFAULT_CONNECTION_TIMEOUT);
    httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
    setupAuthentication(urlString);
    setupHostAndPort(urlString);
    getMethod=new GzipGetMethod(urlString);
    getMethod.setFollowRedirects(true);
    getMethod.getParams().setParameter(CredentialsProvider.PROVIDER,new ECFCredentialsProvider());
    setRequestHeaderValues();
    code=httpClient.executeMethod(getMethod);
    if (code == HttpURLConnection.HTTP_PARTIAL || code == HttpURLConnection.HTTP_OK) {
      getResponseHeaderValues();
      setInputStream(getMethod.getResponseBodyAsUnzippedStream());
      fireReceiveStartEvent();
    }
 else     if (code == HttpURLConnection.HTTP_NOT_FOUND) {
      getMethod.releaseConnection();
      throw new FileNotFoundException(urlString);
    }
 else     if (code == HttpURLConnection.HTTP_UNAUTHORIZED || code == HttpURLConnection.HTTP_FORBIDDEN) {
      getMethod.getResponseBody();
      getMethod.releaseConnection();
      throw new IncomingFileTransferException(Messages.HttpClientRetrieveFileTransfer_Unauthorized);
    }
 else     if (code == HttpURLConnection.HTTP_PROXY_AUTH) {
      getMethod.releaseConnection();
      throw new LoginException(Messages.HttpClientRetrieveFileTransfer_Proxy_Auth_Required);
    }
 else {
      getMethod.releaseConnection();
      throw new IOException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_ERROR_GENERAL_RESPONSE_CODE,new Integer(code)));
    }
  }
 catch (  final Exception e) {
    throw new IncomingFileTransferException(NLS.bind(Messages.HttpClientRetrieveFileTransfer_EXCEPTION_COULD_NOT_CONNECT,urlString),e,code);
  }
}