projects
/
awesomized
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix a logic error on memcached_server_remove which will cause double free problem
[awesomized/libmemcached]
/
tests
/
function.c
diff --git
a/tests/function.c
b/tests/function.c
index e37aabef4e488cd61faac157f58bcc6cb2978b47..fb7abd6fb96ea594e1381c4b8cc80be6c755d22e 100644
(file)
--- a/
tests/function.c
+++ b/
tests/function.c
@@
-2597,16
+2597,26
@@
memcached_return pre_behavior_ketama_weighted(memcached_st *memc)
memcached_return pre_binary(memcached_st *memc)
{
memcached_return pre_binary(memcached_st *memc)
{
- memcached_return rc;
-
- rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
- assert(rc == MEMCACHED_SUCCESS);
+ memcached_return rc= MEMCACHED_FAILURE;
+ memcached_st *clone;
- assert(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) == 1);
+ clone= memcached_clone(NULL, memc);
+ assert(clone);
+ // The memcached_version needs to be done on a clone, because the server
+ // will not toggle protocol on an connection.
+ memcached_version(clone);
- return MEMCACHED_SUCCESS;
+ if (clone->hosts[0].major_version >= 1 && clone->hosts[0].minor_version > 2)
+ {
+ rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
+ assert(rc == MEMCACHED_SUCCESS);
+ assert(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) == 1);
+ }
+ memcached_free(clone);
+ return rc;
}
}
+
void my_free(memcached_st *ptr, void *mem)
{
free(mem);
void my_free(memcached_st *ptr, void *mem)
{
free(mem);
@@
-2813,6
+2823,14
@@
memcached_return pre_nodelay(memcached_st *memc)
return MEMCACHED_SUCCESS;
}
return MEMCACHED_SUCCESS;
}
+memcached_return pre_settimer(memcached_st *memc)
+{
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SND_TIMEOUT, 1000);
+ memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_RCV_TIMEOUT, 1000);
+
+ return MEMCACHED_SUCCESS;
+}
+
memcached_return poll_timeout(memcached_st *memc)
{
int32_t timeout;
memcached_return poll_timeout(memcached_st *memc)
{
int32_t timeout;
@@
-2962,6
+2980,7
@@
collection_st collection[] ={
{"binary", pre_binary, 0, tests},
{"nonblock", pre_nonblock, 0, tests},
{"nodelay", pre_nodelay, 0, tests},
{"binary", pre_binary, 0, tests},
{"nonblock", pre_nonblock, 0, tests},
{"nodelay", pre_nodelay, 0, tests},
+ {"settimer", pre_settimer, 0, tests},
{"md5", pre_md5, 0, tests},
{"crc", pre_crc, 0, tests},
{"hsieh", pre_hsieh, 0, tests},
{"md5", pre_md5, 0, tests},
{"crc", pre_crc, 0, tests},
{"hsieh", pre_hsieh, 0, tests},