Commits

Sebastian Sdorra committed 58debe5

fix abort during pre receive hook

Comments (0)

Files changed (1)

scm-plugins/scm-git-plugin/src/main/java/sonia/scm/web/GitReceiveHook.java

 import java.io.IOException;
 
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 
 /**
     catch (Exception ex)
     {
       logger.error("could not handle receive commands", ex);
+
+      if (type == RepositoryHookType.PRE_RECEIVE)
+      {
+        sendError(rpack, receiveCommands, ex.getMessage());
+      }
     }
   }
 
    * Method description
    *
    *
+   * @param rpack
+   * @param commands
+   * @param message
+   */
+  private void sendError(ReceivePack rpack, Iterable<ReceiveCommand> commands,
+    String message)
+  {
+    if (logger.isWarnEnabled())
+    {
+      logger.warn("abort git push request with msg: {}", message);
+    }
+
+    for (ReceiveCommand rc : commands)
+    {
+      rc.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON);
+    }
+
+    rpack.sendError(PREFIX_MSG.concat(Util.nonNull(message)));
+  }
+
+  /**
+   * Method description
+   *
+   *
    *
    * @param rpack
    * @param rc
    */
   private void sendError(ReceivePack rpack, ReceiveCommand rc, String message)
   {
+    rc.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON);
     rpack.sendError(PREFIX_MSG.concat(Util.nonNull(message)));
-    rc.setResult(ReceiveCommand.Result.REJECTED_OTHER_REASON);
   }
 
   //~--- get methods ----------------------------------------------------------
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.