766 free(query); |
766 free(query); |
767 } |
767 } |
768 |
768 |
769 |
769 |
770 |
770 |
|
771 /* |
|
772 * Check using a new MySQL connection because we are running from another thread. |
|
773 */ |
771 void ispindel_mysql_check(void) |
774 void ispindel_mysql_check(void) |
772 { |
775 { |
773 sys_ispindel_list *tmpp; |
776 sys_ispindel_list *tmpp; |
|
777 MYSQL *con2 = NULL; |
|
778 MYSQL_RES *res_set2; |
|
779 MYSQL_ROW row2; |
774 |
780 |
775 if (ispindels == NULL) |
781 if (ispindels == NULL) |
776 return; |
782 return; |
777 |
783 |
778 if (mysql_query(con, "SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels;")) { |
784 con2 = mysql_init(NULL); |
779 syslog(LOG_NOTICE, "MySQL: SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels error %u (%s))", mysql_errno(con), mysql_error(con)); |
785 if (con2 == NULL) { |
|
786 syslog(LOG_NOTICE, "MySQL: mysql_init() failed"); |
|
787 return; |
|
788 } |
|
789 |
|
790 if (mysql_real_connect(con2, Config.mysql_host, Config.mysql_user, Config.mysql_pass, Config.mysql_database, Config.mysql_port, NULL, 0) == NULL) { |
|
791 syslog(LOG_NOTICE, "MySQL: mysql_real_connect() %s", mysql_error(con2)); |
|
792 return; |
|
793 } |
|
794 |
|
795 if (mysql_query(con2, "SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels;")) { |
|
796 syslog(LOG_NOTICE, "MySQL: SELECT uuid,alias,beercode,beername,beeruuid,mode FROM mon_ispindels error %u (%s))", mysql_errno(con2), mysql_error(con2)); |
780 } else { |
797 } else { |
781 res_set = mysql_store_result(con); |
798 res_set2 = mysql_store_result(con2); |
782 if (res_set == NULL) { |
799 if (res_set2 == NULL) { |
783 syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con)); |
800 syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con2), mysql_error(con2)); |
784 } else { |
801 } else { |
785 while ((row = mysql_fetch_row(res_set)) != NULL) { |
802 while ((row2 = mysql_fetch_row(res_set2)) != NULL) { |
786 for (tmpp = ispindels; tmpp; tmpp = tmpp->next) { |
803 for (tmpp = ispindels; tmpp; tmpp = tmpp->next) { |
787 if (strcmp(tmpp->uuid, row[0]) == 0) { |
804 if (strcmp(tmpp->uuid, row2[0]) == 0) { |
788 if (strcmp(tmpp->beercode, row[2]) || strcmp(tmpp->beername, row[3]) || strcmp(tmpp->beeruuid, row[4])) { |
805 if (strcmp(tmpp->beercode, row2[2]) || strcmp(tmpp->beername, row2[3]) || strcmp(tmpp->beeruuid, row2[4])) { |
789 syslog(LOG_NOTICE, "ispindel `%s` change beer to `%s %s`", row[1], row[2], row[3]); |
806 syslog(LOG_NOTICE, "ispindel `%s` change beer to `%s %s`", row2[1], row2[2], row2[3]); |
790 if (tmpp->beercode) |
807 if (tmpp->beercode) |
791 free(tmpp->beercode); |
808 free(tmpp->beercode); |
792 tmpp->beercode = xstrcpy(row[2]); |
809 tmpp->beercode = xstrcpy(row2[2]); |
793 if (tmpp->beername) |
810 if (tmpp->beername) |
794 free(tmpp->beername); |
811 free(tmpp->beername); |
795 tmpp->beername = xstrcpy(row[3]); |
812 tmpp->beername = xstrcpy(row2[3]); |
796 if (tmpp->beeruuid) |
813 if (tmpp->beeruuid) |
797 free(tmpp->beeruuid); |
814 free(tmpp->beeruuid); |
798 tmpp->beeruuid = xstrcpy(row[4]); |
815 tmpp->beeruuid = xstrcpy(row2[4]); |
799 } |
816 } |
800 if (strcmp(tmpp->mode, row[5])) { |
817 if (strcmp(tmpp->mode, row2[5])) { |
801 syslog(LOG_NOTICE, "ispindel `%s` change mode `%s`", row[1], row[5]); |
818 syslog(LOG_NOTICE, "ispindel `%s` change mode `%s`", row2[1], row2[5]); |
802 if (tmpp->mode) |
819 if (tmpp->mode) |
803 free(tmpp->mode); |
820 free(tmpp->mode); |
804 tmpp->mode = xstrcpy(row[5]); |
821 tmpp->mode = xstrcpy(row2[5]); |
805 } |
822 } |
806 } |
823 } |
807 } |
824 } |
808 } |
825 } |
809 mysql_free_result(res_set); |
826 mysql_free_result(res_set2); |
810 } |
827 } |
811 } |
828 } |
812 } |
829 |
813 |
830 mysql_close(con2); |
|
831 } |
|
832 |