diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-10-08 16:12:40 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-10-08 16:12:40 +0000 |
commit | 579d63656354be1e92e0625136c46d24192d826a (patch) | |
tree | 16f864e712e28702551ed9207edd9cf546f9b2c0 /src/trg-peers-model.c | |
parent | 2666ffa57e07af60aea441257d1bb0f78368e231 (diff) |
apply patch for ipv6 geoip support
Diffstat (limited to 'src/trg-peers-model.c')
-rw-r--r-- | src/trg-peers-model.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/trg-peers-model.c b/src/trg-peers-model.c index 2b75ecb..4305d8c 100644 --- a/src/trg-peers-model.c +++ b/src/trg-peers-model.c @@ -46,6 +46,7 @@ typedef struct _TrgPeersModelPrivate TrgPeersModelPrivate; struct _TrgPeersModelPrivate { GeoIP *geoip; + GeoIP *geoipv6; }; #endif @@ -145,8 +146,12 @@ void trg_peers_model_update(TrgPeersModel * model, TrgTreeView *tv, address = peer_get_address(peer); #ifdef HAVE_GEOIP - if (priv->geoip && doGeoLookup) - country = GeoIP_country_name_by_addr(priv->geoip, address); + if (address && doGeoLookup) { // just in case address wasn't set + if (strchr(address,':') && priv->geoipv6) + country = GeoIP_country_name_by_addr_v6(priv->geoipv6, address); + else if (priv->geoip) + country = GeoIP_country_name_by_addr(priv->geoip, address); + } #endif gtk_list_store_set(GTK_LIST_STORE(model), &peerIter, PEERSCOL_ICON, GTK_STOCK_NETWORK, PEERSCOL_IP, address, @@ -220,6 +225,9 @@ static void trg_peers_model_init(TrgPeersModel * self) { if (g_file_test(TRG_GEOIP_DATABASE, G_FILE_TEST_EXISTS) == TRUE) priv->geoip = GeoIP_open(TRG_GEOIP_DATABASE, GEOIP_STANDARD | GEOIP_CHECK_CACHE); + if (g_file_test(TRG_GEOIPV6_DATABASE, G_FILE_TEST_EXISTS) == TRUE) + priv->geoipv6 = GeoIP_open(TRG_GEOIPV6_DATABASE, + GEOIP_STANDARD | GEOIP_CHECK_CACHE); #endif } |