aboutsummaryrefslogtreecommitdiffstats
path: root/irc.c
diff options
context:
space:
mode:
authorWilmer van der Gaast <wilmer@gaast.net>2006-01-04 12:16:58 +0100
committerWilmer van der Gaast <wilmer@gaast.net>2006-01-04 12:16:58 +0100
commit2a6ca4f4d8c8ec86b8bb38442189c85a001a5f6c (patch)
treee729b90180c52018171acc5947b9ea18cb9bb479 /irc.c
parent13c4cd343f661fae01660fa8b889c9dfac4a36ef (diff)
Better handling of IPv4 connections in IPv6 mode. (Wrapping/Unwrapping of ::ffff:style addresses.)
Diffstat (limited to 'irc.c')
-rw-r--r--irc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/irc.c b/irc.c
index 9cba7f6e..8842ec41 100644
--- a/irc.c
+++ b/irc.c
@@ -82,7 +82,7 @@ irc_t *irc_new( int fd )
if( ( peer = gethostbyaddr( (char*) &sock->sin6_addr, sizeof( sock->sin6_addr ), AF_INETx ) ) )
irc->myhost = g_strdup( peer->h_name );
else if( inet_ntop( AF_INETx, &sock->sin6_addr, buf, sizeof( buf ) - 1 ) != NULL )
- irc->myhost = g_strdup( buf );
+ irc->myhost = g_strdup( ipv6_unwrap( buf ) );
}
#else
else if( getsockname( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin_family == AF_INETx )
@@ -101,7 +101,7 @@ irc_t *irc_new( int fd )
if( ( peer = gethostbyaddr( (char*) &sock->sin6_addr, sizeof( sock->sin6_addr ), AF_INETx ) ) )
irc->host = g_strdup( peer->h_name );
else if( inet_ntop( AF_INETx, &sock->sin6_addr, buf, sizeof( buf ) - 1 ) != NULL )
- irc->host = g_strdup( buf );
+ irc->host = g_strdup( ipv6_unwrap( buf ) );
}
#else
if( getpeername( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin_family == AF_INETx )
@@ -113,6 +113,7 @@ irc_t *irc_new( int fd )
}
#endif
+ /* Rare, but possible. */
if( !irc->host ) irc->host = g_strdup( "localhost." );
if( !irc->myhost ) irc->myhost = g_strdup( "localhost." );