aboutsummaryrefslogtreecommitdiff
path: root/src/dht/gnunet-service-dht.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2010-11-29 13:06:01 +0000
committerNathan S. Evans <evans@in.tum.de>2010-11-29 13:06:01 +0000
commit99cbab79fbe2b05956c78888d2b2092e0b0b6631 (patch)
tree5765f7de5f24b8fd95f42b09fa8cd4636752de4e /src/dht/gnunet-service-dht.c
parent294a4c7bf269bf5a5f165e511c1f07cdb32d2cc8 (diff)
downloadgnunet-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.c38
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);