X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Futil%2Fversion.c;h=a0b6925532ee8c69ec85f1d7819bb8ca100f7b8d;hb=259ed7e68a0de0887e9aedbe0aa5fdd9404929f9;hp=e5b5ae1df8f17ec965826b259e6524d4ce49e2f5;hpb=49a02c953ab03f71b819e7a5f68ef7a0e5857544;p=m6w6%2Flibmemcached diff --git a/libmemcached/util/version.c b/libmemcached/util/version.c index e5b5ae1d..a0b69255 100644 --- a/libmemcached/util/version.c +++ b/libmemcached/util/version.c @@ -22,14 +22,16 @@ struct local_context 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 && + if (instance->major_version != UINT8_MAX && + instance->major_version >= check->major_version && instance->minor_version >= check->minor_version && instance->micro_version >= check->micro_version ) { @@ -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 minor_version, uint8_t micro_version) { memcached_server_fn callbacks[1]; - memcached_version(memc); + memcached_return_t rc= memcached_version(memc); - struct local_context check= { .major_version= major_version, .minor_version= minor_version, .micro_version= micro_version, .truth= true }; + if (rc != MEMCACHED_SUCCESS) + return false; + + 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);