Program: 4252
Project: 4252
Buggy source:
/** 
 * Browses the files on the specified host and port.
 * @param host The IP of the host you want to browse.
 * @param port The port of the host you want to browse.
 * @param proxies the <tt>Set</tt> of push proxies to try
 * @param canDoFWTransfer Whether or not this guy can do a firewalltransfer.
 */
public void browseHost(String host,int port,Set proxies,boolean canDoFWTransfer){
  if (!NetworkUtils.isValidPort(port) || !NetworkUtils.isValidAddress(host)) {
    failed();
    return;
  }
  LOG.trace("String_Node_Str");
  setState(STARTED);
  int shouldPush=needsPush(host);
  LOG.trace("String_Node_Str" + shouldPush);
  boolean shouldTryPush=false;
switch (shouldPush) {
case 0:
    try {
      setState(DIRECTLY_CONNECTING);
      LOG.trace("String_Node_Str");
      Socket socket=Sockets.connect(host,port,DIRECT_CONNECT_TIME);
      LOG.trace("String_Node_Str");
      browseExchange(socket);
    }
 catch (    IOException ioe) {
      LOG.debug("String_Node_Str",ioe);
      shouldTryPush=true;
    }
  if (!shouldTryPush)   break;
case 1:
LOG.debug("String_Node_Str");
if (_serventID == null) {
LOG.debug("String_Node_Str");
failed();
}
 else {
RemoteFileDesc fakeRFD=new RemoteFileDesc(host,port,SPECIAL_INDEX,"String_Node_Str",0,_serventID.bytes(),0,false,0,false,null,null,false,true,"String_Node_Str",proxies,-1,canDoFWTransfer ? UDPConnection.VERSION : 0);
synchronized (_pushedHosts) {
  _pushedHosts.put(_serventID,new PushRequestDetails(this));
}
LOG.trace("String_Node_Str");
setState(PUSHING);
RouterService.getDownloadManager().sendPush(fakeRFD);
}
break;
}
}

Fixed version (ground truth):
/** 
 * Browses the files on the specified host and port.
 * @param host The IP of the host you want to browse.
 * @param port The port of the host you want to browse.
 * @param proxies the <tt>Set</tt> of push proxies to try
 * @param canDoFWTransfer Whether or not this guy can do a firewalltransfer.
 */
public void browseHost(String host,int port,Set<? extends IpPort> proxies,boolean canDoFWTransfer){
  if (!NetworkUtils.isValidPort(port) || !NetworkUtils.isValidAddress(host)) {
    failed();
    return;
  }
  LOG.trace("String_Node_Str");
  setState(STARTED);
  int shouldPush=needsPush(host);
  LOG.trace("String_Node_Str" + shouldPush);
  boolean shouldTryPush=false;
switch (shouldPush) {
case 0:
    try {
      setState(DIRECTLY_CONNECTING);
      LOG.trace("String_Node_Str");
      Socket socket=Sockets.connect(host,port,DIRECT_CONNECT_TIME);
      LOG.trace("String_Node_Str");
      browseExchange(socket);
    }
 catch (    IOException ioe) {
      LOG.debug("String_Node_Str",ioe);
      shouldTryPush=true;
    }
  if (!shouldTryPush)   break;
case 1:
LOG.debug("String_Node_Str");
if (_serventID == null) {
LOG.debug("String_Node_Str");
failed();
}
 else {
RemoteFileDesc fakeRFD=new RemoteFileDesc(host,port,SPECIAL_INDEX,"String_Node_Str",0,_serventID.bytes(),0,false,0,false,null,null,false,true,"String_Node_Str",proxies,-1,canDoFWTransfer ? UDPConnection.VERSION : 0);
synchronized (_pushedHosts) {
  _pushedHosts.put(_serventID,new PushRequestDetails(this));
}
LOG.trace("String_Node_Str");
setState(PUSHING);
RouterService.getDownloadManager().sendPush(fakeRFD);
}
break;
}
}