*/
uint32_t other_peer_id;
- /**
- * Number of times we tried to send hello; used to increase delay in offering
- * hellos
- */
- uint16_t retries;
};
*/
GNUNET_SCHEDULER_TaskIdentifier timeout_rocc_task_id;
- /**
- * Number of times we tried to send hello; used to increase delay in offering
- * hellos
- */
- uint16_t retries;
-
};
return;
}
master_context = GNUNET_malloc (sizeof (struct Context));
+ GNUNET_SERVER_client_keep (client);
master_context->client = client;
master_context->host_id = ntohl (msg->host_id);
master_context->master_ip = GNUNET_strdup (controller_hostname);
- LOG_DEBUG ("Master Controller IP: %s\n", master_context->master_ip);
+ LOG_DEBUG ("Our IP: %s\n", master_context->master_ip);
master_context->system =
GNUNET_TESTING_system_create ("testbed", master_context->master_ip, hostname);
host =
NULL,
0);
host_list_add (host);
- GNUNET_SERVER_client_keep (client);
LOG_DEBUG ("Created master context with host ID: %u\n",
master_context->host_id);
GNUNET_SERVER_receive_done (client, GNUNET_OK);
/**
* Function to destroy a peer
*
- * @param the peer structure to destroy
+ * @param peer the peer structure to destroy
*/
static void
destroy_peer (struct Peer *peer)
occ->send_hello_task =
GNUNET_SCHEDULER_add_delayed
(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS,
- 100 * (pow (2, occ->retries++))),
+ 100 + GNUNET_CRYPTO_random_u32
+ (GNUNET_CRYPTO_QUALITY_WEAK, 500)),
&send_hello, occ);
}
GNUNET_free (other_peer_str);
/* rhc is now set to the existing one from the hash map by
reghost_match_iterator() */
/* if queue is empty then ignore creating focc and proceed with
- normal forwarding */
- if (NULL == rhc->focc_dll_head)
+ normal forwarding */
+ if (RHC_OL_CONNECT == rhc->state)
skip_focc = GNUNET_YES;
}
if (GNUNET_NO == skip_focc)
if ((peer2_host_id >= slave_list_size)
|| (NULL ==slave_list[peer2_host_id]))
{
- struct GNUNET_TESTBED_NeedControllerConfig *reply;
-
- LOG_DEBUG ("Need controller configuration for connecting peers %u and %u\n",
- p1, p2);
- reply = GNUNET_malloc (sizeof (struct
- GNUNET_TESTBED_NeedControllerConfig));
- reply->header.size = htons (sizeof (struct
- GNUNET_TESTBED_NeedControllerConfig));
- reply->header.type = htons (GNUNET_MESSAGE_TYPE_TESTBED_NEEDCONTROLLERCONFIG);
- reply->controller_host_id = msg->peer2_host_id;
- reply->operation_id = msg->operation_id;
- queue_message (client, &reply->header);
- GNUNET_SERVER_receive_done (client, GNUNET_OK);
+ LOG (GNUNET_ERROR_TYPE_WARNING,
+ "Configuration of peer2's controller missing for connecting peers"
+ "%u and %u\n", p1, p2);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
return;
}
- else
+ peer2_controller = slave_list[peer2_host_id]->controller;
+ if (NULL == peer2_controller)
{
- //occ->peer2_controller = slave_list[peer2_host_id]->controller;
- peer2_controller = slave_list[peer2_host_id]->controller;
- if (NULL == peer2_controller)
- {
- GNUNET_break (0); /* What's going on? */
- GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
- return;
- }
+ GNUNET_break (0); /* What's going on? */
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
}
}
else
rocc->attempt_connect_task_id =
GNUNET_SCHEDULER_add_delayed
(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS,
- 100 * (pow (2, rocc->retries++))),
+ 100 + GNUNET_CRYPTO_random_u32
+ (GNUNET_CRYPTO_QUALITY_WEAK, 500)),
&attempt_connect_task, rocc);
}
cleanup_focc (focc);
}
if (NULL != rhc->sub_op)
- GNUNET_TESTBED_operation_cancel (rhc->sub_op);
+ GNUNET_TESTBED_operation_done (rhc->sub_op);
if (NULL != rhc->client)
GNUNET_SERVER_client_drop (rhc->client);
GNUNET_free (value);
struct OverlayConnectContext *occ;
struct RequestOverlayConnectContext *rocc;
struct ForwardedOperationContext *fopc;
+ struct MessageQueue *mq_entry;
uint32_t id;
shutdown_task_id = GNUNET_SCHEDULER_NO_TASK;
GNUNET_free_non_null (master_context->master_ip);
if (NULL != master_context->system)
GNUNET_TESTING_system_destroy (master_context->system, GNUNET_YES);
+ GNUNET_SERVER_client_drop (master_context->client);
GNUNET_free (master_context);
master_context = NULL;
}
+ if (NULL != transmit_handle)
+ GNUNET_SERVER_notify_transmit_ready_cancel (transmit_handle);
+ while (NULL != (mq_entry = mq_head))
+ {
+ GNUNET_free (mq_entry->msg);
+ GNUNET_SERVER_client_drop (mq_entry->client);
+ GNUNET_CONTAINER_DLL_remove (mq_head, mq_tail, mq_entry);
+ GNUNET_free (mq_entry);
+ }
GNUNET_free_non_null (hostname);
GNUNET_CONFIGURATION_destroy (our_config);
}
if (client == master_context->client)
{
LOG (GNUNET_ERROR_TYPE_DEBUG, "Master client disconnected\n");
- GNUNET_SERVER_client_drop (client);
/* should not be needed as we're terminated by failure to read
* from stdin, but if stdin fails for some reason, this shouldn't
* hurt for now --- might need to revise this later if we ever