ssh - Connection closed by UNKNOWN

Petr Lautrbach plautrba at redhat.com
Fri Jul 18 14:36:54 EST 2014


On Fri, Jul 18, 2014 at 10:01:21AM +1000, Damien Miller wrote:
> Could you make a bug at https://bugzilla.mindrot.org and attach your patch
> there? This ensures that it won't get lost.
> 

Sure - https://bugzilla.mindrot.org/show_bug.cgi?id=2257

> 
> On Thu, 17 Jul 2014, Petr Lautrbach wrote:
> 
> > On Wed, Jul 16, 2014 at 04:04:04PM +0200, Petr Lautrbach wrote:
> > > or there could be set_remote_ipaddr() in canonhost.c for that.
> > > 
> > 
> > 
> > --- a/canohost.c
> > +++ b/canohost.c
> > @@ -321,6 +321,21 @@ clear_cached_addr(void)
> >  	cached_port = -1;
> >  }
> >  
> > +void set_remote_ipaddr(void) {
> > +	if (canonical_host_ip != NULL)
> > +		free(canonical_host_ip);
> > +
> > +	if (packet_connection_is_on_socket()) {
> > +		canonical_host_ip =
> > +		    get_peer_ipaddr(packet_get_connection_in());
> > +		if (canonical_host_ip == NULL)
> > +			cleanup_exit(255);
> > +	} else {
> > +		/* If not on socket, return UNKNOWN. */
> > +		canonical_host_ip = xstrdup("UNKNOWN");
> > +	}
> > +}
> > +
> >  /*
> >   * Returns the IP-address of the remote host as a string.  The returned
> >   * string must not be freed.
> > @@ -330,17 +345,9 @@ const char *
> >  get_remote_ipaddr(void)
> >  {
> >  	/* Check whether we have cached the ipaddr. */
> > -	if (canonical_host_ip == NULL) {
> > -		if (packet_connection_is_on_socket()) {
> > -			canonical_host_ip =
> > -			    get_peer_ipaddr(packet_get_connection_in());
> > -			if (canonical_host_ip == NULL)
> > -				cleanup_exit(255);
> > -		} else {
> > -			/* If not on socket, return UNKNOWN. */
> > -			canonical_host_ip = xstrdup("UNKNOWN");
> > -		}
> > -	}
> > +	if (canonical_host_ip == NULL)
> > +		set_remote_ipaddr();
> > +
> >  	return canonical_host_ip;
> >  }
> >  
> > diff --git a/canohost.h b/canohost.h
> > index 4c8636f..4079953 100644
> > --- a/canohost.h
> > +++ b/canohost.h
> > @@ -13,6 +13,7 @@
> >   */
> >  
> >  const char	*get_canonical_hostname(int);
> > +void		 set_remote_ipaddr(void);
> >  const char	*get_remote_ipaddr(void);
> >  const char	*get_remote_name_or_ip(u_int, int);
> >  
> > diff --git a/sshconnect.c b/sshconnect.c
> > index 799c8d0..08886ac 100644
> > --- a/sshconnect.c
> > +++ b/sshconnect.c
> > @@ -62,6 +62,7 @@
> >  #include "monitor_fdpass.h"
> >  #include "ssh2.h"
> >  #include "version.h"
> > +#include "canohost.h"
> >  
> >  char *client_version_string = NULL;
> >  char *server_version_string = NULL;
> > @@ -171,6 +172,7 @@ ssh_proxy_fdpass_connect(const char *host, u_short port,
> >  
> >  	/* Set the connection file descriptors. */
> >  	packet_set_connection(sock, sock);
> > +	set_remote_ipaddr();
> >  
> >  	return 0;
> >  }
> > @@ -493,6 +495,7 @@ ssh_connect_direct(const char *host, struct addrinfo *aitop,
> >  
> >  	/* Set the connection. */
> >  	packet_set_connection(sock, sock);
> > +	set_remote_ipaddr();
> >  
> >  	return 0;
> >  }
> > _______________________________________________
> > openssh-unix-dev mailing list
> > openssh-unix-dev at mindrot.org
> > https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev
> > 



More information about the openssh-unix-dev mailing list