Merge Patrick's exception branch.
[m6w6/libmemcached] / libmemcached / memcached_version.c
index 0a77529c7d1ed5ab1926c903a774fe0082728791..9c070eaf2ec744339b3cb499050cacbf359cba3d 100644 (file)
@@ -10,6 +10,9 @@ static inline memcached_return memcached_version_textual(memcached_st *ptr);
 
 memcached_return memcached_version(memcached_st *ptr)
 {
+   if (ptr->flags & MEM_USE_UDP)
+    return MEMCACHED_NOT_SUPPORTED;
+
    if (ptr->flags & MEM_BINARY_PROTOCOL)
      return memcached_version_binary(ptr);
    else
@@ -23,7 +26,7 @@ static inline memcached_return memcached_version_textual(memcached_st *ptr)
   memcached_return rc;
   char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
   char *response_ptr;
-  char *command= "version\r\n";
+  const char *command= "version\r\n";
 
   send_length= strlen(command);
 
@@ -41,7 +44,10 @@ static inline memcached_return memcached_version_textual(memcached_st *ptr)
 
     rrc= memcached_response(&ptr->hosts[x], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
     if (rrc != MEMCACHED_SUCCESS)
+    {
       rc= MEMCACHED_SOME_ERRORS;
+      continue;
+    }
 
     /* Find the space, and then move one past it to copy version */
     response_ptr= index(buffer, ' ');
@@ -94,6 +100,7 @@ static inline memcached_return memcached_version_binary(memcached_st *ptr)
       {
         memcached_io_reset(&ptr->hosts[x]);
         rc= MEMCACHED_SOME_ERRORS;
+        continue;
       }
 
       ptr->hosts[x].major_version= (uint8_t)strtol(buffer, &p, 10);