credentials = SVNUtil.nextCredentials(provider, repository.getLocation(), e.getMessage());
credentials = SVNUtil.nextCredentials(provider, repository.getLocation(), realm);
    public void open(SVNRepositoryImpl repository) throws SVNException {        ISVNCredentialsProvider provider = repository.getCredentialsProvider();        if (provider == null) {            throw new SVNException("Credentials provider is required for SSH connection");        }        provider.reset();        ISVNCredentials credentials = SVNUtil.nextCredentials(provider, repository.getLocation(), null);        SVNAuthenticationException lastException = null;        Session session = null;                while (credentials != null) {            try {            	session = SVNJSchSession.getSession(repository.getLocation(), credentials);            	if (session != null && !session.isConnected()) {            		session = null;            		continue;            	}                provider.accepted(credentials);                lastException = null;                break;            } catch (SVNAuthenticationException e) {            	if (session != null && session.isConnected()) {            		DebugLog.log("DISCONNECTING: " + session);            		session.disconnect();            		session = null;            	}                lastException = e;                credentials = SVNUtil.nextCredentials(provider, repository.getLocation(), e.getMessage());            }        }        if (lastException != null || session == null) {            if (lastException != null) {                throw lastException;            }            throw new SVNAuthenticationException("Can't establish SSH connection without credentials");        }        repository.setCredentials(credentials);        try {            int retry = 1;            while(true) {	            myChannel = (ChannelExec) session.openChannel(CHANNEL_TYPE);	            String command = SVNSERVE_COMMAND;	            myChannel.setCommand(command);	            	            myOutputStream = myChannel.getOutputStream();	            myInputStream = myChannel.getInputStream();		            DebugLog.log("JSCH command: " + command);            	try {		            myChannel.connect();            	} catch (JSchException e) {            		retry--;            		if (retry < 0) {            			throw new SVNException(e);            		}            		if (session.isConnected()) {            			session.disconnect();            		}            		continue;            	}	            break;            }        } catch (Throwable e) {        	close();        	if (session.isConnected()) {        		session.disconnect();        	}            throw new SVNException(e);        }        		myInputStream = new FilterInputStream(myInputStream) {			public void close() throws IOException {			}		};		myOutputStream = new FilterOutputStream(myOutputStream) {			public void close() throws IOException {			}		};    }