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