You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.1 KiB
87 lines
2.1 KiB
diff --git a/canohost.c b/canohost.c |
|
index 97ce58c..1f9320a 100644 |
|
--- a/canohost.c |
|
+++ b/canohost.c |
|
@@ -338,6 +338,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. |
|
@@ -347,17 +362,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 e636f33..451a58b 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; |
|
@@ -170,6 +171,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; |
|
} |
|
@@ -492,6 +494,7 @@ ssh_connect_direct(const char *host, struct addrinfo *aitop, |
|
|
|
/* Set the connection. */ |
|
packet_set_connection(sock, sock); |
|
+ set_remote_ipaddr(); |
|
|
|
return 0; |
|
}
|
|
|