X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=libmemcached%2Fdump.cc;h=f74f3ed1f564ce22fb53bdb09478ac5bf210a168;hb=6d8ae66c64dded43f17dc85b906dd334e1173bf7;hp=8ddb2eef859e7a442273510c74457f3f6c3b8037;hpb=d9db3f534bc38ea22e83e5529ff93aea4150ab19;p=awesomized%2Flibmemcached diff --git a/libmemcached/dump.cc b/libmemcached/dump.cc index 8ddb2eef..f74f3ed1 100644 --- a/libmemcached/dump.cc +++ b/libmemcached/dump.cc @@ -114,7 +114,7 @@ static memcached_return_t ascii_dump(Memcached *memc, memcached_dump_fn *callbac { // All items have been returned } - else if (response_rc == MEMCACHED_SERVER_ERROR or response_rc == MEMCACHED_CLIENT_ERROR or response_rc == MEMCACHED_ERROR) + else if (response_rc == MEMCACHED_SERVER_ERROR) { /* If we try to request stats cachedump for a slab class that is too big * the server will return an incorrect error message: @@ -126,6 +126,18 @@ static memcached_return_t ascii_dump(Memcached *memc, memcached_dump_fn *callbac assert(response_rc == MEMCACHED_SUCCESS); // Just fail return response_rc; } + else if (response_rc == MEMCACHED_CLIENT_ERROR) + { + /* The maximum number of slabs has changed in the past (currently 1<<6-1), + * so ignore any client errors complaining about an illegal slab id. + */ + if (0 == strncmp(buffer, "CLIENT_ERROR Illegal slab id", sizeof("CLIENT_ERROR Illegal slab id") - 1)) { + memcached_error_free(*instance); + memcached_error_free(*memc); + } else { + return response_rc; + } + } else { // IO error of some sort must have occurred