Committing work for next release (got to do something over lunch aye?)
[m6w6/libmemcached] / lib / memcached_fetch.c
index d96d33fb2e92329fbf44fbab07f8a9b836b6bfa9..8d281f35d182dd0758df03425cad4c7b24cdea0d 100644 (file)
@@ -35,7 +35,7 @@ static memcached_return memcached_value_fetch(memcached_st *ptr, char *key, size
     {
       *key_length= 0;
 
-      for (; isalnum(*string_ptr); string_ptr++)
+      for (; isgraph(*string_ptr); string_ptr++)
       {
         *key= *string_ptr;
         key++;
@@ -43,7 +43,7 @@ static memcached_return memcached_value_fetch(memcached_st *ptr, char *key, size
       }
     }
     else /* Skip characters */
-      for (; isalnum(*string_ptr); string_ptr++);
+      for (; isgraph(*string_ptr); string_ptr++);
 
     if (end_ptr == string_ptr)
         goto read_error;
@@ -147,6 +147,9 @@ char *memcached_fetch(memcached_st *ptr, char *key, size_t *key_length,
   memcached_string_st *result_buffer;
   result_buffer= &ptr->result_buffer;
 
+  if (ptr->flags & MEM_NO_BLOCK)
+    memcached_io_preread(ptr);
+
   while (ptr->cursor_server < ptr->number_of_hosts)
   {
     if (!ptr->hosts[ptr->cursor_server].cursor_active)
@@ -185,6 +188,9 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr,
 
   WATCHPOINT_ASSERT(result->value.is_allocated != MEMCACHED_USED);
 
+  if (ptr->flags & MEM_NO_BLOCK)
+    memcached_io_preread(ptr);
+
   while (ptr->cursor_server < ptr->number_of_hosts)
   {
     if (!ptr->hosts[ptr->cursor_server].cursor_active)
@@ -212,7 +218,7 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr,
       return NULL;
   }
 
-  /* An error has occurred */
+  /* We have completed reading data */
   if (result->is_allocated == MEMCACHED_ALLOCATED)
     memcached_result_free(result);
   else