This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Sshd: problem with X11 passthru

On Mar 28 23:24, David Picton wrote:
> >    * From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
> >    * To: cygwin at cygwin dot com
> >    * Date: Tue, 28 Mar 2006 12:29:40 +0200
> >
> >On Mar 28 10:17, David Picton wrote:
> > >From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
> > >On Mar 27 18:55, David Picton wrote:
> > >> I have encountered a problem with the sshd server when the client
> > >> specifies X11 passthru i.e. ssh -Y or ssh -X.
> > >>
> [snip original bug report]
> >> Apologies for not making it clear that I was talking about the Cygwin
> >> port of sshd.
> >> The bug seems to be specific to the Cygwin version and I've not
> seen it on other
> >> systems.
> >
> >Well, the problem is this.  I just tried it and I can't reproduce it.
> >Each session gets another display number, starting at 10, as expected.
> >Maybe this is somehow due to a sshd_config setting which uncovers a
> >sshd problem?  I don't see how this should be related to Cygwin.  I still
> >think this should be a question for a ssh mailing list.
> >
> >Corinna
> For the record, I'd like to say how I resolved the problem - if I can
> be permitted just one more post on the subject ...
> I reproduced the bug when I tried installing the current version of
> sshd on a second XP machine - DISPLAY=:10.0 every time. (The
> sshd_config was exactly as created by ssh-host-config - except for one
> change to permit X11 passthru.)
> Then I tried reverting to an older version of sshd.exe (dated
> September 2005) and hey presto - the bug was magicked away.  So I'm
> using that version now.

Urgh.  I found the problem.  I tested with the latest snapshot, not
with 1.5.19, so this didn't happen to me.  As soon as I switched to
1.5.19 I could reproduce.  Sorry about that.

The low level cause of this problem is a bug in SO_REUSEADDR handling in
WinSock.  Per standards, we must not be able to reuse a complete
duplicate of a local TCP address (same IP, same port), even if
SO_REUSEADDR has been set.  That's unfortunately possible in WinSock.

The higher level cause is that OpenSSH 4.3, in contrast to 4.2, uses
SO_REUSEADDR on the X11 ports to (quote from the ChangeLog):

  "prevent[...] bind() failure when a previous connection's listeners
   are in TIME_WAIT."

The reason that I don't see this problem in the current developer
snapshots is the fact that I added code to post-1.5.19 Cygwin to
circumvent the above mentioned SO_REUSEADDR bug in WinSock.  So, with a
developer snapshot, Cygwin goes through the list of current connections,
finds that the port is in use and refrains from calling bind() on that
port. The result is that sshd tries the next port and the behaviour
is again as it is correct and as it was with OpenSSH 4.2.

I will upload a new version of OpenSSH 4.3p2 which does not set
SO_REUSEADDR on the the X11 forwarding listener sockets.  This will
solve the problem for 1.5.19.

Thanks for the report,

Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader          cygwin AT cygwin DOT com
Red Hat

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]