From 1f6b544f339469006a72f9ff457b8c2a57ccf394 Mon Sep 17 00:00:00 2001 From: counterpoint Date: Wed, 26 Aug 2015 15:43:21 +0100 Subject: [PATCH] Tidy dcb_free (prefer use of dcb_close) and remove from test code; add good random number generator. --- server/core/dcb.c | 14 +++----------- server/core/secrets.c | 6 ++---- server/core/test/testdcb.c | 6 +++--- server/core/test/testpoll.c | 2 +- server/core/test/testsession.c | 2 +- server/core/utils.c | 4 ++-- utils/skygw_utils.cc | 3 ++- 7 files changed, 14 insertions(+), 23 deletions(-) diff --git a/server/core/dcb.c b/server/core/dcb.c index 7ae8622fe..448c9a091 100644 --- a/server/core/dcb.c +++ b/server/core/dcb.c @@ -230,23 +230,15 @@ DCB *newdcb; /** - * Free a DCB that has not been associated with a descriptor. + * Provided only for consistency, simply calls dcb_close to guarantee + * safe disposal of a DCB * * @param dcb The DCB to free */ void dcb_free(DCB *dcb) { - if (dcb->fd != DCBFD_CLOSED) - { - LOGIF(LE, (skygw_log_write_flush( - LOGFILE_ERROR, - "Error : Attempt to free a DCB via dcb_free " - "that has been associated with a descriptor."))); - } - raise(SIGABRT); - /* Another statement to avoid a compiler warning */ - dcb_final_free(dcb); + dcb_close(dcb); } /* diff --git a/server/core/secrets.c b/server/core/secrets.c index d26833e5c..b614a5555 100644 --- a/server/core/secrets.c +++ b/server/core/secrets.c @@ -23,6 +23,7 @@ #include #include #include +#include /** Defined in log_manager.cc */ extern int lm_enabled_logfiles_bitmask; @@ -36,15 +37,13 @@ extern __thread log_info_t tls_log_info; static unsigned char secrets_randomchar() { - return (char)((rand() % ('~' - ' ')) + ' '); + return (char)((random_jkiss() % ('~' - ' ')) + ' '); } static int secrets_random_str(unsigned char *output, int len) { int i; - srand((unsigned long )time(0L) ^ (unsigned long )output); - for ( i = 0; i < len; ++i ) { output[i] = secrets_randomchar(); @@ -273,7 +272,6 @@ if(strlen(path) > PATH_MAX) } close(randfd); - srand(randval); secrets_random_str(key.enckey, MAXSCALE_KEYLEN); secrets_random_str(key.initvector, MAXSCALE_IV_LEN); diff --git a/server/core/test/testdcb.c b/server/core/test/testdcb.c index 13462fc87..1eb8a1a88 100644 --- a/server/core/test/testdcb.c +++ b/server/core/test/testdcb.c @@ -59,9 +59,9 @@ int buflen; printAllDCBs(); ss_info_dassert(true, "Something is true"); ss_dfprintf(stderr, "\t..done\n"); - dcb_free(dcb); - ss_dfprintf(stderr, "Freed original dcb"); - ss_info_dassert(!dcb_isvalid(dcb), "Freed DCB must not be valid"); + dcb_close(dcb); + ss_dfprintf(stderr, "Closed original dcb"); + ss_info_dassert(!dcb_isvalid(dcb), "Closed DCB must not be valid"); ss_dfprintf(stderr, "\t..done\nMake clone DCB a zombie"); clone->state = DCB_STATE_NOPOLLING; dcb_close(clone); diff --git a/server/core/test/testpoll.c b/server/core/test/testpoll.c index 7b9175b2c..a4e6e71db 100644 --- a/server/core/test/testpoll.c +++ b/server/core/test/testpoll.c @@ -85,7 +85,7 @@ int result; sleep(10); poll_shutdown(); ss_dfprintf(stderr, "\t..done\nTidy up."); - dcb_free(dcb); + dcb_close(dcb); ss_dfprintf(stderr, "\t..done\n"); return 0; diff --git a/server/core/test/testsession.c b/server/core/test/testsession.c index 4d8d4cc04..d471fdad4 100644 --- a/server/core/test/testsession.c +++ b/server/core/test/testsession.c @@ -59,7 +59,7 @@ int result; sleep(10); poll_shutdown(); ss_dfprintf(stderr, "\t..done\nTidy up."); - dcb_free(dcb); + dcb_close(dcb); ss_dfprintf(stderr, "\t..done\n"); return 0; diff --git a/server/core/utils.c b/server/core/utils.c index a26c2b4e5..45b47e632 100644 --- a/server/core/utils.c +++ b/server/core/utils.c @@ -43,6 +43,7 @@ #include #include #include +#include /** Defined in log_manager.cc */ extern int lm_enabled_logfiles_bitmask; @@ -100,7 +101,7 @@ char *gw_strend(register const char *s) { * generate a random char *****************************************/ static char gw_randomchar() { - return (char)((rand() % 78) + 30); + return (char)((random_jkiss() % 78) + 30); } /***************************************** @@ -110,7 +111,6 @@ static char gw_randomchar() { int gw_generate_random_str(char *output, int len) { int i; - srand(time(0L)); for ( i = 0; i < len; ++i ) { output[i] = gw_randomchar(); diff --git a/utils/skygw_utils.cc b/utils/skygw_utils.cc index 26a8e8b88..7ca3baec3 100644 --- a/utils/skygw_utils.cc +++ b/utils/skygw_utils.cc @@ -30,6 +30,7 @@ #include #include "skygw_utils.h" #include +#include #if defined(MLIST) @@ -1265,7 +1266,7 @@ void acquire_lock( misscount += 1; if (misscount > 10) { - ts1.tv_nsec = (rand()%misscount)*1000000; + ts1.tv_nsec = (random_jkiss()%misscount)*1000000; nanosleep(&ts1, NULL); } }