version 1.64, 2009/02/12 03:00:56 |
version 1.65, 2009/05/27 06:31:25 |
|
|
#include "misc.h" |
#include "misc.h" |
|
|
static void check_ip_options(int, char *); |
static void check_ip_options(int, char *); |
|
static char *canonical_host_ip = NULL; |
|
static int cached_port = -1; |
|
|
/* |
/* |
* Return the canonical name of the host at the other end of the socket. The |
* Return the canonical name of the host at the other end of the socket. The |
|
|
return get_socket_address(sock, 0, NI_NAMEREQD); |
return get_socket_address(sock, 0, NI_NAMEREQD); |
} |
} |
|
|
|
void |
|
clear_cached_addr(void) |
|
{ |
|
if (canonical_host_ip != NULL) { |
|
xfree(canonical_host_ip); |
|
canonical_host_ip = NULL; |
|
} |
|
cached_port = -1; |
|
} |
|
|
/* |
/* |
* Returns the IP-address of the remote host as a string. The returned |
* Returns the IP-address of the remote host as a string. The returned |
* string must not be freed. |
* string must not be freed. |
|
|
const char * |
const char * |
get_remote_ipaddr(void) |
get_remote_ipaddr(void) |
{ |
{ |
static char *canonical_host_ip = NULL; |
|
|
|
/* Check whether we have cached the ipaddr. */ |
/* Check whether we have cached the ipaddr. */ |
if (canonical_host_ip == NULL) { |
if (canonical_host_ip == NULL) { |
if (packet_connection_is_on_socket()) { |
if (packet_connection_is_on_socket()) { |
|
|
int |
int |
get_remote_port(void) |
get_remote_port(void) |
{ |
{ |
static int port = -1; |
|
|
|
/* Cache to avoid getpeername() on a dead connection */ |
/* Cache to avoid getpeername() on a dead connection */ |
if (port == -1) |
if (cached_port == -1) |
port = get_port(0); |
cached_port = get_port(0); |
|
|
return port; |
return cached_port; |
} |
} |
|
|
int |
int |