- memcached_return_t response_rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
- fprintf(stderr, "%s:%d %s\n", __FILE__, __LINE__, memcached_strerror(NULL, response_rc));
- if (response_rc == MEMCACHED_ITEM)
- {
- char *string_ptr, *end_ptr;
-
- string_ptr= buffer;
- string_ptr+= 5; /* Move past ITEM */
-
- for (end_ptr= string_ptr; isgraph(*end_ptr); end_ptr++) {} ;
-
- char *key= string_ptr;
- key[(size_t)(end_ptr-string_ptr)]= 0;
-
- for (uint32_t callback_counter= 0; callback_counter < number_of_callbacks; callback_counter++)
- {
- memcached_return_t callback_rc= (*callback[callback_counter])(memc, key, (size_t)(end_ptr-string_ptr), context);
- if (callback_rc != MEMCACHED_SUCCESS)
- {
- // @todo build up a message for the error from the value
- memcached_set_error(*instance, callback_rc, MEMCACHED_AT);
- break;
- }
- }
- }
- else if (response_rc == MEMCACHED_END)
- {
- // No additional items were found
- exit_slab_loop= true;
- break;
- }
- else if (response_rc == MEMCACHED_SERVER_ERROR or response_rc == MEMCACHED_CLIENT_ERROR)
- {
- /* If we try to request stats cachedump for a slab class that is too big
- * the server will return an incorrect error message:
- * "MEMCACHED_SERVER_ERROR failed to allocate memory"
- * This isn't really a fatal error, so let's just skip it. I want to
- * fix the return value from the memcached server to a CLIENT_ERROR,
- * so let's add support for that as well right now.
- */
- exit_slab_loop= true;
- break;
- }
- else