From: Christian Grothoff Date: Mon, 28 Nov 2011 17:39:25 +0000 (+0000) Subject: cache signature upon first generation to avoid useless re-signing of the same data X-Git-Tag: initial-import-from-subversion-38251~15768 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e32a95423e3e54f983df02e88e5f0d2e81cc6d4f;p=oweals%2Fgnunet.git cache signature upon first generation to avoid useless re-signing of the same data --- diff --git a/src/nse/gnunet-service-nse.c b/src/nse/gnunet-service-nse.c index 6e866f82c..57bfcde2f 100644 --- a/src/nse/gnunet-service-nse.c +++ b/src/nse/gnunet-service-nse.c @@ -828,6 +828,7 @@ find_proof (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) sizeof (uint64_t)]; GNUNET_HashCode result; unsigned int i; + const struct GNUNET_CRYPTO_RsaSignature *sig_cache; proof_task = GNUNET_SCHEDULER_NO_TASK; memcpy (&buf[sizeof (uint64_t)], &my_public_key, @@ -845,19 +846,34 @@ find_proof (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Proof of work found: %llu!\n", (unsigned long long) GNUNET_ntohll (counter)); #endif + sig_cache = NULL; for (i = 0; i < HISTORY_SIZE; i++) if (ntohl (size_estimate_messages[i].hop_count) == 0) { size_estimate_messages[i].proof_of_work = my_proof; if (nse_work_required > 0) - GNUNET_assert (GNUNET_OK == - GNUNET_CRYPTO_rsa_sign (my_private_key, - &size_estimate_messages - [i].purpose, - &size_estimate_messages - [i].signature)); + { + if (sig_cache == NULL) + { + GNUNET_assert (GNUNET_OK == + GNUNET_CRYPTO_rsa_sign (my_private_key, + &size_estimate_messages + [i].purpose, + &size_estimate_messages + [i].signature)); + sig_cache = &size_estimate_messages[i].signature; + } + else + { + /* use cached signature */ + size_estimate_messages[i].signature = *sig_cache; + } + } else + { + /* no signature required */ memset (&size_estimate_messages[i].signature, 0, sizeof (struct GNUNET_CRYPTO_RsaSignature)); + } } write_proof (); return; diff --git a/src/nse/nse_api.c b/src/nse/nse_api.c index db5e9d117..e32c08e4b 100644 --- a/src/nse/nse_api.c +++ b/src/nse/nse_api.c @@ -105,7 +105,7 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg) if (msg == NULL) { - /* Error, timeout, death */ + /* Error, timeout, death */ GNUNET_CLIENT_disconnect (h->client, GNUNET_NO); h->client = NULL; h->reconnect_task =