libmemcachedutil: fix version check
[awesomized/libmemcached] / libmemcachedutil / version.cc
index 15f888b875b7fd5baef93ee8db35be999b1ab990..75a8f60e897bbea14ced390539dba3f02cd01147 100644 (file)
@@ -49,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 and
-      instance->minor_version >= check->minor_version and
-      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;