ssh - Connection closed by UNKNOWN

Damien Miller djm at mindrot.org
Fri Jul 18 10:01:21 EST 2014


Could you make a bug at https://bugzilla.mindrot.org and attach your patch
there? This ensures that it won't get lost.

-d

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