aboutsummaryrefslogtreecommitdiff
path: root/src/gns
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2013-12-20 14:54:23 +0000
committerChristian Grothoff <christian@grothoff.org>2013-12-20 14:54:23 +0000
commita0a09022f0d0df917465b8e71753a69f066058d3 (patch)
tree83deac8d2675eb6709baa6cbb5bec0e964da7dc5 /src/gns
parentc8b0a68ec9cbe6bc4f525b1e8c24bb1c0bb3485d (diff)
downloadgnunet-a0a09022f0d0df917465b8e71753a69f066058d3.tar.gz
gnunet-a0a09022f0d0df917465b8e71753a69f066058d3.zip
-fix VPN resolution to A/AAAA records
Diffstat (limited to 'src/gns')
-rw-r--r--src/gns/gnunet-service-gns_resolver.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/gns/gnunet-service-gns_resolver.c b/src/gns/gnunet-service-gns_resolver.c
index ede81b49d..14e714a85 100644
--- a/src/gns/gnunet-service-gns_resolver.c
+++ b/src/gns/gnunet-service-gns_resolver.c
@@ -1396,7 +1396,7 @@ handle_gns_resolution_result (void *cls,
1396 case GNUNET_GNSRECORD_TYPE_VPN: 1396 case GNUNET_GNSRECORD_TYPE_VPN:
1397 { 1397 {
1398 af = (GNUNET_DNSPARSER_TYPE_A == rh->record_type) ? AF_INET : AF_INET6; 1398 af = (GNUNET_DNSPARSER_TYPE_A == rh->record_type) ? AF_INET : AF_INET6;
1399 if (sizeof (struct GNUNET_TUN_GnsVpnRecord) < 1399 if (sizeof (struct GNUNET_TUN_GnsVpnRecord) >
1400 rd[i].data_size) 1400 rd[i].data_size)
1401 { 1401 {
1402 GNUNET_break_op (0); 1402 GNUNET_break_op (0);
@@ -1416,16 +1416,24 @@ handle_gns_resolution_result (void *cls,
1416 GNUNET_CRYPTO_hash (vname, 1416 GNUNET_CRYPTO_hash (vname,
1417 strlen (vname), // FIXME: +1? 1417 strlen (vname), // FIXME: +1?
1418 &vhash); 1418 &vhash);
1419 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1420 "Attempting VPN allocation for %s-%s (AF: %d, proto %d)\n",
1421 GNUNET_i2s (&vpn->peer),
1422 vname,
1423 (int) af,
1424 (int) ntohs (vpn->proto));
1419 vpn_ctx = GNUNET_new (struct VpnContext); 1425 vpn_ctx = GNUNET_new (struct VpnContext);
1420 rh->vpn_ctx = vpn_ctx; 1426 rh->vpn_ctx = vpn_ctx;
1421 vpn_ctx->rh = rh; 1427 vpn_ctx->rh = rh;
1422 vpn_ctx->rd_data_size = GNUNET_GNSRECORD_records_get_size (rd_count, 1428 vpn_ctx->rd_data_size = GNUNET_GNSRECORD_records_get_size (rd_count,
1423 rd); 1429 rd);
1424 vpn_ctx->rd_data = GNUNET_malloc (vpn_ctx->rd_data_size); 1430 vpn_ctx->rd_data = GNUNET_malloc (vpn_ctx->rd_data_size);
1425 (void) GNUNET_GNSRECORD_records_serialize (rd_count, 1431 vpn_ctx->rd_count = rd_count;
1426 rd, 1432 GNUNET_assert (vpn_ctx->rd_data_size ==
1427 vpn_ctx->rd_data_size, 1433 GNUNET_GNSRECORD_records_serialize (rd_count,
1428 vpn_ctx->rd_data); 1434 rd,
1435 vpn_ctx->rd_data_size,
1436 vpn_ctx->rd_data));
1429 vpn_ctx->vpn_request = GNUNET_VPN_redirect_to_peer (vpn_handle, 1437 vpn_ctx->vpn_request = GNUNET_VPN_redirect_to_peer (vpn_handle,
1430 af, 1438 af,
1431 ntohs (vpn->proto), 1439 ntohs (vpn->proto),
@@ -1433,7 +1441,7 @@ handle_gns_resolution_result (void *cls,
1433 &vhash, 1441 &vhash,
1434 GNUNET_TIME_relative_to_absolute (VPN_TIMEOUT), 1442 GNUNET_TIME_relative_to_absolute (VPN_TIMEOUT),
1435 &vpn_allocation_cb, 1443 &vpn_allocation_cb,
1436 rh); 1444 vpn_ctx);
1437 return; 1445 return;
1438 } 1446 }
1439 case GNUNET_GNSRECORD_TYPE_GNS2DNS: 1447 case GNUNET_GNSRECORD_TYPE_GNS2DNS: