Ping.

Janus, would this make you happy?
Do you think this fix should go in?

Stefan

On Wed, Mar 03, 2010 at 05:08:41PM +0100, Stefan Sperling wrote:
> On Wed, Mar 03, 2010 at 04:06:08PM +0100, Janus Weil wrote:
> > Dear subversion team,
> > 
> > I noticed that recent svn releases fail to display many error messages.
> > 
> > Example: Doing "svn co svn+ssh://some...@gcc.gnu.org/svn/gcc/trunk
> > trunk" without having the proper ssh keys for user 'someone'. The svn
> > versions I tried were 1.6.3, 1.6.5 and 1.6.9. With 1.6.3 I get:
> > 
> > Permission denied (publickey,gssapi-with-mic).
> > svn: Network connection closed unexpectedly
> > 
> > But if I do the same with 1.6.5 or 1.6.9, the first line is missing
> > and I only get the rather nebulous message about the unexpected
> > closing of the network connection, without seeing the reason for that.
> > 
> > It's even worse if e.g. my private key has the wrong permissions for
> > some reason. In this case svn 1.6.3 displays a very bold warning:
> > 
> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> > @         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
> > @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
> > Permissions 0755 for '~/.ssh/id_dsa' are too open.
> > It is recommended that your private key files are NOT accessible by others.
> > This private key will be ignored.
> > bad permissions: ignore key: ~/.ssh/id_dsa
> > Permission denied (publickey,gssapi-with-mic).
> > svn: Network connection closed unexpectedly
> > 
> > Again, with newer releases one only gets the last line, without any
> > chance of finding out what the problem is.
> > 
> > Is this a known bug?
> 
> This is probably a side-effect of the fix for issue #2580 done in
> Subversion 1.6.5. Since then, Subversion passes '-q' to ssh to avoid
> the message 'Terminated by signal 15' being printed whenever ssh exists
> upon being terminated by Subversion in a friendly manner.
> This particular output from ssh would confuse users assuming the output
> came from svn, and make them believe svn had crashed. Of course, '-q'
> might also suppress some other messages printed by ssh, such as the
> "unprotected key file" warning.
> 
> I guess we should make the error message for svn+ssh connection failures
> advise people to remove the '-q' flag from the ssh invocation in
> ~/.subversion/config to debug SSH connection problems.
> The patch below does this:
> 
>   $ svn ls svn+ssh://svntest/ 
>   svn: Unable to connect to a repository at URL 'svn+ssh://svntest'
>   svn: To better debug SSH connection problems, remove the -q option from 
> 'ssh' in the [tunnels] section of your Subversion configuration file.
>   svn: Network connection closed unexpectedly
> 
> (Above, 'svntest' is an SSH host alias to localhost with a port where nothing
> is listening.)
> 
> Do you think this would help?
> 
> Stefan
> 
> 
> Index: subversion/libsvn_ra_svn/client.c
> ===================================================================
> --- subversion/libsvn_ra_svn/client.c (revision 918491)
> +++ subversion/libsvn_ra_svn/client.c (working copy)
> @@ -463,6 +463,7 @@ static svn_error_t *make_tunnel(const char **args,
>    apr_status_t status;
>    apr_proc_t *proc;
>    apr_procattr_t *attr;
> +  svn_error_t *err;
>  
>    status = apr_procattr_create(&attr, pool);
>    if (status == APR_SUCCESS)
> @@ -516,7 +517,15 @@ static svn_error_t *make_tunnel(const char **args,
>  
>    /* Guard against dotfile output to stdout on the server. */
>    *conn = svn_ra_svn_create_conn(NULL, proc->out, proc->in, pool);
> -  SVN_ERR(svn_ra_svn_skip_leading_garbage(*conn, pool));
> +  err = svn_ra_svn_skip_leading_garbage(*conn, pool);
> +
> +  if (err)
> +    return svn_error_quick_wrap(
> +             err,
> +             _("To better debug SSH connection problems, remove the -q "
> +               "option from 'ssh' in the [tunnels] section of your "
> +               "Subversion configuration file."));
> +
>    return SVN_NO_ERROR;
>  }
>  

Reply via email to