summaryrefslogtreecommitdiff
path: root/src/trg-peers-model.c
diff options
context:
space:
mode:
authorGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-08 16:12:40 +0000
committerGravatar Alan Fitton <ajf@eth0.org.uk>2011-10-08 16:12:40 +0000
commit579d63656354be1e92e0625136c46d24192d826a (patch)
tree16f864e712e28702551ed9207edd9cf546f9b2c0 /src/trg-peers-model.c
parent2666ffa57e07af60aea441257d1bb0f78368e231 (diff)
apply patch for ipv6 geoip support
Diffstat (limited to 'src/trg-peers-model.c')
-rw-r--r--src/trg-peers-model.c12
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
}