diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-08-06 19:09:40 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-08-06 19:09:40 +0000 |
commit | f2ee6482821a0948e2ceb1d73758dc269eab9a6c (patch) | |
tree | 73317cf6550e3f2f9efad4006f511ae484ab5a01 /src/transport/gnunet-service-transport_validation.c | |
parent | aad2f0838ef0586366fe4e3921013b7af6a4ea65 (diff) | |
download | gnunet-f2ee6482821a0948e2ceb1d73758dc269eab9a6c.tar.gz gnunet-f2ee6482821a0948e2ceb1d73758dc269eab9a6c.zip |
send target address with PING
Diffstat (limited to 'src/transport/gnunet-service-transport_validation.c')
-rw-r--r-- | src/transport/gnunet-service-transport_validation.c | 62 |
1 files changed, 40 insertions, 22 deletions
diff --git a/src/transport/gnunet-service-transport_validation.c b/src/transport/gnunet-service-transport_validation.c index 9a8bf0b47..9583fc1a7 100644 --- a/src/transport/gnunet-service-transport_validation.c +++ b/src/transport/gnunet-service-transport_validation.c | |||
@@ -538,7 +538,9 @@ validate_address (void *cls, | |||
538 | struct TransportPingMessage ping; | 538 | struct TransportPingMessage ping; |
539 | struct GNUNET_TRANSPORT_PluginFunctions *papi; | 539 | struct GNUNET_TRANSPORT_PluginFunctions *papi; |
540 | ssize_t ret; | 540 | ssize_t ret; |
541 | 541 | size_t tsize; | |
542 | size_t slen; | ||
543 | |||
542 | if (GNUNET_TIME_absolute_get_remaining (expiration).rel_value == 0) | 544 | if (GNUNET_TIME_absolute_get_remaining (expiration).rel_value == 0) |
543 | return GNUNET_OK; /* expired */ | 545 | return GNUNET_OK; /* expired */ |
544 | ve = find_validation_entry (pid, tname, addr, addrlen); | 546 | ve = find_validation_entry (pid, tname, addr, addrlen); |
@@ -547,32 +549,48 @@ validate_address (void *cls, | |||
547 | if (GNUNET_TIME_absolute_get_remaining (ve->valid_until).rel_value > 0) | 549 | if (GNUNET_TIME_absolute_get_remaining (ve->valid_until).rel_value > 0) |
548 | return GNUNET_OK; /* valid */ | 550 | return GNUNET_OK; /* valid */ |
549 | ve->validation_block = GNUNET_TIME_relative_to_absolute (MAX_REVALIDATION_FREQUENCY); | 551 | ve->validation_block = GNUNET_TIME_relative_to_absolute (MAX_REVALIDATION_FREQUENCY); |
550 | 552 | ||
553 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
554 | "Transmitting plain PING to `%s'\n", | ||
555 | GNUNET_i2s (pid)); | ||
551 | ping.header.size = htons(sizeof(struct TransportPingMessage)); | 556 | ping.header.size = htons(sizeof(struct TransportPingMessage)); |
552 | ping.header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_PING); | 557 | ping.header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_PING); |
553 | ping.challenge = htonl(ve->challenge); | 558 | ping.challenge = htonl(ve->challenge); |
554 | ping.target = *pid; | 559 | ping.target = *pid; |
555 | GNUNET_STATISTICS_update (GST_stats, | 560 | |
556 | gettext_noop ("# PING without HELLO messages sent"), | 561 | slen = strlen(ve->transport_name) + 1; |
557 | 1, | 562 | tsize = sizeof(struct TransportPingMessage) + ve->addrlen + slen; |
558 | GNUNET_NO); | 563 | { |
559 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 564 | char message_buf[tsize]; |
560 | "Transmitting plain PING to `%s'\n", | 565 | |
561 | GNUNET_i2s (pid)); | 566 | memcpy(message_buf, &ping, sizeof (struct TransportPingMessage)); |
562 | papi = GST_plugins_find (ve->transport_name); | 567 | memcpy(&message_buf[sizeof (struct TransportPingMessage)], |
563 | ret = papi->send (papi->cls, | 568 | ve->transport_name, |
564 | pid, | 569 | slen); |
565 | (const char*) &ping, | 570 | memcpy(&message_buf[sizeof (struct TransportPingMessage) + slen], |
566 | sizeof (struct TransportPingMessage), | 571 | ve->addr, |
567 | PING_PRIORITY, | 572 | ve->addrlen); |
568 | HELLO_VERIFICATION_TIMEOUT, | 573 | papi = GST_plugins_find (ve->transport_name); |
569 | NULL /* no session */, | 574 | ret = papi->send (papi->cls, |
570 | ve->addr, | 575 | pid, |
571 | ve->addrlen, | 576 | message_buf, |
572 | GNUNET_YES, | 577 | tsize, |
573 | NULL, NULL); | 578 | PING_PRIORITY, |
579 | HELLO_VERIFICATION_TIMEOUT, | ||
580 | NULL /* no session */, | ||
581 | ve->addr, | ||
582 | ve->addrlen, | ||
583 | GNUNET_YES, | ||
584 | NULL, NULL); | ||
585 | } | ||
574 | if (-1 != ret) | 586 | if (-1 != ret) |
575 | ve->send_time = GNUNET_TIME_absolute_get (); | 587 | { |
588 | ve->send_time = GNUNET_TIME_absolute_get (); | ||
589 | GNUNET_STATISTICS_update (GST_stats, | ||
590 | gettext_noop ("# PING without HELLO messages sent"), | ||
591 | 1, | ||
592 | GNUNET_NO); | ||
593 | } | ||
576 | return GNUNET_OK; | 594 | return GNUNET_OK; |
577 | } | 595 | } |
578 | 596 | ||