| | |
| | | // Copyright (C) 2009 The Android Open Source Project |
| | | // |
| | | // Licensed under the Apache License, Version 2.0 (the "License"); |
| | | // you may not use this file except in compliance with the License. |
| | | // You may obtain a copy of the License at |
| | | // |
| | | // http://www.apache.org/licenses/LICENSE-2.0 |
| | | // |
| | | // Unless required by applicable law or agreed to in writing, software |
| | | // distributed under the License is distributed on an "AS IS" BASIS, |
| | | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | // See the License for the specific language governing permissions and |
| | | // limitations under the License. |
| | | |
| | | /* |
| | | * Copyright (C) 2009 The Android Open Source Project |
| | | * Copyright 2014 gitblit.com. |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.gitblit.transport.ssh.commands; |
| | | |
| | | import java.io.BufferedWriter; |
| | |
| | | import org.apache.sshd.server.ExitCallback; |
| | | import org.apache.sshd.server.SessionAware; |
| | | import org.apache.sshd.server.session.ServerSession; |
| | | import org.kohsuke.args4j.Argument; |
| | | import org.kohsuke.args4j.CmdLineException; |
| | | import org.kohsuke.args4j.Option; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | |
| | |
| | | } |
| | | |
| | | /** Runnable function which can throw an exception. */ |
| | | public static interface CommandRunnable { |
| | | public void run() throws Exception; |
| | | public interface CommandRunnable { |
| | | void run() throws Exception; |
| | | } |
| | | |
| | | /** Runnable function which can retrieve a project name related to the task */ |
| | | public static interface RepositoryCommandRunnable extends CommandRunnable { |
| | | public String getRepository(); |
| | | public interface RepositoryCommandRunnable extends CommandRunnable { |
| | | String getRepository(); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | private int handleError(final Throwable e) { |
| | | if ((e.getClass() == IOException.class && "Pipe closed".equals(e.getMessage())) || // |
| | | (e.getClass() == SshException.class && "Already closed".equals(e.getMessage())) || // |
| | | if ((e.getClass() == IOException.class && "Pipe closed".equals(e.getMessage())) || |
| | | (e.getClass() == SshException.class && "Already closed".equals(e.getMessage())) || |
| | | e.getClass() == InterruptedIOException.class) { |
| | | // This is sshd telling us the client just dropped off while |
| | | // we were waiting for a read or a write to complete. Either |