-.TH "HASHKIT_CLONE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_CLONE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_clone \- libhashkit Documentation
.
-.TH "HASHKIT_CRC32" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_CRC32" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_crc32 \- libhashkit Documentation
.
-.TH "HASHKIT_CREATE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_CREATE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_create \- libhashkit Documentation
.
-.TH "HASHKIT_FNV1_32" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_FNV1_32" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_fnv1_32 \- libhashkit Documentation
.
-.TH "HASHKIT_FNV1_64" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_FNV1_64" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_fnv1_64 \- libhashkit Documentation
.
-.TH "HASHKIT_FNV1A_32" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_FNV1A_32" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_fnv1a_32 \- libhashkit Documentation
.
-.TH "HASHKIT_FNV1A_64" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_FNV1A_64" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_fnv1a_64 \- libhashkit Documentation
.
-.TH "HASHKIT_FREE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_FREE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_free \- libhashkit Documentation
.
-.TH "HASHKIT_FUNCTIONS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_FUNCTIONS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_functions \- libhashkit Documentation
.
-.TH "HASHKIT_HSIEH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_HSIEH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_hsieh \- libhashkit Documentation
.
-.TH "HASHKIT_IS_ALLOCATED" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_IS_ALLOCATED" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_is_allocated \- libhashkit Documentation
.
-.TH "HASHKIT_JENKINS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_JENKINS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_jenkins \- libhashkit Documentation
.
-.TH "HASHKIT_MD5" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_MD5" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_md5 \- libhashkit Documentation
.
-.TH "HASHKIT_MURMUR" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_MURMUR" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_murmur \- libhashkit Documentation
.
-.TH "HASHKIT_VALUE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "HASHKIT_VALUE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
hashkit_value \- libhashkit Documentation
.
-.TH "LIBHASHKIT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "LIBHASHKIT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
libhashkit \- libhashkit Documentation
.
-.TH "LIBMEMCACHED" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "LIBMEMCACHED" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
libmemcached \- Introducing the C Client Library for memcached
.
-.TH "LIBMEMCACHED_CHECK_CONFIGURATION" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "LIBMEMCACHED_CHECK_CONFIGURATION" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
libmemcached_check_configuration \- libmemcached Documentation
.
-.TH "LIBMEMCACHED_CONFIGURATION" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "LIBMEMCACHED_CONFIGURATION" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
libmemcached_configuration \- libmemcached Documentation
.
-.TH "LIBMEMCACHED_EXAMPLES" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "LIBMEMCACHED_EXAMPLES" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
libmemcached_examples \- libmemcached Documentation
.
-.TH "LIBMEMCACHEDUTIL" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "LIBMEMCACHEDUTIL" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
libmemcachedutil \- libmemcached Documentation
.
-.TH "MEMASLAP" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMASLAP" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memaslap \- libmemcached Documentation
.
-.TH "MEMCACHED" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached \- libmemcached Documentation
.
-.TH "MEMCACHED_ADD" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_ADD" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_add \- Storing and Replacing Data
.
-.TH "MEMCACHED_ADD_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_ADD_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_add_by_key \- Storing and Replacing Data
.
-.TH "MEMCACHED_ANALYZE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_ANALYZE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_analyze \- libmemcached Documentation
.
-.TH "MEMCACHED_APPEND" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_APPEND" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_append \- Appending to or Prepending to data on the server
.
-.TH "MEMCACHED_APPEND_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_APPEND_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_append_by_key \- Appending to or Prepending to data on the server
.
-.TH "MEMCACHED_AUTO" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_AUTO" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_auto \- Incrementing and Decrementing Values
.
-.TH "MEMCACHED_BEHAVIOR" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_BEHAVIOR" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_behavior \- libmemcached Documentation
.
-.TH "MEMCACHED_BEHAVIOR_GET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_BEHAVIOR_GET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_behavior_get \- libmemcached Documentation
.
-.TH "MEMCACHED_BEHAVIOR_SET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_BEHAVIOR_SET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_behavior_set \- libmemcached Documentation
.
-.TH "MEMCACHED_CALLBACK" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CALLBACK" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_callback \- libmemcached Documentation
.
-.TH "MEMCACHED_CALLBACK_GET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CALLBACK_GET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_callback_get \- libmemcached Documentation
.
-.TH "MEMCACHED_CALLBACK_SET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CALLBACK_SET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_callback_set \- libmemcached Documentation
.
-.TH "MEMCACHED_CAS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CAS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_cas \- Working with data on the server in an atomic fashion
.
-.TH "MEMCACHED_CAS_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CAS_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_cas_by_key \- Storing and Replacing Data
.
-.TH "MEMCACHED_CLONE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CLONE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_clone \- libmemcached Documentation
.
-.TH "MEMCACHED_CREATE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_CREATE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_create \- libmemcached Documentation
.
-.TH "MEMCACHED_DECREMENT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_DECREMENT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_decrement \- Incrementing and Decrementing Values
.
-.TH "MEMCACHED_DECREMENT_WITH_INITIAL" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_DECREMENT_WITH_INITIAL" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_decrement_with_initial \- Incrementing and Decrementing Values
.
-.TH "MEMCACHED_DELETE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_DELETE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_delete \- libmemcached Documentation
.
-.TH "MEMCACHED_DELETE_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_DELETE_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_delete_by_key \- libmemcached Documentation
.
-.TH "MEMCACHED_DESTROY_SASL_AUTH_DATA" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_DESTROY_SASL_AUTH_DATA" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_destroy_sasl_auth_data \- libmemcached Documentation
.
-.TH "MEMCACHED_DUMP" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_DUMP" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_dump \- libmemcached Documentation
.
-.TH "MEMCACHED_EXIST" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_EXIST" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_exist \- libmemcached Documentation
.
-.TH "MEMCACHED_EXIST_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_EXIST_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_exist_by_key \- libmemcached Documentation
.
-.TH "MEMCACHED_FETCH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_FETCH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_fetch \- Retrieving data from the server
.
-.TH "MEMCACHED_FETCH_EXECUTE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_FETCH_EXECUTE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_fetch_execute \- Retrieving data from the server
.
-.TH "MEMCACHED_FETCH_RESULT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_FETCH_RESULT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_fetch_result \- Retrieving data from the server
.
-.TH "MEMCACHED_FLUSH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_FLUSH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_flush \- libmemcached Documentation
.
-.TH "MEMCACHED_FLUSH_BUFFERS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_FLUSH_BUFFERS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_flush_buffers \- libmemcached Documentation
.
-.TH "MEMCACHED_FREE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_FREE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_free \- libmemcached Documentation
.
-.TH "MEMCACHED_GENERATE_HASH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GENERATE_HASH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_generate_hash \- Generating hash values directly
.
-.TH "MEMCACHED_GENERATE_HASH_VALUE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GENERATE_HASH_VALUE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_generate_hash_value \- Generating hash values directly
.
-.TH "MEMCACHED_GET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_get \- Retrieving data from the server
.
-.TH "MEMCACHED_GET_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GET_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_get_by_key \- Retrieving data from the server
.
-.TH "MEMCACHED_GET_MEMORY_ALLOCATORS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GET_MEMORY_ALLOCATORS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_get_memory_allocators \- libmemcached Documentation
.
-.TH "MEMCACHED_GET_SASL_CALLBACKS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GET_SASL_CALLBACKS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_get_sasl_callbacks \- libmemcached Documentation
.
-.TH "MEMCACHED_GET_USER_DATA" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_GET_USER_DATA" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_get_user_data \- libmemcached Documentation
.
-.TH "MEMCACHED_INCREMENT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_INCREMENT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_increment \- Incrementing and Decrementing Values
.
-.TH "MEMCACHED_INCREMENT_WITH_INITIAL" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_INCREMENT_WITH_INITIAL" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_increment_with_initial \- Incrementing and Decrementing Values
.
-.TH "MEMCACHED_LAST_ERROR_MESSAGE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_LAST_ERROR_MESSAGE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_last_error_message \- libmemcached Documentation
.
-.TH "MEMCACHED_LIB_VERSION" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_LIB_VERSION" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_lib_version \- libmemcached Documentation
.
-.TH "MEMCACHED_MEMORY_ALLOCATORS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_MEMORY_ALLOCATORS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_memory_allocators \- libmemcached Documentation
.
-.TH "MEMCACHED_MGET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_MGET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_mget \- Retrieving data from the server
.
-.TH "MEMCACHED_MGET_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_MGET_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_mget_by_key \- Retrieving data from the server
.
-.TH "MEMCACHED_MGET_EXECUTE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_MGET_EXECUTE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_mget_execute \- Retrieving data from the server
.
-.TH "MEMCACHED_MGET_EXECUTE_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_MGET_EXECUTE_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_mget_execute_by_key \- Retrieving data from the server
.
-.TH "MEMCACHED_POOL" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_BEHAVIOR_GET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_BEHAVIOR_GET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_behavior_get \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_BEHAVIOR_SET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_BEHAVIOR_SET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_behavior_set \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_CREATE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_CREATE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_create \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_DESTROY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_DESTROY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_destroy \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_FETCH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_FETCH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_fetch \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_POP" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_POP" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_pop \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_PUSH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_PUSH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_push \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_RELEASE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_RELEASE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_release \- libmemcached Documentation
.
-.TH "MEMCACHED_POOL_ST" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_POOL_ST" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_pool_st \- libmemcached Documentation
.
-.TH "MEMCACHED_PREPEND" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_PREPEND" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_prepend \- Appending to or Prepending to data on the server
.
-.TH "MEMCACHED_PREPEND_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_PREPEND_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_prepend_by_key \- Appending to or Prepending to data on the server
.
-.TH "MEMCACHED_QUIT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_QUIT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_quit \- libmemcached Documentation
.
-.TH "MEMCACHED_REPLACE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_REPLACE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_replace \- Storing and Replacing Data
.
-.TH "MEMCACHED_REPLACE_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_REPLACE_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_replace_by_key \- Storing and Replacing Data
.
-.TH "MEMCACHED_RESULT_CAS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_CAS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_cas \- Working with result sets
.
-.TH "MEMCACHED_RESULT_CREATE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_CREATE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_create \- Working with result sets
.
-.TH "MEMCACHED_RESULT_FLAGS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_FLAGS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_flags \- Working with result sets
.
-.TH "MEMCACHED_RESULT_FREE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_FREE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_free \- Working with result sets
.
-.TH "MEMCACHED_RESULT_KEY_LENGTH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_KEY_LENGTH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_key_length \- Working with result sets
.
-.TH "MEMCACHED_RESULT_KEY_VALUE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_KEY_VALUE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_key_value \- Working with result sets
.
-.TH "MEMCACHED_RESULT_LENGTH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_LENGTH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_length \- Working with result sets
.
-.TH "MEMCACHED_RESULT_ST" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_ST" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_st \- Working with result sets
.
-.TH "MEMCACHED_RESULT_VALUE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RESULT_VALUE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_result_value \- Working with result sets
.
-.TH "MEMCACHED_RETURN_T" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_RETURN_T" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_return_t \- Return type values
.
-.TH "MEMCACHED_SASL" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SASL" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_sasl \- libmemcached Documentation
.
-.TH "MEMCACHED_SASL_SET_AUTH_DATA" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SASL_SET_AUTH_DATA" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_sasl_set_auth_data \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_ADD" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_ADD" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_add \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_ADD_UNIX_SOCKET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_ADD_UNIX_SOCKET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_add_unix_socket \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_COUNT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_COUNT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_count \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_CURSOR" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_CURSOR" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_cursor \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_LIST" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_list \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_LIST_APPEND" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST_APPEND" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_list_append \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_LIST_COUNT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST_COUNT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_list_count \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_LIST_FREE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_LIST_FREE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_list_free \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_PUSH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_PUSH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_push \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVER_ST" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVER_ST" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_server_st \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVERS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVERS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_servers \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVERS_PARSE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVERS_PARSE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_servers_parse \- libmemcached Documentation
.
-.TH "MEMCACHED_SERVERS_RESET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SERVERS_RESET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_servers_reset \- libmemcached Documentation
.
-.TH "MEMCACHED_SET" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SET" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_set \- Storing and Replacing Data
.
-.TH "MEMCACHED_SET_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SET_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_set_by_key \- Storing and Replacing Data
.
-.TH "MEMCACHED_SET_MEMORY_ALLOCATORS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SET_MEMORY_ALLOCATORS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_set_memory_allocators \- libmemcached Documentation
.
-.TH "MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SET_MEMORY_ALLOCATORS_CONTEXT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_set_memory_allocators_context \- libmemcached Documentation
.
-.TH "MEMCACHED_SET_SASL_CALLBACKS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SET_SASL_CALLBACKS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_set_sasl_callbacks \- libmemcached Documentation
.
-.TH "MEMCACHED_SET_USER_DATA" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_SET_USER_DATA" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_set_user_data \- libmemcached Documentation
.
-.TH "MEMCACHED_STAT" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STAT" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_stat \- libmemcached Documentation
.
-.TH "MEMCACHED_STAT_EXECUTE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STAT_EXECUTE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_stat_execute \- libmemcached Documentation
.
-.TH "MEMCACHED_STAT_GET_KEYS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STAT_GET_KEYS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_stat_get_keys \- libmemcached Documentation
.
-.TH "MEMCACHED_STAT_GET_VALUE" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STAT_GET_VALUE" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_stat_get_value \- libmemcached Documentation
.
-.TH "MEMCACHED_STAT_SERVERNAME" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STAT_SERVERNAME" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_stat_servername \- libmemcached Documentation
.
-.TH "MEMCACHED_STATS" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STATS" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_stats \- libmemcached Documentation
.
-.TH "MEMCACHED_STRERROR" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_STRERROR" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_strerror \- libmemcached Documentation
.
-.TH "MEMCACHED_TOUCH" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_TOUCH" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_touch \- libmemcached Documentation
.
-.TH "MEMCACHED_TOUCH_BY_KEY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_TOUCH_BY_KEY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_touch_by_key \- libmemcached Documentation
.
-.TH "MEMCACHED_USER_DATA" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_USER_DATA" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_user_data \- libmemcached Documentation
.
-.TH "MEMCACHED_VERBOSITY" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_VERBOSITY" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_verbosity \- libmemcached Documentation
.
-.TH "MEMCACHED_VERSION" "3" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCACHED_VERSION" "3" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcached_version \- libmemcached Documentation
.
-.TH "MEMCAPABLE" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCAPABLE" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcapable \- libmemcached Documentation
.
-.TH "MEMCAT" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCAT" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcat \- libmemcached Documentation
.
-.TH "MEMCP" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMCP" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memcp \- libmemcached Documentation
.
-.TH "MEMDUMP" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMDUMP" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memdump \- libmemcached Documentation
.
-.TH "MEMERROR" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMERROR" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memerror \- libmemcached Documentation
.
-.TH "MEMFLUSH" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMFLUSH" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memflush \- libmemcached Documentation
.
-.TH "MEMRM" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMRM" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memrm \- libmemcached Documentation
.
-.TH "MEMSLAP" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMSLAP" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memslap \- libmemcached Documentation
.
-.TH "MEMSTAT" "1" "April 02, 2012" "1.0.5" "libmemcached"
+.TH "MEMSTAT" "1" "April 04, 2012" "1.0.5" "libmemcached"
.SH NAME
memstat \- libmemcached Documentation
.
new_clone->_namespace= memcached_array_clone(new_clone, source->_namespace);
new_clone->configure.filename= memcached_array_clone(new_clone, source->_namespace);
+ new_clone->configure.version= source->configure.version;
if (LIBMEMCACHED_WITH_SASL_SUPPORT and source->sasl.callbacks)
{
bool block,
memcached_return_t* rc);
LIBMEMCACHED_API
-memcached_return_t memcached_pool_push(memcached_pool_st* pool,
- memcached_st* mmc);
+ memcached_return_t memcached_pool_push(memcached_pool_st* pool,
+ memcached_st* mmc);
LIBMEMCACHED_API
memcached_return_t memcached_pool_release(memcached_pool_st* pool, memcached_st* mmc);
{
rc= MEMCACHED_SUCCESS;
- if (pthread_mutex_lock(&mutex))
+ int error;
+ if ((error= pthread_mutex_lock(&mutex)) != 0)
{
rc= MEMCACHED_IN_PROGRESS;
return NULL;
{
if (relative_time.tv_sec == 0 and relative_time.tv_nsec == 0)
{
- pthread_mutex_unlock(&mutex);
+ error= pthread_mutex_unlock(&mutex);
rc= MEMCACHED_NOTFOUND;
return NULL;
int thread_ret;
if ((thread_ret= pthread_cond_timedwait(&cond, &mutex, &time_to_wait)) != 0)
{
- pthread_mutex_unlock(&mutex);
+ int unlock_error;
+ if ((unlock_error= pthread_mutex_unlock(&mutex)) != 0)
+ {
+ }
if (thread_ret == ETIMEDOUT)
{
}
else if (grow_pool(this) == false)
{
- (void)pthread_mutex_unlock(&mutex);
+ int unlock_error;
+ if ((unlock_error= pthread_mutex_unlock(&mutex)) != 0)
+ {
+ }
+
return NULL;
}
} while (ret == NULL);
- pthread_mutex_unlock(&mutex);
+ if ((error= pthread_mutex_unlock(&mutex)) != 0)
+ {
+ }
return ret;
}
return false;
}
- if (pthread_mutex_lock(&mutex))
+ int error;
+ if ((error= pthread_mutex_lock(&mutex)))
{
rc= MEMCACHED_IN_PROGRESS;
return false;
if (firstfree == 0 and current_size == size)
{
/* we might have people waiting for a connection.. wake them up :-) */
- pthread_cond_broadcast(&cond);
+ if ((error= pthread_cond_broadcast(&cond)) != 0)
+ {
+ }
}
- (void)pthread_mutex_unlock(&mutex);
+ if ((error= pthread_mutex_unlock(&mutex)) != 0)
+ {
+ }
return true;
}
return MEMCACHED_INVALID_ARGUMENTS;
}
- if (pthread_mutex_lock(&pool->mutex))
+ int error;
+ if ((error= pthread_mutex_lock(&pool->mutex)))
{
return MEMCACHED_IN_PROGRESS;
}
memcached_return_t rc= memcached_behavior_set(pool->master, flag, data);
if (memcached_failed(rc))
{
- (void)pthread_mutex_unlock(&pool->mutex);
+ if ((error= pthread_mutex_unlock(&pool->mutex)) != 0)
+ {
+ }
return rc;
}
}
}
- (void)pthread_mutex_unlock(&pool->mutex);
+ if ((error= pthread_mutex_unlock(&pool->mutex)) != 0)
+ {
+ }
return rc;
}
return MEMCACHED_INVALID_ARGUMENTS;
}
- if (pthread_mutex_lock(&pool->mutex))
+ int error;
+ if ((error= pthread_mutex_lock(&pool->mutex)))
{
return MEMCACHED_IN_PROGRESS;
}
*value= memcached_behavior_get(pool->master, flag);
- (void)pthread_mutex_unlock(&pool->mutex);
+ if ((error= pthread_mutex_unlock(&pool->mutex)) != 0)
+ {
+ }
return MEMCACHED_SUCCESS;
}
return EXIT_FAILURE;
}
- if (getenv("TEST_COLLECTION"))
+ if (getenv("YATL_COLLECTION_TO_RUN"))
{
- if (strlen(getenv("TEST_COLLECTION")))
+ if (strlen(getenv("YATL_COLLECTION_TO_RUN")))
{
- collection_to_run= getenv("TEST_COLLECTION");
+ collection_to_run= getenv("YATL_COLLECTION_TO_RUN");
}
}
valgrind-cycle: tests/cycle
$(VALGRIND_COMMAND) tests/cycle
-valgrind-mem: tests/testapp
- @$(VALGRIND_COMMAND) tests/testapp
+valgrind-mem: tests/libmemcached-1.0/testapp
+ @$(VALGRIND_COMMAND) tests/libmemcached-1.0/testapp
valgrind-failure: tests/failure
@$(VALGRIND_COMMAND) tests/failure
helgrind-cycle: tests/cycle
@$(HELGRIND_COMMAND) tests/cycle
-helgrind-mem: tests/testapp
- @$(HELGRIND_COMMAND) tests/testapp
+helgrind-mem: tests/libmemcached-1.0/testapp
+ @$(HELGRIND_COMMAND) tests/libmemcached-1.0/testapp
helgrind-atom: tests/atomsmasher
@$(HELGRIND_COMMAND) tests/atomsmasher
{0, 0, (test_callback_fn*)0}
};
+test_st pool_TESTS[] ={
+ {"lp:962815", true, (test_callback_fn*)regression_bug_962815 },
+ {0, 0, (test_callback_fn*)0}
+};
+
test_st namespace_tests[] ={
{"basic tests", true, (test_callback_fn*)selection_of_namespace_tests },
{"increment", true, (test_callback_fn*)memcached_increment_namespace },
{"touch", 0, 0, touch_tests},
{"touch", (test_callback_fn*)pre_binary, 0, touch_tests},
{"memcached_stat()", 0, 0, memcached_stat_tests},
+ {"memcached_pool_create()", 0, 0, pool_TESTS},
{"kill()", 0, 0, kill_TESTS},
{0, 0, 0, 0}
};
#include <semaphore.h>
-#include <libmemcached/memcached.h>
-#include <libmemcached/util.h>
+#include <libmemcached-1.0/memcached.h>
+#include <libmemcachedutil-1.0/util.h>
+#include <libmemcached/is.h>
#include <tests/pool.h>
+#include <pthread.h>
+#include <poll.h>
+
#ifndef __INTEL_COMPILER
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif
return TEST_SUCCESS;
}
+
+static memcached_st * create_single_instance_memcached(const memcached_st *original_memc, const char *options)
+{
+ /*
+ If no options are given, copy over at least the binary flag.
+ */
+ char options_buffer[1024]= { 0 };
+ if (options == NULL)
+ {
+ if (memcached_is_binary(original_memc))
+ {
+ snprintf(options_buffer, sizeof(options_buffer), "--BINARY");
+ }
+ }
+
+ /*
+ * I only want to hit _one_ server so I know the number of requests I'm
+ * sending in the pipeline.
+ */
+ memcached_server_instance_st instance= memcached_server_instance_by_position(original_memc, 0);
+
+ char server_string[1024];
+ int server_string_length;
+ if (instance->type == MEMCACHED_CONNECTION_UNIX_SOCKET)
+ {
+ if (options)
+ {
+ server_string_length= snprintf(server_string, sizeof(server_string), "--SOCKET=\"%s\" %s",
+ memcached_server_name(instance), options);
+ }
+ else
+ {
+ server_string_length= snprintf(server_string, sizeof(server_string), "--SOCKET=\"%s\"",
+ memcached_server_name(instance));
+ }
+ }
+ else
+ {
+ if (options)
+ {
+ server_string_length= snprintf(server_string, sizeof(server_string), "--server=%s:%d %s",
+ memcached_server_name(instance), int(memcached_server_port(instance)),
+ options);
+ }
+ else
+ {
+ server_string_length= snprintf(server_string, sizeof(server_string), "--server=%s:%d",
+ memcached_server_name(instance), int(memcached_server_port(instance)));
+ }
+ }
+
+ if (server_string_length <= 0)
+ {
+ return NULL;
+ }
+
+ char errror_buffer[1024];
+ if (memcached_failed(libmemcached_check_configuration(server_string, server_string_length, errror_buffer, sizeof(errror_buffer))))
+ {
+ Error << "Failed to parse (" << server_string << ") " << errror_buffer;
+ return NULL;
+ }
+
+ return memcached(server_string, server_string_length);
+}
+
+pthread_mutex_t mutex= PTHREAD_MUTEX_INITIALIZER;
+static bool _running= false;
+
+static void set_running(const bool arg)
+{
+ int error;
+ if ((error= pthread_mutex_lock(&mutex)) != 0)
+ {
+ fatal_message(strerror(error));
+ }
+
+ _running= arg;
+
+ if ((error= pthread_mutex_unlock(&mutex)) != 0)
+ {
+ fatal_message(strerror(error));
+ }
+}
+
+static bool running()
+{
+ int error;
+ bool ret;
+
+ if ((error= pthread_mutex_lock(&mutex)) != 0)
+ {
+ fatal_message(strerror(error));
+ }
+
+ ret= _running;
+
+ if ((error= pthread_mutex_unlock(&mutex)) != 0)
+ {
+ fatal_message(strerror(error));
+ }
+
+ return ret;
+}
+
+static void *worker_thread(void *ctx)
+{
+ memcached_pool_st *pool= (memcached_pool_st *)ctx;
+
+ while (running())
+ {
+ memcached_return_t rc;
+ memcached_st *mc= memcached_pool_pop(pool, true, &rc);
+
+ if (mc == NULL)
+ {
+ Error << "failed to fetch a connection from the pool" << memcached_strerror(NULL, rc);
+ dream(1, 0);
+ continue;
+ }
+
+ rc= memcached_set(mc, "test:kv", 7, "value", 5, 600, 0);
+ if (memcached_failed(rc))
+ {
+ Out << "failed memcached_set()";
+ }
+
+ rc= memcached_pool_push(pool, mc);
+ if (memcached_failed(rc))
+ {
+ Error << "failed to release a connection to the pool" << memcached_strerror(NULL, rc);
+ }
+ }
+
+ return NULL;
+}
+
+#define NUM_THREADS 20
+test_return_t regression_bug_962815(memcached_st *memc)
+{
+ pthread_t pid[NUM_THREADS];
+
+ test_false(running());
+
+ memcached_st *master = create_single_instance_memcached(memc, 0);
+ test_true(master);
+
+ memcached_pool_st *pool= memcached_pool_create(master, 5, 10);
+
+ test_true(pool);
+
+ set_running(true);
+
+ for (size_t x=0; x < NUM_THREADS; x++)
+ {
+ test_compare(0, pthread_create(&pid[x], NULL, worker_thread, (void*)pool));
+ }
+
+ {
+ pollfd fds[1];
+ memset(fds, 0, sizeof(pollfd));
+ fds[0].fd= -1; //STDIN_FILENO;
+ fds[0].events= POLLIN;
+ fds[0].revents= 0;
+
+ int active_fd;
+ if ((active_fd= poll(fds, 1, 5000)) == -1)
+ {
+ Error << "poll() failed with:" << strerror(errno);
+ }
+ set_running(false);
+ }
+
+ for (size_t x=0; x < NUM_THREADS; x++)
+ {
+ test_compare(0, pthread_join(pid[x], NULL));
+ }
+
+ if (pool)
+ {
+ memcached_pool_destroy(pool);
+ }
+
+ if (master)
+ {
+ memcached_free(master);
+ }
+
+ return TEST_SUCCESS;
+}
test_return_t connection_pool_test(memcached_st *);
test_return_t connection_pool2_test(memcached_st *);
test_return_t connection_pool3_test(memcached_st *);
+test_return_t regression_bug_962815(memcached_st *);