diff -r e75ce5bbda73 -r 1253a237b620 bmsd/mysql.c --- a/bmsd/mysql.c Sun Jan 05 11:42:02 2020 +0100 +++ b/bmsd/mysql.c Sun Jan 05 17:04:56 2020 +0100 @@ -338,6 +338,10 @@ for (tmpi = ispindels; tmpi; tmpi = oldtmpi) { oldtmpi = tmpi->next; + if (tmpi->uuid) + free(tmpi->uuid); + if (tmpi->alias) + free(tmpi->alias); if (tmpi->node) free(tmpi->node); if (tmpi->beercode) @@ -346,6 +350,8 @@ free(tmpi->beername); if (tmpi->beeruuid) free(tmpi->beeruuid); + if (tmpi->mode) + free(tmpi->mode); free(tmpi); } @@ -759,3 +765,49 @@ bms_mysql_query(query); free(query); } + + + +void ispindel_mysql_check(void) +{ + sys_ispindel_list *tmpp; + + if (ispindels == NULL) + return; + + if (mysql_query(con, "SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels;")) { + syslog(LOG_NOTICE, "MySQL: SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels error %u (%s))", mysql_errno(con), mysql_error(con)); + } else { + res_set = mysql_store_result(con); + if (res_set == NULL) { + syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); + } else { + while ((row = mysql_fetch_row(res_set)) != NULL) { + for (tmpp = ispindels; tmpp; tmpp = tmpp->next) { + if (strcmp(tmpp->uuid, row[0]) == 0) { + if (strcmp(tmpp->beercode, row[2]) || strcmp(tmpp->beername, row[3]) || strcmp(tmpp->beeruuid, row[4])) { + syslog(LOG_NOTICE, "ispindel `%s` change beer to `%s %s`", row[1], row[2], row[3]); + if (tmpp->beercode) + free(tmpp->beercode); + tmpp->beercode = xstrcpy(row[2]); + if (tmpp->beername) + free(tmpp->beername); + tmpp->beername = xstrcpy(row[3]); + if (tmpp->beeruuid) + free(tmpp->beeruuid); + tmpp->beeruuid = xstrcpy(row[4]); + } + if (strcmp(tmpp->mode, row[5])) { + syslog(LOG_NOTICE, "ispindel `%s` change mode `%s`", row[1], row[5]); + if (tmpp->mode) + free(tmpp->mode); + tmpp->mode = xstrcpy(row[5]); + } + } + } + } + mysql_free_result(res_set); + } + } +} +