Possible fix for OSX slow server startup
authorBrian Aker <brian@gaz>
Fri, 16 Jul 2010 03:54:57 +0000 (20:54 -0700)
committerBrian Aker <brian@gaz>
Fri, 16 Jul 2010 03:54:57 +0000 (20:54 -0700)
libmemcached/response.c
libmemcached/util/version.c
libmemcached/version.c

index 491b4cc8900fe569343c5f82a64c87be3fc22404..867a999ef039b16f190dce2f04c49166e722aa06 100644 (file)
@@ -61,6 +61,7 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr,
    * compatibility.
  */
   if (ptr->root->flags.binary_protocol == false)
+  {
     while (memcached_server_response_count(ptr) > 1)
     {
       memcached_return_t rc= memcached_read_one_response(ptr, buffer, buffer_length, result);
@@ -75,6 +76,7 @@ memcached_return_t memcached_response(memcached_server_write_instance_st ptr,
                 rc != MEMCACHED_DATA_EXISTS)
         return rc;
     }
+  }
 
   return memcached_read_one_response(ptr, buffer, buffer_length, result);
 }
index e5b5ae1df8f17ec965826b259e6524d4ce49e2f5..7c936c715a6233f497843bf85106a6214ea8bcd5 100644 (file)
@@ -49,7 +49,8 @@ bool libmemcached_util_version_check(memcached_st *memc,
   memcached_server_fn callbacks[1];
   memcached_version(memc);
 
- struct local_context check= { .major_version= major_version, .minor_version= minor_version, .micro_version= micro_version, .truth= true };
+  struct local_context check= { .major_version= major_version, .minor_version= minor_version, .micro_version= micro_version, .truth= true };
+  memcached_version(memc);
 
   callbacks[0]= check_server_version;
   memcached_server_cursor(memc, callbacks, (void *)&check,  1);
index ba0b243ed9bdf746281e06066a54fc20b5a54b37..54545cb9d46ff59112b4b30a028a4fb5877d0766 100644 (file)
@@ -13,10 +13,19 @@ memcached_return_t memcached_version(memcached_st *ptr)
   if (ptr->flags.use_udp)
     return MEMCACHED_NOT_SUPPORTED;
 
+  bool was_blocking= ptr->flags.no_block;
+  memcached_return_t rc;
+
+  ptr->flags.no_block= false;
+
   if (ptr->flags.binary_protocol)
-    return memcached_version_binary(ptr);
+    rc= memcached_version_binary(ptr);
   else
-    return memcached_version_textual(ptr);      
+    rc= memcached_version_textual(ptr);      
+
+  ptr->flags.no_block= was_blocking;
+
+  return rc;
 }
 
 static inline memcached_return_t memcached_version_textual(memcached_st *ptr)