diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-11-29 13:06:01 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-11-29 13:06:01 +0000 |
commit | 99cbab79fbe2b05956c78888d2b2092e0b0b6631 (patch) | |
tree | 5765f7de5f24b8fd95f42b09fa8cd4636752de4e /src/dht/gnunet-service-dht.c | |
parent | 294a4c7bf269bf5a5f165e511c1f07cdb32d2cc8 (diff) | |
download | gnunet-99cbab79fbe2b05956c78888d2b2092e0b0b6631.tar.gz gnunet-99cbab79fbe2b05956c78888d2b2092e0b0b6631.zip |
more efficient malicious behavior (discard messages earlier)
Diffstat (limited to 'src/dht/gnunet-service-dht.c')
-rw-r--r-- | src/dht/gnunet-service-dht.c | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/src/dht/gnunet-service-dht.c b/src/dht/gnunet-service-dht.c index fff683a7d..2746d75b8 100644 --- a/src/dht/gnunet-service-dht.c +++ b/src/dht/gnunet-service-dht.c | |||
@@ -4143,6 +4143,12 @@ handle_dht_local_route_request (void *cls, struct GNUNET_SERVER_Client *client, | |||
4143 | if (dhtlog_handle != NULL) | 4143 | if (dhtlog_handle != NULL) |
4144 | dhtlog_handle->insert_dhtkey (NULL, &dht_msg->key); | 4144 | dhtlog_handle->insert_dhtkey (NULL, &dht_msg->key); |
4145 | #endif | 4145 | #endif |
4146 | |||
4147 | if (GNUNET_YES == malicious_dropper) | ||
4148 | { | ||
4149 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | ||
4150 | return; | ||
4151 | } | ||
4146 | memset(&msg_ctx, 0, sizeof(struct DHT_MessageContext)); | 4152 | memset(&msg_ctx, 0, sizeof(struct DHT_MessageContext)); |
4147 | msg_ctx.client = find_active_client (client); | 4153 | msg_ctx.client = find_active_client (client); |
4148 | memcpy(&msg_ctx.key, &dht_msg->key, sizeof(GNUNET_HashCode)); | 4154 | memcpy(&msg_ctx.key, &dht_msg->key, sizeof(GNUNET_HashCode)); |
@@ -4222,7 +4228,7 @@ handle_dht_control_message (void *cls, struct GNUNET_SERVER_Client *client, | |||
4222 | dhtlog_handle->set_malicious(&my_identity); | 4228 | dhtlog_handle->set_malicious(&my_identity); |
4223 | #endif | 4229 | #endif |
4224 | malicious_dropper = GNUNET_YES; | 4230 | malicious_dropper = GNUNET_YES; |
4225 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, | 4231 | GNUNET_log(GNUNET_ERROR_TYPE_WARNING, |
4226 | "%s:%s Initiating malicious DROP behavior\n", my_short_id, "DHT"); | 4232 | "%s:%s Initiating malicious DROP behavior\n", my_short_id, "DHT"); |
4227 | break; | 4233 | break; |
4228 | #endif | 4234 | #endif |
@@ -4313,6 +4319,21 @@ handle_dht_p2p_route_request (void *cls, | |||
4313 | return GNUNET_YES; | 4319 | return GNUNET_YES; |
4314 | } | 4320 | } |
4315 | 4321 | ||
4322 | if (malicious_dropper == GNUNET_YES) | ||
4323 | { | ||
4324 | #if DEBUG_DHT_ROUTING | ||
4325 | if ((debug_routes_extended) && (dhtlog_handle != NULL)) | ||
4326 | { | ||
4327 | /** Log routes that die due to high load! */ | ||
4328 | dhtlog_handle->insert_route (NULL, GNUNET_ntohll(incoming->unique_id), DHTLOG_ROUTE, | ||
4329 | ntohl(incoming->hop_count), GNUNET_SYSERR, | ||
4330 | &my_identity, &incoming->key, peer, | ||
4331 | NULL); | ||
4332 | } | ||
4333 | #endif | ||
4334 | return GNUNET_YES; | ||
4335 | } | ||
4336 | |||
4316 | if (get_max_send_delay().rel_value > MAX_REQUEST_TIME.rel_value) | 4337 | if (get_max_send_delay().rel_value > MAX_REQUEST_TIME.rel_value) |
4317 | { | 4338 | { |
4318 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Sending of previous replies took too long, backing off!\n"); | 4339 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Sending of previous replies took too long, backing off!\n"); |
@@ -4376,6 +4397,21 @@ handle_dht_p2p_route_result (void *cls, | |||
4376 | return GNUNET_YES; | 4397 | return GNUNET_YES; |
4377 | } | 4398 | } |
4378 | 4399 | ||
4400 | if (malicious_dropper == GNUNET_YES) | ||
4401 | { | ||
4402 | #if DEBUG_DHT_ROUTING | ||
4403 | if ((debug_routes_extended) && (dhtlog_handle != NULL)) | ||
4404 | { | ||
4405 | /** Log routes that die due to high load! */ | ||
4406 | dhtlog_handle->insert_route (NULL, GNUNET_ntohll(incoming->unique_id), DHTLOG_ROUTE, | ||
4407 | ntohl(incoming->hop_count), GNUNET_SYSERR, | ||
4408 | &my_identity, &incoming->key, peer, | ||
4409 | NULL); | ||
4410 | } | ||
4411 | #endif | ||
4412 | return GNUNET_YES; | ||
4413 | } | ||
4414 | |||
4379 | memset(&msg_ctx, 0, sizeof(struct DHT_MessageContext)); | 4415 | memset(&msg_ctx, 0, sizeof(struct DHT_MessageContext)); |
4380 | // FIXME: call GNUNET_BLOCK_evaluate (...) -- instead of doing your own bloomfilter! | 4416 | // FIXME: call GNUNET_BLOCK_evaluate (...) -- instead of doing your own bloomfilter! |
4381 | msg_ctx.bloom = GNUNET_CONTAINER_bloomfilter_init(incoming->bloomfilter, DHT_BLOOM_SIZE, DHT_BLOOM_K); | 4417 | msg_ctx.bloom = GNUNET_CONTAINER_bloomfilter_init(incoming->bloomfilter, DHT_BLOOM_SIZE, DHT_BLOOM_K); |