diff options
Diffstat (limited to 'src/transport/gnunet-service-transport_validation.c')
-rw-r--r-- | src/transport/gnunet-service-transport_validation.c | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c index fb2791eba..746a99f9f 100644 --- a/src/transport/gnunet-service-transport_validation.c +++ b/src/transport/gnunet-service-transport_validation.c | |||
@@ -450,7 +450,7 @@ cleanup_validation_entry (void *cls, | |||
450 | validations_running, | 450 | validations_running, |
451 | GNUNET_NO); | 451 | GNUNET_NO); |
452 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 452 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
453 | "Validation finished, %u validation processes running\n", | 453 | "Validation aborted, %u validation processes running\n", |
454 | validations_running); | 454 | validations_running); |
455 | } | 455 | } |
456 | GNUNET_free (ve); | 456 | GNUNET_free (ve); |
@@ -830,7 +830,7 @@ add_valid_address (void *cls, | |||
830 | if (GNUNET_YES != ve->known_to_ats) | 830 | if (GNUNET_YES != ve->known_to_ats) |
831 | { | 831 | { |
832 | ve->known_to_ats = GNUNET_YES; | 832 | ve->known_to_ats = GNUNET_YES; |
833 | GST_ats_add_address (address, NULL, &ats, 1); | 833 | GST_ats_add_address (address, &ats, 1); |
834 | } | 834 | } |
835 | return GNUNET_OK; | 835 | return GNUNET_OK; |
836 | } | 836 | } |
@@ -1230,6 +1230,35 @@ GST_validation_handle_ping (const struct GNUNET_PeerIdentity *sender, | |||
1230 | 1230 | ||
1231 | 1231 | ||
1232 | /** | 1232 | /** |
1233 | * Validate an individual address. | ||
1234 | * | ||
1235 | * @param address address we should try to validate | ||
1236 | */ | ||
1237 | void | ||
1238 | GST_validation_handle_address (const struct GNUNET_HELLO_Address *address) | ||
1239 | { | ||
1240 | struct GNUNET_TRANSPORT_PluginFunctions *papi; | ||
1241 | struct ValidationEntry *ve; | ||
1242 | |||
1243 | papi = GST_plugins_find (address->transport_name); | ||
1244 | if (NULL == papi) | ||
1245 | { | ||
1246 | /* This plugin is currently unvailable ... ignore */ | ||
1247 | return; | ||
1248 | } | ||
1249 | ve = find_validation_entry (address); | ||
1250 | if (NULL == ve->revalidation_task) | ||
1251 | { | ||
1252 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1253 | "Validation process started for fresh address `%s' of %s\n", | ||
1254 | GST_plugins_a2s (ve->address), | ||
1255 | GNUNET_i2s (&ve->address->peer)); | ||
1256 | ve->revalidation_task = GNUNET_SCHEDULER_add_now (&revalidate_address, ve); | ||
1257 | } | ||
1258 | } | ||
1259 | |||
1260 | |||
1261 | /** | ||
1233 | * Iterator callback to go over all addresses and try to validate them | 1262 | * Iterator callback to go over all addresses and try to validate them |
1234 | * (unless blocked or already validated). | 1263 | * (unless blocked or already validated). |
1235 | * | 1264 | * |
@@ -1243,29 +1272,13 @@ validate_address_iterator (void *cls, | |||
1243 | const struct GNUNET_HELLO_Address *address, | 1272 | const struct GNUNET_HELLO_Address *address, |
1244 | struct GNUNET_TIME_Absolute expiration) | 1273 | struct GNUNET_TIME_Absolute expiration) |
1245 | { | 1274 | { |
1246 | struct GNUNET_TRANSPORT_PluginFunctions * papi; | ||
1247 | struct ValidationEntry *ve; | ||
1248 | |||
1249 | if (0 == GNUNET_TIME_absolute_get_remaining (expiration).rel_value_us) | 1275 | if (0 == GNUNET_TIME_absolute_get_remaining (expiration).rel_value_us) |
1250 | { | 1276 | { |
1251 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1277 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1252 | "Skipping expired address from HELLO\n"); | 1278 | "Skipping expired address from HELLO\n"); |
1253 | return GNUNET_OK; /* expired */ | 1279 | return GNUNET_OK; /* expired */ |
1254 | } | 1280 | } |
1255 | papi = GST_plugins_find (address->transport_name); | 1281 | GST_validation_handle_address (address); |
1256 | if (NULL == papi) | ||
1257 | { | ||
1258 | /* This plugin is currently unvailable ... ignore */ | ||
1259 | return GNUNET_OK; | ||
1260 | } | ||
1261 | ve = find_validation_entry (address); | ||
1262 | if (NULL == ve->revalidation_task) | ||
1263 | { | ||
1264 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
1265 | "Validation process started for fresh address `%s'\n", | ||
1266 | GST_plugins_a2s (ve->address)); | ||
1267 | ve->revalidation_task = GNUNET_SCHEDULER_add_now (&revalidate_address, ve); | ||
1268 | } | ||
1269 | return GNUNET_OK; | 1282 | return GNUNET_OK; |
1270 | } | 1283 | } |
1271 | 1284 | ||
@@ -1457,7 +1470,7 @@ GST_validation_handle_pong (const struct GNUNET_PeerIdentity *sender, | |||
1457 | else | 1470 | else |
1458 | { | 1471 | { |
1459 | ve->known_to_ats = GNUNET_YES; | 1472 | ve->known_to_ats = GNUNET_YES; |
1460 | GST_ats_add_address (ve->address, NULL, ats, 2); | 1473 | GST_ats_add_address (ve->address, ats, 2); |
1461 | } | 1474 | } |
1462 | } | 1475 | } |
1463 | if (validations_running > 0) | 1476 | if (validations_running > 0) |