Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
linux 2.6.15-1.2054_FC5
client ssh: OpenSSH_4.3p2, OpenSSL 0.9.8a 11 Oct 2005
server in the middle ssh:OpenSSH_4.2, OpenSSL 0.9.7d 17 Mar 2004
Description
I use my laptop to work at the office and at home. The office has a repository for inhouse developed projects.
ssh channles are used to connect with the office repository from home.
I configured ssh using with a ProcyCommand to tunnel to the subversion respository.
I configured mvn using a home specific settings.xml to use scp-external-ssh as the standard ssh wagon cannot handle the ProxyCommand.
This fails when external 3rd party artifacts and plugins are checked in the company repositories.
Since they are located in the ibiblio central repository the scp command fails.
This is normally not a problem because the Wagons check if the output of the copy command is "No such file or directory".
If so, the artifact is searched in another repository.
With the introduction of the ProxyCommand this mechanism does not work any more.
ProxyCommand prints "Killed by signal 1" to stderr when the scp command fails.
See also http://lists.debian.org/debian-ssh/2005/06/msg00074.html for the ssh bug.
The problem is that both wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/ScpWagon.java (revision 388735)
and wagon-providers/wagon-ssh-external/src/main/java/org/apache/maven/wagon/providers/sshext/ScpExternalWagon.java (revision 388735)
use stderr.endsWith("No such file or directory") while stderr in my case ends with "Killed by sgnal 1."
The problem can be fixed by using indexOf( "No such file or directory") != -1 instead of the endsWith() call.
I've implemented this fix and verified that the problem did not occur. The patch is attached.