diff --git a/clients/c/cosmopolite.c b/clients/c/cosmopolite.c index b9739a0..5c0c614 100644 --- a/clients/c/cosmopolite.c +++ b/clients/c/cosmopolite.c @@ -287,7 +287,7 @@ static void *cosmo_thread_main(void *arg) { instance->command_queue = json_array(); instance->next_delay_ms = pow(instance->next_delay_ms, DELAY_EXPONENT); instance->next_delay_ms = min(DELAY_MAX_MS, max(DELAY_MIN_MS, instance->next_delay_ms)); - instance->next_delay_ms += random() % (instance->next_delay_ms / DELAY_STAGGER_FACTOR); + instance->next_delay_ms += rand_r(&instance->seedp) % (instance->next_delay_ms / DELAY_STAGGER_FACTOR); assert(!pthread_mutex_unlock(&instance->lock)); json_t *to_retry = cosmo_send_rpc(instance, commands); @@ -437,11 +437,12 @@ json_t *cosmo_get_last_message(cosmo *instance, json_t *subject) { cosmo *cosmo_create(const char *base_url, const char *client_id, const cosmo_callbacks *callbacks, void *passthrough) { curl_global_init(CURL_GLOBAL_DEFAULT); - srandomdev(); cosmo *instance = malloc(sizeof(cosmo)); assert(instance); + instance->seedp = (unsigned int) time(NULL); + strcpy(instance->client_id, client_id); cosmo_uuid(instance->instance_id); diff --git a/clients/c/cosmopolite.h b/clients/c/cosmopolite.h index 5d1c830..b759e67 100644 --- a/clients/c/cosmopolite.h +++ b/clients/c/cosmopolite.h @@ -25,6 +25,7 @@ typedef struct { json_t *command_queue; json_t *subscriptions; uint64_t next_delay_ms; + unsigned int seedp; pthread_t thread; CURL *curl;