bmsd/mysql.c

changeset 579
1253a237b620
parent 578
e75ce5bbda73
child 580
9cd6873bda75
--- 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);
+	}
+    }
+}
+

mercurial