X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Futil%2Fversion.c;h=a0b6925532ee8c69ec85f1d7819bb8ca100f7b8d;hb=259ed7e68a0de0887e9aedbe0aa5fdd9404929f9;hp=000db326cc8b87f2c8fddc8efa6937602e86f3d1;hpb=573d3bb262f51461d7ed4ba06a723a8555637bba;p=m6w6%2Flibmemcached diff --git a/libmemcached/util/version.c b/libmemcached/util/version.c index 000db326..a0b69255 100644 --- a/libmemcached/util/version.c +++ b/libmemcached/util/version.c @@ -16,22 +16,24 @@ struct local_context { uint8_t major_version; - uint8_t micro_version; uint8_t minor_version; + uint8_t micro_version; bool truth; }; -static memcached_return_t check_server_version(const memcached_st *ptr __attribute__((unused)), +static memcached_return_t check_server_version(const memcached_st *ptr, const memcached_server_st *instance, void *context) { /* Do Nothing */ struct local_context *check= (struct local_context *)context; + (void)ptr; - if (instance->major_version >= check->major_version && - instance->micro_version >= check->micro_version && - instance->minor_version >= check->minor_version) + if (instance->major_version != UINT8_MAX && + instance->major_version >= check->major_version && + instance->minor_version >= check->minor_version && + instance->micro_version >= check->micro_version ) { return MEMCACHED_SUCCESS; } @@ -41,15 +43,18 @@ static memcached_return_t check_server_version(const memcached_st *ptr __attribu return MEMCACHED_FAILURE; } -bool libmemcached_util_version_check(memcached_st *memc, +bool libmemcached_util_version_check(memcached_st *memc, uint8_t major_version, - uint8_t micro_version, - uint8_t minor_version) + uint8_t minor_version, + uint8_t micro_version) { memcached_server_fn callbacks[1]; - memcached_version(memc); + memcached_return_t rc= memcached_version(memc); + + if (rc != MEMCACHED_SUCCESS) + return false; - struct local_context check= { .major_version= major_version, .micro_version= micro_version, .minor_version= minor_version, .truth= true }; + struct local_context check= { .major_version= major_version, .minor_version= minor_version, .micro_version= micro_version, .truth= true }; callbacks[0]= check_server_version; memcached_server_cursor(memc, callbacks, (void *)&check, 1);