diff --git a/CMakeLists.txt b/CMakeLists.txt index 49db6a77..dff8025e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -227,6 +227,7 @@ IF(WITH_EXTERNAL_ZLIB) IF(NOT ZLIB_FOUND) FIND_PACKAGE(ZLIB REQUIRED) ENDIF() + SET(SYSTEM_LIBS ${SYSTEM_LIBS} ${ZLIB_LIBRARIES}) ELSE() SET(ZLIB_INCLUDE_DIR "${CC_SOURCE_DIR}/external/zlib") ADD_SUBDIRECTORY("${CC_SOURCE_DIR}/external/zlib") diff --git a/include/mariadb_rpl.h b/include/mariadb_rpl.h index 491ede5e..fda15cc0 100644 --- a/include/mariadb_rpl.h +++ b/include/mariadb_rpl.h @@ -328,7 +328,7 @@ typedef struct st_mariadb_rpl { uint16_t flags; uint8_t fd_header_len; /* header len from last format description event */ uint8_t use_checksum; - uint8_t artificial_checksun; + uint8_t artificial_checksum; uint8_t verify_checksum; uint8_t post_header_len[ENUM_END_EVENT]; MA_FILE *fp; diff --git a/libmariadb/mariadb_rpl.c b/libmariadb/mariadb_rpl.c index 5a35f105..cfdbe99c 100644 --- a/libmariadb/mariadb_rpl.c +++ b/libmariadb/mariadb_rpl.c @@ -698,7 +698,7 @@ MARIADB_RPL * STDCALL mariadb_rpl_init_ex(MYSQL *mysql, unsigned int version) MYSQL_ROW row= mysql_fetch_row(result); if (!strcmp(row[0], "CRC32")) { - rpl->artificial_checksun= 1; + rpl->artificial_checksum= 1; } mysql_free_result(result); } @@ -1476,11 +1476,10 @@ MARIADB_RPL_EVENT * STDCALL mariadb_rpl_fetch(MARIADB_RPL *rpl, MARIADB_RPL_EVEN if (rpl_event->timestamp == 0 && rpl_event->flags & LOG_EVENT_ARTIFICIAL_F) { - if (rpl->artificial_checksun) + if (rpl->artificial_checksum) { - int4store(ev_end - 4, rpl_event->checksum); - if (mariadb_connection(rpl->mysql)) - rpl->artificial_checksun= 0; + unsigned long crc= crc32_z(0L, Z_NULL, 0); + rpl_event->checksum= (uint32_t) crc32_z(crc, checksum_start, ev_end - checksum_start); } } RPL_CHECK_POS(ev, ev_end, len);