Tidy dcb_free (prefer use of dcb_close) and remove from test code; add good random number generator.
This commit is contained in:
@ -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
|
* @param dcb The DCB to free
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
dcb_free(DCB *dcb)
|
dcb_free(DCB *dcb)
|
||||||
{
|
{
|
||||||
if (dcb->fd != DCBFD_CLOSED)
|
dcb_close(dcb);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -23,6 +23,7 @@
|
|||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <mysql_client_server_protocol.h>
|
#include <mysql_client_server_protocol.h>
|
||||||
#include <gwdirs.h>
|
#include <gwdirs.h>
|
||||||
|
#include <random.h>
|
||||||
|
|
||||||
/** Defined in log_manager.cc */
|
/** Defined in log_manager.cc */
|
||||||
extern int lm_enabled_logfiles_bitmask;
|
extern int lm_enabled_logfiles_bitmask;
|
||||||
@ -36,15 +37,13 @@ extern __thread log_info_t tls_log_info;
|
|||||||
static unsigned char
|
static unsigned char
|
||||||
secrets_randomchar()
|
secrets_randomchar()
|
||||||
{
|
{
|
||||||
return (char)((rand() % ('~' - ' ')) + ' ');
|
return (char)((random_jkiss() % ('~' - ' ')) + ' ');
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
secrets_random_str(unsigned char *output, int len)
|
secrets_random_str(unsigned char *output, int len)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
srand((unsigned long )time(0L) ^ (unsigned long )output);
|
|
||||||
|
|
||||||
for ( i = 0; i < len; ++i )
|
for ( i = 0; i < len; ++i )
|
||||||
{
|
{
|
||||||
output[i] = secrets_randomchar();
|
output[i] = secrets_randomchar();
|
||||||
@ -273,7 +272,6 @@ if(strlen(path) > PATH_MAX)
|
|||||||
}
|
}
|
||||||
|
|
||||||
close(randfd);
|
close(randfd);
|
||||||
srand(randval);
|
|
||||||
secrets_random_str(key.enckey, MAXSCALE_KEYLEN);
|
secrets_random_str(key.enckey, MAXSCALE_KEYLEN);
|
||||||
secrets_random_str(key.initvector, MAXSCALE_IV_LEN);
|
secrets_random_str(key.initvector, MAXSCALE_IV_LEN);
|
||||||
|
|
||||||
|
|||||||
@ -59,9 +59,9 @@ int buflen;
|
|||||||
printAllDCBs();
|
printAllDCBs();
|
||||||
ss_info_dassert(true, "Something is true");
|
ss_info_dassert(true, "Something is true");
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
dcb_free(dcb);
|
dcb_close(dcb);
|
||||||
ss_dfprintf(stderr, "Freed original dcb");
|
ss_dfprintf(stderr, "Closed original dcb");
|
||||||
ss_info_dassert(!dcb_isvalid(dcb), "Freed DCB must not be valid");
|
ss_info_dassert(!dcb_isvalid(dcb), "Closed DCB must not be valid");
|
||||||
ss_dfprintf(stderr, "\t..done\nMake clone DCB a zombie");
|
ss_dfprintf(stderr, "\t..done\nMake clone DCB a zombie");
|
||||||
clone->state = DCB_STATE_NOPOLLING;
|
clone->state = DCB_STATE_NOPOLLING;
|
||||||
dcb_close(clone);
|
dcb_close(clone);
|
||||||
|
|||||||
@ -85,7 +85,7 @@ int result;
|
|||||||
sleep(10);
|
sleep(10);
|
||||||
poll_shutdown();
|
poll_shutdown();
|
||||||
ss_dfprintf(stderr, "\t..done\nTidy up.");
|
ss_dfprintf(stderr, "\t..done\nTidy up.");
|
||||||
dcb_free(dcb);
|
dcb_close(dcb);
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -59,7 +59,7 @@ int result;
|
|||||||
sleep(10);
|
sleep(10);
|
||||||
poll_shutdown();
|
poll_shutdown();
|
||||||
ss_dfprintf(stderr, "\t..done\nTidy up.");
|
ss_dfprintf(stderr, "\t..done\nTidy up.");
|
||||||
dcb_free(dcb);
|
dcb_close(dcb);
|
||||||
ss_dfprintf(stderr, "\t..done\n");
|
ss_dfprintf(stderr, "\t..done\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@ -43,6 +43,7 @@
|
|||||||
#include <skygw_utils.h>
|
#include <skygw_utils.h>
|
||||||
#include <log_manager.h>
|
#include <log_manager.h>
|
||||||
#include <secrets.h>
|
#include <secrets.h>
|
||||||
|
#include <random.h>
|
||||||
|
|
||||||
/** Defined in log_manager.cc */
|
/** Defined in log_manager.cc */
|
||||||
extern int lm_enabled_logfiles_bitmask;
|
extern int lm_enabled_logfiles_bitmask;
|
||||||
@ -100,7 +101,7 @@ char *gw_strend(register const char *s) {
|
|||||||
* generate a random char
|
* generate a random char
|
||||||
*****************************************/
|
*****************************************/
|
||||||
static char gw_randomchar() {
|
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 gw_generate_random_str(char *output, int len) {
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
srand(time(0L));
|
|
||||||
|
|
||||||
for ( i = 0; i < len; ++i ) {
|
for ( i = 0; i < len; ++i ) {
|
||||||
output[i] = gw_randomchar();
|
output[i] = gw_randomchar();
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include "skygw_utils.h"
|
#include "skygw_utils.h"
|
||||||
#include <atomic.h>
|
#include <atomic.h>
|
||||||
|
#include <random.h>
|
||||||
|
|
||||||
#if defined(MLIST)
|
#if defined(MLIST)
|
||||||
|
|
||||||
@ -1265,7 +1266,7 @@ void acquire_lock(
|
|||||||
misscount += 1;
|
misscount += 1;
|
||||||
if (misscount > 10)
|
if (misscount > 10)
|
||||||
{
|
{
|
||||||
ts1.tv_nsec = (rand()%misscount)*1000000;
|
ts1.tv_nsec = (random_jkiss()%misscount)*1000000;
|
||||||
nanosleep(&ts1, NULL);
|
nanosleep(&ts1, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user