Further bug in #14

main() checked GloVars.__cmd_proxysql_nostart instead of GloVars.global.nostart
Fixed this and changed locking logic in Admin
pull/190/head
René Cannaò 12 years ago
parent 4b0db9d8f1
commit 1615ddce53

@ -199,10 +199,12 @@ void admin_session_handler(MySQL_Session *sess, ProxySQL_Admin *pa, PtrSize_t *p
if (query_no_space_length==strlen("PROXYSQL START") && !strncasecmp("PROXYSQL START",query_no_space, query_no_space_length)) {
run_query=false;
Standard_ProxySQL_Admin *SPA=(Standard_ProxySQL_Admin *)pa;
bool rc;
rc=__sync_bool_compare_and_swap(&GloVars.global.nostart,1,0);
bool rc=false;
if (nostart_) {
rc=__sync_bool_compare_and_swap(&GloVars.global.nostart,1,0);
}
if (rc) {
nostart_=false;
//nostart_=false;
SPA->send_MySQL_OK(&sess->myprot_client, NULL);
} else {
SPA->send_MySQL_ERR(&sess->myprot_client, (char *)"ProxySQL already started");

@ -562,7 +562,8 @@ int main(int argc, const char * argv[]) {
GloAdmin->init_users();
if (GloVars.__cmd_proxysql_nostart) {
//if (GloVars.__cmd_proxysql_nostart) {
if (GloVars.global.nostart) {
pthread_mutex_lock(&GloVars.global.start_mutex);
}

Loading…
Cancel
Save