diff --git a/include/mariadb_rpl.h b/include/mariadb_rpl.h index ecada5e7..59c9d95b 100644 --- a/include/mariadb_rpl.h +++ b/include/mariadb_rpl.h @@ -321,7 +321,7 @@ typedef struct st_mariadb_rpl { uint32_t filename_length; uint32_t server_id; unsigned long start_position; - uint32_t flags; + uint16_t flags; uint8_t fd_header_len; /* header len from last format description event */ uint8_t use_checksum; uint8_t artificial_checksun; diff --git a/libmariadb/mariadb_rpl.c b/libmariadb/mariadb_rpl.c index e274b3eb..e2796291 100644 --- a/libmariadb/mariadb_rpl.c +++ b/libmariadb/mariadb_rpl.c @@ -791,14 +791,17 @@ int STDCALL mariadb_rpl_open(MARIADB_RPL *rpl) } if (rpl->mysql) - { + { + uint32_t replica_id= rpl->server_id; ptr= buf= (unsigned char *)alloca(rpl->filename_length + 11); int4store(ptr, (unsigned int)rpl->start_position); ptr+= 4; int2store(ptr, rpl->flags); ptr+= 2; - int4store(ptr, rpl->server_id); + if ((rpl->flags & MARIADB_RPL_BINLOG_DUMP_NON_BLOCK) && !replica_id) + replica_id= 1; + int4store(ptr, replica_id); ptr+= 4; memcpy(ptr, rpl->filename, rpl->filename_length); ptr+= rpl->filename_length;