libmemcachedutil: fix version check
[awesomized/libmemcached] / libmemcachedutil / version.cc
index 9674c059b825c261fb823a6b839fa12f60353652..75a8f60e897bbea14ced390539dba3f02cd01147 100644 (file)
@@ -49,18 +49,26 @@ struct local_context
 };
 
 static memcached_return_t check_server_version(const memcached_st *,
-                                               memcached_server_instance_st instance,
+                                               const memcached_instance_st * instance,
                                                void *context)
 {
   /* Do Nothing */
   struct local_context *check= (struct local_context *)context;
 
-  if (memcached_server_major_version(instance) != UINT8_MAX &&
-      memcached_server_major_version(instance) >= check->major_version and
-      memcached_server_minor_version(instance) >= check->minor_version and
-      memcached_server_micro_version(instance) >= 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;