X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcachedutil%2Fversion.cc;h=75a8f60e897bbea14ced390539dba3f02cd01147;hb=e0165c033349179841bd1658f4068a9e4c075f66;hp=abfd47f71cffef0f540c076c1d03776ec19f2656;hpb=274778ed13cb7c38995dc1491d437b27db6339fb;p=awesomized%2Flibmemcached diff --git a/libmemcachedutil/version.cc b/libmemcachedutil/version.cc index abfd47f7..75a8f60e 100644 --- a/libmemcachedutil/version.cc +++ b/libmemcachedutil/version.cc @@ -37,6 +37,7 @@ #include +#include struct local_context { @@ -48,18 +49,26 @@ struct local_context }; static memcached_return_t check_server_version(const memcached_st *, - const memcached_server_st *instance, + const memcached_instance_st * instance, void *context) { /* Do Nothing */ struct local_context *check= (struct local_context *)context; - 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; + if (memcached_server_major_version(instance) != UINT8_MAX) { + uint32_t sv, cv; + + sv = memcached_server_micro_version(instance) + |memcached_server_minor_version(instance) << 8 + |memcached_server_major_version(instance) << 16 + ; + cv = check->micro_version + |check->minor_version << 8 + |check->major_version << 16; + + if (sv >= cv) { + return MEMCACHED_SUCCESS; + } } check->truth= false; @@ -72,8 +81,10 @@ bool libmemcached_util_version_check(memcached_st *memc, uint8_t minor_version, uint8_t micro_version) { - if (memcached_version(memc) != MEMCACHED_SUCCESS) + if (memcached_failed(memcached_version(memc))) + { return false; + } struct local_context check= { major_version, minor_version, micro_version, true };