process_hello (void *cls, const struct GNUNET_MessageHeader *message)
{
struct GNUNET_TESTING_Daemon *daemon = cls;
+ int msize;
if (daemon == NULL)
return;
}
GNUNET_assert (message != NULL);
+ msize = ntohs(message->size);
+ if (msize < 1)
+ {
+ return;
+ }
if (daemon->th != NULL)
{
GNUNET_TRANSPORT_get_hello_cancel(daemon->th, &process_hello, daemon);
"HELLO", GNUNET_i2s (&daemon->id));
#endif
- GNUNET_free_non_null(daemon->hello);
- daemon->hello = GNUNET_malloc(ntohs(message->size));
- memcpy(daemon->hello, message, ntohs(message->size));
- if (daemon->th != NULL)
+
{
- GNUNET_TRANSPORT_disconnect(daemon->th);
- daemon->th = NULL;
+ GNUNET_free_non_null(daemon->hello);
+ daemon->hello = GNUNET_malloc(msize);
+ memcpy(daemon->hello, message, msize);
+
+ if (daemon->th != NULL)
+ {
+ GNUNET_TRANSPORT_disconnect(daemon->th);
+ daemon->th = NULL;
+ }
}
}
struct ChurnContext *churn_ctx;
unsigned int running;
unsigned int stopped;
+ unsigned int total_running;
+ unsigned int total_stopped;
unsigned int i;
unsigned int *running_arr;
unsigned int *stopped_arr;
}
churn_ctx = GNUNET_malloc(sizeof(struct ChurnContext));
- running_arr = GNUNET_malloc(running * sizeof(unsigned int));
- stopped_arr = GNUNET_malloc(stopped * sizeof(unsigned int));
+
+ running_arr = NULL;
+ if (running > 0)
+ running_arr = GNUNET_malloc(running * sizeof(unsigned int));
+
+ stopped_arr = NULL;
+ if (stopped > 0)
+ stopped_arr = GNUNET_malloc(stopped * sizeof(unsigned int));
running_permute = NULL;
stopped_permute = NULL;
if (stopped > 0)
stopped_permute = GNUNET_CRYPTO_random_permute(GNUNET_CRYPTO_QUALITY_WEAK, stopped);
+ total_running = running;
+ total_stopped = stopped;
running = 0;
stopped = 0;
{
if (pg->peers[i].daemon->running == GNUNET_YES)
{
+ GNUNET_assert((running_arr != NULL) && (total_running > running));
running_arr[running] = i;
running++;
}
else
{
+ GNUNET_assert((stopped_arr != NULL) && (total_stopped > stopped));
stopped_arr[stopped] = i;
stopped++;
}
timeout, &churn_start_callback, churn_ctx);
}
- GNUNET_free(running_arr);
- GNUNET_free(stopped_arr);
+ GNUNET_free_non_null(running_arr);
+ GNUNET_free_non_null(stopped_arr);
GNUNET_free_non_null(running_permute);
GNUNET_free_non_null(stopped_permute);
}