X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Ffetch.cc;h=8977753489a33835f73d640289869893ab16442c;hb=ea7a5dd332779c77eaef6d14eac58372cb3439e1;hp=783ee771ed10fbdbe552585b024eede26d5703e5;hpb=5ba03c8cc82605f0eb171d547876fb6cbed70a76;p=awesomized%2Flibmemcached diff --git a/libmemcached/fetch.cc b/libmemcached/fetch.cc index 783ee771..89777534 100644 --- a/libmemcached/fetch.cc +++ b/libmemcached/fetch.cc @@ -90,27 +90,41 @@ memcached_result_st *memcached_fetch_result(memcached_st *ptr, { memcached_server_st *server; - unlikely (ptr->flags.use_udp) + memcached_return_t unused; + if (not error) + error= &unused; + + if (ptr->flags.use_udp) { *error= MEMCACHED_NOT_SUPPORTED; return NULL; } - if (result == NULL) - if ((result= memcached_result_create(ptr, NULL)) == NULL) + if (not result) + { + if (not (result= memcached_result_create(ptr, NULL))) + { return NULL; + } + } - while ((server= memcached_io_get_readable_server(ptr)) != NULL) + while ((server= memcached_io_get_readable_server(ptr))) { char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE]; *error= memcached_response(server, buffer, sizeof(buffer), result); if (*error == MEMCACHED_SUCCESS) + { return result; + } else if (*error == MEMCACHED_END) + { memcached_server_response_reset(server); + } else if (*error != MEMCACHED_NOTFOUND) + { break; + } } /* We have completed reading data */