Browse Source

UploadPack: Avoid calling AdvertiseRefsHook twice

The AdvertiseRefsHook can be called twice if the following conditions
hold:

 1. This AdvertiseRefsHook doesn't set this.refs.
 2. getAdvertisedOrDefaultRefs is called after getFilteredRefs.

For example, this can happen when fetchV2 is called after lsRefsV2
when using a stateful bidirectional transport.

The second call does not accomplish anything useful.  Guard it with
'if (!advertiseRefsHookCalled)' to avoid wasted work.

Reported-by: Jonathan Tan <jonathantanmy@google.com>
Change-Id: Ib746582e4ef645b767a5b3fb969596df99ac2ab5
Signed-off-by: Jonathan Nieder <jrn@google.com>
stable-5.0
Jonathan Nieder 6 years ago
parent
commit
c961e2d773
  1. 6
      org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

6
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java

@ -790,8 +790,10 @@ public class UploadPack {
return refs;
}
advertiseRefsHook.advertiseRefs(this);
advertiseRefsHookCalled = true;
if (!advertiseRefsHookCalled) {
advertiseRefsHook.advertiseRefs(this);
advertiseRefsHookCalled = true;
}
if (refs == null) {
// Fall back to all refs.
setAdvertisedRefs(

Loading…
Cancel
Save