code: public synchronized void passiveConnect(DataSink sink,
                                              TransferContext context,
                                              int connections,
                                              ServerSocket serverSocket)
          throws ServerException {
  
          // things would get messed up if more than 1 file was transfered
          // simultaneously with the same transfer manager
          if (transferThreadCount != 0) {
              throw new ServerException(
                              ServerException.PREVIOUS_TRANSFER_ACTIVE);
          }
  
          for (int i = 0; i < connections; i++) {
              Task task =
                  new GridFTPPassiveConnectTask(
                                  serverSocket,
                                  sink,
                                  localControlChannel,
                                  gSession,
                                  dataChannelFactory,
                                  (EBlockParallelTransferContext) context);
  
              runTask(task);
          }
      }
docs: Accept connections from the remote server,
  and start transfer threads that will read incoming data and store
  in the sink.
  
  @param connections the number of expected connections