Browse Source

Merge branch 'stable-3.3'

* stable-3.3:
  Prepare 3.3.2-SNAPSHOT builds
  JGit v3.3.1.201403241930-r
  Retry to call credentials provider if http authentication failed
  Ensure that ssh authentication is retried only in JGit
  [findBugs] Ensure streams are closed in a finally block
  Update com.jcraft.jsch to 0.1.50 also in pom dependencies

Change-Id: I45b48a3f2dc8c7708e9518645d72bc5645002836
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
stable-3.4
Matthias Sohn 11 years ago
parent
commit
5c1736a8d8
  1. 16
      org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java
  2. 10
      org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java
  3. 3
      org.eclipse.jgit/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java
  4. 10
      org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java

16
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/GC.java

@ -714,26 +714,27 @@ public class GC {
JGitText.get().cannotCreateIndexfile, tmpIdx.getPath())); JGitText.get().cannotCreateIndexfile, tmpIdx.getPath()));
// write the packfile // write the packfile
@SuppressWarnings("resource" /* java 7 */) FileOutputStream fos = new FileOutputStream(tmpPack);
FileChannel channel = new FileOutputStream(tmpPack).getChannel(); FileChannel channel = fos.getChannel();
OutputStream channelStream = Channels.newOutputStream(channel); OutputStream channelStream = Channels.newOutputStream(channel);
try { try {
pw.writePack(pm, pm, channelStream); pw.writePack(pm, pm, channelStream);
} finally { } finally {
channel.force(true); channel.force(true);
channelStream.close(); channelStream.close();
channel.close(); fos.close();
} }
// write the packindex // write the packindex
FileChannel idxChannel = new FileOutputStream(tmpIdx).getChannel(); fos = new FileOutputStream(tmpIdx);
FileChannel idxChannel = fos.getChannel();
OutputStream idxStream = Channels.newOutputStream(idxChannel); OutputStream idxStream = Channels.newOutputStream(idxChannel);
try { try {
pw.writeIndex(idxStream); pw.writeIndex(idxStream);
} finally { } finally {
idxChannel.force(true); idxChannel.force(true);
idxStream.close(); idxStream.close();
idxChannel.close(); fos.close();
} }
if (pw.prepareBitmapIndex(pm)) { if (pw.prepareBitmapIndex(pm)) {
@ -745,14 +746,15 @@ public class GC {
JGitText.get().cannotCreateIndexfile, JGitText.get().cannotCreateIndexfile,
tmpBitmapIdx.getPath())); tmpBitmapIdx.getPath()));
idxChannel = new FileOutputStream(tmpBitmapIdx).getChannel(); fos = new FileOutputStream(tmpBitmapIdx);
idxChannel = fos.getChannel();
idxStream = Channels.newOutputStream(idxChannel); idxStream = Channels.newOutputStream(idxChannel);
try { try {
pw.writeBitmapIndex(idxStream); pw.writeBitmapIndex(idxStream);
} finally { } finally {
idxChannel.force(true); idxChannel.force(true);
idxStream.close(); idxStream.close();
idxChannel.close(); fos.close();
} }
} }

10
org.eclipse.jgit/src/org/eclipse/jgit/notes/DefaultNoteMerger.java

@ -82,8 +82,12 @@ public class DefaultNoteMerger implements NoteMerger {
ObjectLoader lt = reader.open(theirs.getData()); ObjectLoader lt = reader.open(theirs.getData());
UnionInputStream union = new UnionInputStream(lo.openStream(), UnionInputStream union = new UnionInputStream(lo.openStream(),
lt.openStream()); lt.openStream());
ObjectId noteData = inserter.insert(Constants.OBJ_BLOB, try {
lo.getSize() + lt.getSize(), union); ObjectId noteData = inserter.insert(Constants.OBJ_BLOB,
return new Note(ours, noteData); lo.getSize() + lt.getSize(), union);
return new Note(ours, noteData);
} finally {
union.close();
}
} }
} }

3
org.eclipse.jgit/src/org/eclipse/jgit/transport/JschConfigSessionFactory.java

@ -148,6 +148,9 @@ public abstract class JschConfigSessionFactory extends SshSessionFactory {
FS fs, String user, final String pass, String host, int port, FS fs, String user, final String pass, String host, int port,
final OpenSshConfig.Host hc) throws JSchException { final OpenSshConfig.Host hc) throws JSchException {
final Session session = createSession(hc, user, host, port, fs); final Session session = createSession(hc, user, host, port, fs);
// We retry already in getSession() method. JSch must not retry
// on its own.
session.setConfig("MaxAuthTries", "1"); //$NON-NLS-1$ //$NON-NLS-2$
if (pass != null) if (pass != null)
session.setPassword(pass); session.setPassword(pass);
final String strictHostKeyCheckingPolicy = hc final String strictHostKeyCheckingPolicy = hc

10
org.eclipse.jgit/src/org/eclipse/jgit/transport/TransportHttp.java

@ -471,12 +471,14 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
if (authMethod == HttpAuthMethod.NONE) if (authMethod == HttpAuthMethod.NONE)
throw new TransportException(uri, MessageFormat.format( throw new TransportException(uri, MessageFormat.format(
JGitText.get().authenticationNotSupported, uri)); JGitText.get().authenticationNotSupported, uri));
if (1 < authAttempts CredentialsProvider credentialsProvider = getCredentialsProvider();
|| !authMethod.authorize(uri, if (3 < authAttempts
getCredentialsProvider())) { || !authMethod.authorize(uri, credentialsProvider)) {
credentialsProvider.reset(uri);
throw new TransportException(uri, throw new TransportException(uri,
JGitText.get().notAuthorized); JGitText.get().notAuthorized);
} }
credentialsProvider.reset(uri);
authAttempts++; authAttempts++;
continue; continue;
@ -504,7 +506,7 @@ public class TransportHttp extends HttpTransport implements WalkTransport,
/** /**
* Open an HTTP connection. * Open an HTTP connection.
* *
* @param method * @param method
* @param u * @param u
* @return the connection * @return the connection

Loading…
Cancel
Save