memcached 1.2.6 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (225) hide show
  1. data/CHANGELOG +2 -0
  2. data/Manifest +206 -12
  3. data/Rakefile +32 -1
  4. data/ext/extconf.rb +10 -35
  5. data/ext/libmemcached-0.32/AUTHORS +7 -0
  6. data/ext/libmemcached-0.32/COPYING +32 -0
  7. data/ext/libmemcached-0.32/ChangeLog +303 -0
  8. data/ext/libmemcached-0.32/INSTALL +302 -0
  9. data/ext/libmemcached-0.32/Makefile.am +36 -0
  10. data/ext/libmemcached-0.32/Makefile.in +828 -0
  11. data/ext/libmemcached-0.32/NEWS +1 -0
  12. data/ext/libmemcached-0.32/README +33 -0
  13. data/ext/libmemcached-0.32/THANKS +14 -0
  14. data/ext/libmemcached-0.32/TODO +11 -0
  15. data/ext/libmemcached-0.32/aclocal.m4 +1852 -0
  16. data/ext/libmemcached-0.32/clients/Makefile.am +73 -0
  17. data/ext/libmemcached-0.32/clients/Makefile.in +770 -0
  18. data/ext/libmemcached-0.32/clients/client_options.h +32 -0
  19. data/ext/libmemcached-0.32/clients/execute.c +64 -0
  20. data/ext/libmemcached-0.32/clients/execute.h +5 -0
  21. data/ext/libmemcached-0.32/clients/generator.c +74 -0
  22. data/ext/libmemcached-0.32/clients/generator.h +20 -0
  23. data/ext/libmemcached-0.32/clients/memcat.c +178 -0
  24. data/ext/libmemcached-0.32/clients/memcp.c +251 -0
  25. data/ext/libmemcached-0.32/clients/memdump.c +170 -0
  26. data/ext/libmemcached-0.32/clients/memerror.c +80 -0
  27. data/ext/libmemcached-0.32/clients/memflush.c +143 -0
  28. data/ext/libmemcached-0.32/clients/memrm.c +160 -0
  29. data/ext/libmemcached-0.32/clients/memslap.c +441 -0
  30. data/ext/libmemcached-0.32/clients/memstat.c +326 -0
  31. data/ext/libmemcached-0.32/clients/utilities.c +207 -0
  32. data/ext/libmemcached-0.32/clients/utilities.h +41 -0
  33. data/ext/libmemcached-0.32/config.h.in +252 -0
  34. data/ext/libmemcached-0.32/config/compile +143 -0
  35. data/ext/libmemcached-0.32/config/config.guess +1561 -0
  36. data/ext/libmemcached-0.32/config/config.rpath +666 -0
  37. data/ext/libmemcached-0.32/config/config.sub +1686 -0
  38. data/ext/libmemcached-0.32/config/depcomp +630 -0
  39. data/ext/libmemcached-0.32/config/install-sh +520 -0
  40. data/ext/libmemcached-0.32/config/ltmain.sh +8406 -0
  41. data/ext/libmemcached-0.32/config/missing +376 -0
  42. data/ext/libmemcached-0.32/configure +23048 -0
  43. data/ext/libmemcached-0.32/configure.ac +122 -0
  44. data/ext/libmemcached-0.32/docs/Makefile.am +415 -0
  45. data/ext/libmemcached-0.32/docs/Makefile.in +918 -0
  46. data/ext/libmemcached-0.32/docs/libmemcached.pod +123 -0
  47. data/ext/libmemcached-0.32/docs/libmemcached_examples.pod +115 -0
  48. data/ext/libmemcached-0.32/docs/libmemcachedutil.pod +40 -0
  49. data/ext/libmemcached-0.32/docs/memcached_analyze.pod +52 -0
  50. data/ext/libmemcached-0.32/docs/memcached_auto.pod +97 -0
  51. data/ext/libmemcached-0.32/docs/memcached_behavior.pod +224 -0
  52. data/ext/libmemcached-0.32/docs/memcached_callback.pod +123 -0
  53. data/ext/libmemcached-0.32/docs/memcached_create.pod +61 -0
  54. data/ext/libmemcached-0.32/docs/memcached_delete.pod +54 -0
  55. data/ext/libmemcached-0.32/docs/memcached_dump.pod +53 -0
  56. data/ext/libmemcached-0.32/docs/memcached_flush.pod +46 -0
  57. data/ext/libmemcached-0.32/docs/memcached_flush_buffers.pod +42 -0
  58. data/ext/libmemcached-0.32/docs/memcached_generate_hash_value.pod +57 -0
  59. data/ext/libmemcached-0.32/docs/memcached_get.pod +161 -0
  60. data/ext/libmemcached-0.32/docs/memcached_memory_allocators.pod +73 -0
  61. data/ext/libmemcached-0.32/docs/memcached_pool.pod +77 -0
  62. data/ext/libmemcached-0.32/docs/memcached_quit.pod +47 -0
  63. data/ext/libmemcached-0.32/docs/memcached_sasl.pod +63 -0
  64. data/ext/libmemcached-0.32/docs/memcached_server_st.pod +75 -0
  65. data/ext/libmemcached-0.32/docs/memcached_servers.pod +102 -0
  66. data/ext/libmemcached-0.32/docs/memcached_set.pod +187 -0
  67. data/ext/libmemcached-0.32/docs/memcached_stats.pod +82 -0
  68. data/ext/libmemcached-0.32/docs/memcached_strerror.pod +46 -0
  69. data/ext/libmemcached-0.32/docs/memcached_user_data.pod +49 -0
  70. data/ext/libmemcached-0.32/docs/memcached_verbosity.pod +41 -0
  71. data/ext/libmemcached-0.32/docs/memcached_version.pod +56 -0
  72. data/ext/libmemcached-0.32/docs/memcat.pod +37 -0
  73. data/ext/libmemcached-0.32/docs/memcp.pod +40 -0
  74. data/ext/libmemcached-0.32/docs/memdump.pod +31 -0
  75. data/ext/libmemcached-0.32/docs/memerror.pod +30 -0
  76. data/ext/libmemcached-0.32/docs/memflush.pod +35 -0
  77. data/ext/libmemcached-0.32/docs/memrm.pod +34 -0
  78. data/ext/libmemcached-0.32/docs/memslap.pod +33 -0
  79. data/ext/libmemcached-0.32/docs/memstat.pod +35 -0
  80. data/ext/libmemcached-0.32/libmemcached/Makefile.am +107 -0
  81. data/ext/libmemcached-0.32/libmemcached/Makefile.in +1050 -0
  82. data/ext/libmemcached-0.32/libmemcached/byteorder.c +31 -0
  83. data/ext/libmemcached-0.32/libmemcached/common.h +183 -0
  84. data/ext/libmemcached-0.32/libmemcached/crc.c +86 -0
  85. data/ext/libmemcached-0.32/libmemcached/hsieh_hash.c +68 -0
  86. data/ext/libmemcached-0.32/libmemcached/jenkins_hash.c +213 -0
  87. data/ext/libmemcached-0.32/libmemcached/libmemcached.ver +1 -0
  88. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.d +28 -0
  89. data/ext/libmemcached-0.32/libmemcached/libmemcached_probes.h +78 -0
  90. data/ext/libmemcached-0.32/libmemcached/md5.c +354 -0
  91. data/ext/libmemcached-0.32/libmemcached/memcached.c +152 -0
  92. data/ext/libmemcached-0.32/libmemcached/memcached.h +302 -0
  93. data/ext/libmemcached-0.32/libmemcached/memcached.hpp +799 -0
  94. data/ext/libmemcached-0.32/libmemcached/memcached/README.txt +7 -0
  95. data/ext/libmemcached-0.32/libmemcached/memcached/protocol_binary.h +366 -0
  96. data/ext/libmemcached-0.32/libmemcached/memcached_allocators.c +72 -0
  97. data/ext/libmemcached-0.32/libmemcached/memcached_analyze.c +100 -0
  98. data/ext/libmemcached-0.32/libmemcached/memcached_auto.c +207 -0
  99. data/ext/libmemcached-0.32/libmemcached/memcached_behavior.c +285 -0
  100. data/ext/libmemcached-0.32/libmemcached/memcached_callback.c +175 -0
  101. data/ext/libmemcached-0.32/libmemcached/memcached_configure.h.in +23 -0
  102. data/ext/libmemcached-0.32/libmemcached/memcached_connect.c +361 -0
  103. data/ext/libmemcached-0.32/libmemcached/memcached_constants.h +145 -0
  104. data/ext/libmemcached-0.32/libmemcached/memcached_delete.c +0 -0
  105. data/ext/libmemcached-0.32/libmemcached/memcached_do.c +34 -0
  106. data/ext/libmemcached-0.32/libmemcached/memcached_dump.c +79 -0
  107. data/ext/libmemcached-0.32/libmemcached/memcached_fetch.c +102 -0
  108. data/ext/libmemcached-0.32/libmemcached/memcached_flush.c +89 -0
  109. data/ext/libmemcached-0.32/libmemcached/memcached_flush_buffers.c +22 -0
  110. data/ext/libmemcached-0.32/libmemcached/memcached_get.c +495 -0
  111. data/ext/libmemcached-0.32/libmemcached/memcached_get.h +87 -0
  112. data/ext/libmemcached-0.32/libmemcached/memcached_hash.c +252 -0
  113. data/ext/libmemcached-0.32/libmemcached/memcached_hosts.c +510 -0
  114. data/ext/libmemcached-0.32/libmemcached/memcached_internal.h +31 -0
  115. data/ext/libmemcached-0.32/libmemcached/memcached_io.c +547 -0
  116. data/ext/libmemcached-0.32/libmemcached/memcached_io.h +59 -0
  117. data/ext/libmemcached-0.32/libmemcached/memcached_key.c +28 -0
  118. data/ext/libmemcached-0.32/libmemcached/memcached_parse.c +74 -0
  119. data/ext/libmemcached-0.32/libmemcached/memcached_pool.h +38 -0
  120. data/ext/libmemcached-0.32/libmemcached/memcached_purge.c +76 -0
  121. data/ext/libmemcached-0.32/libmemcached/memcached_quit.c +75 -0
  122. data/ext/libmemcached-0.32/libmemcached/memcached_response.c +528 -0
  123. data/ext/libmemcached-0.32/libmemcached/memcached_result.c +57 -0
  124. data/ext/libmemcached-0.32/libmemcached/memcached_result.h +59 -0
  125. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.c +225 -0
  126. data/ext/libmemcached-0.32/libmemcached/memcached_sasl.h +44 -0
  127. data/ext/libmemcached-0.32/libmemcached/memcached_server.c +159 -0
  128. data/ext/libmemcached-0.32/libmemcached/memcached_server.h +93 -0
  129. data/ext/libmemcached-0.32/libmemcached/memcached_stats.c +454 -0
  130. data/ext/libmemcached-0.32/libmemcached/memcached_storage.c +514 -0
  131. data/ext/libmemcached-0.32/libmemcached/memcached_storage.h +107 -0
  132. data/ext/libmemcached-0.32/libmemcached/memcached_strerror.c +92 -0
  133. data/ext/libmemcached-0.32/libmemcached/memcached_string.c +138 -0
  134. data/ext/libmemcached-0.32/libmemcached/memcached_string.h +53 -0
  135. data/ext/libmemcached-0.32/libmemcached/memcached_types.h +44 -0
  136. data/ext/libmemcached-0.32/libmemcached/memcached_util.h +15 -0
  137. data/ext/libmemcached-0.32/libmemcached/memcached_verbosity.c +36 -0
  138. data/ext/libmemcached-0.32/libmemcached/memcached_version.c +112 -0
  139. data/ext/libmemcached-0.32/libmemcached/memcached_watchpoint.h +38 -0
  140. data/ext/libmemcached-0.32/libmemcached/murmur_hash.c +76 -0
  141. data/ext/libmemcached-0.32/libmemcached/visibility.h +51 -0
  142. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.am +11 -0
  143. data/ext/libmemcached-0.32/libmemcachedutil/Makefile.in +602 -0
  144. data/ext/libmemcached-0.32/libmemcachedutil/libmemcachedutil.ver +1 -0
  145. data/ext/libmemcached-0.32/libmemcachedutil/memcached_pool.c +170 -0
  146. data/ext/libmemcached-0.32/m4/ac_cxx_compile_stdcxx_0x.m4 +103 -0
  147. data/ext/libmemcached-0.32/m4/ac_cxx_header_stdcxx_98.m4 +67 -0
  148. data/ext/libmemcached-0.32/m4/acx_pthread.m4 +276 -0
  149. data/ext/libmemcached-0.32/m4/byteorder.m4 +40 -0
  150. data/ext/libmemcached-0.32/m4/deprecated.m4 +17 -0
  151. data/ext/libmemcached-0.32/m4/enable_utillib.m4 +16 -0
  152. data/ext/libmemcached-0.32/m4/extensions.m4 +94 -0
  153. data/ext/libmemcached-0.32/m4/hsieh.m4 +18 -0
  154. data/ext/libmemcached-0.32/m4/lib-prefix.m4 +221 -0
  155. data/ext/libmemcached-0.32/m4/libtool.m4 +7360 -0
  156. data/ext/libmemcached-0.32/m4/ltoptions.m4 +368 -0
  157. data/ext/libmemcached-0.32/m4/ltsugar.m4 +123 -0
  158. data/ext/libmemcached-0.32/m4/ltversion.m4 +23 -0
  159. data/ext/libmemcached-0.32/m4/lt~obsolete.m4 +92 -0
  160. data/ext/libmemcached-0.32/m4/memcached.m4 +30 -0
  161. data/ext/libmemcached-0.32/m4/pandora_64bit.m4 +55 -0
  162. data/ext/libmemcached-0.32/m4/pandora_canonical.m4 +151 -0
  163. data/ext/libmemcached-0.32/m4/pandora_check_compiler_version.m4 +37 -0
  164. data/ext/libmemcached-0.32/m4/pandora_check_cxx_standard.m4 +16 -0
  165. data/ext/libmemcached-0.32/m4/pandora_enable_dtrace.m4 +41 -0
  166. data/ext/libmemcached-0.32/m4/pandora_ensure_gcc_version.m4 +36 -0
  167. data/ext/libmemcached-0.32/m4/pandora_have_better_malloc.m4 +54 -0
  168. data/ext/libmemcached-0.32/m4/pandora_have_sasl.m4 +133 -0
  169. data/ext/libmemcached-0.32/m4/pandora_header_assert.m4 +23 -0
  170. data/ext/libmemcached-0.32/m4/pandora_libtool.m4 +15 -0
  171. data/ext/libmemcached-0.32/m4/pandora_optimize.m4 +79 -0
  172. data/ext/libmemcached-0.32/m4/pandora_shared_ptr.m4 +56 -0
  173. data/ext/libmemcached-0.32/m4/pandora_vc_build.m4 +32 -0
  174. data/ext/libmemcached-0.32/m4/pandora_warnings.m4 +262 -0
  175. data/ext/libmemcached-0.32/m4/pod2man.m4 +7 -0
  176. data/ext/libmemcached-0.32/m4/protocol_binary.m4 +23 -0
  177. data/ext/libmemcached-0.32/m4/setsockopt.m4 +57 -0
  178. data/ext/libmemcached-0.32/m4/visibility.m4 +52 -0
  179. data/ext/libmemcached-0.32/support/Makefile.am +4 -0
  180. data/ext/libmemcached-0.32/support/Makefile.in +485 -0
  181. data/ext/libmemcached-0.32/support/libmemcached-fc.spec.in +105 -0
  182. data/ext/libmemcached-0.32/support/libmemcached.pc.in +10 -0
  183. data/ext/libmemcached-0.32/support/libmemcached.spec +105 -0
  184. data/ext/libmemcached-0.32/support/libmemcached.spec.in +105 -0
  185. data/ext/libmemcached-0.32/support/set_benchmark.sh +5 -0
  186. data/ext/libmemcached-0.32/tests/Makefile.am +105 -0
  187. data/ext/libmemcached-0.32/tests/Makefile.in +748 -0
  188. data/ext/libmemcached-0.32/tests/atomsmasher.c +245 -0
  189. data/ext/libmemcached-0.32/tests/function.c +4781 -0
  190. data/ext/libmemcached-0.32/tests/ketama_test_cases.h +108 -0
  191. data/ext/libmemcached-0.32/tests/output.cmp +7 -0
  192. data/ext/libmemcached-0.32/tests/output.res +7 -0
  193. data/ext/libmemcached-0.32/tests/output2.res +46 -0
  194. data/ext/libmemcached-0.32/tests/plus.cpp +293 -0
  195. data/ext/libmemcached-0.32/tests/r/memcat.res +19 -0
  196. data/ext/libmemcached-0.32/tests/r/memcp.res +27 -0
  197. data/ext/libmemcached-0.32/tests/r/memrm.res +19 -0
  198. data/ext/libmemcached-0.32/tests/r/memslap.res +33 -0
  199. data/ext/libmemcached-0.32/tests/r/memstat.res +33 -0
  200. data/ext/libmemcached-0.32/tests/server.c +118 -0
  201. data/ext/libmemcached-0.32/tests/server.h +25 -0
  202. data/ext/libmemcached-0.32/tests/start.c +16 -0
  203. data/ext/libmemcached-0.32/tests/t/memcat.test +4 -0
  204. data/ext/libmemcached-0.32/tests/t/memcp.test +3 -0
  205. data/ext/libmemcached-0.32/tests/t/memrm.test +3 -0
  206. data/ext/libmemcached-0.32/tests/t/memslap.test +5 -0
  207. data/ext/libmemcached-0.32/tests/t/memstat.test +3 -0
  208. data/ext/libmemcached-0.32/tests/test.c +137 -0
  209. data/ext/libmemcached-0.32/tests/test.h +46 -0
  210. data/ext/libmemcached-0.32/tests/udp.c +76 -0
  211. data/memcached.gemspec +4 -4
  212. data/test/unit/memcached_test.rb +30 -0
  213. metadata +213 -16
  214. data/ext/libmemcached-0.32.tar.gz +0 -0
  215. data/ext/libmemcached-1.patch +0 -270
  216. data/ext/libmemcached-10.patch +0 -12
  217. data/ext/libmemcached-2.patch +0 -116
  218. data/ext/libmemcached-3.patch +0 -8
  219. data/ext/libmemcached-4.patch +0 -40
  220. data/ext/libmemcached-5.patch +0 -832
  221. data/ext/libmemcached-6.patch +0 -20
  222. data/ext/libmemcached-7.patch +0 -2989
  223. data/ext/libmemcached-8.patch +0 -137
  224. data/ext/libmemcached-9.patch +0 -13
  225. data/ext/sasl.patch +0 -29283
@@ -1,20 +0,0 @@
1
- diff --git a/libmemcached-0.32/libmemcached/memcached_quit.c b/libmemcached-0.32/libmemcached/memcached_quit.c
2
- index 9a200a1..80a03bc 100644
3
- --- a/libmemcached-0.32/libmemcached/memcached_quit.c
4
- +++ b/libmemcached-0.32/libmemcached/memcached_quit.c
5
- @@ -49,7 +49,14 @@ void memcached_quit_server(memcached_server_st *ptr, uint8_t io_death)
6
- memcached_server_response_reset(ptr);
7
- }
8
-
9
- - ptr->server_failure_counter++;
10
- + if (io_death)
11
- + {
12
- + ptr->server_failure_counter++;
13
- + }
14
- + else
15
- + {
16
- + ptr->server_failure_counter = 0;
17
- + }
18
- }
19
-
20
- void memcached_quit(memcached_st *ptr)
@@ -1,2989 +0,0 @@
1
- diff -ur a/libmemcached-0.32/docs/libmemcached.pod b/libmemcached-0.32/docs/libmemcached.pod
2
- --- a/libmemcached-0.32/docs/libmemcached.pod 2009-06-14 08:18:14.000000000 -0700
3
- +++ b/libmemcached-0.32/docs/libmemcached.pod 2011-03-02 21:44:44.000000000 -0800
4
- @@ -35,7 +35,7 @@
5
- Nearly all functions return a C<memcached_return> value.
6
- This value can be translated to a printable string with memcached_strerror(3).
7
-
8
- -Partitioning based on keys is supported in the library. Using the key partioning
9
- +Partitioning based on keys is supported in the library. Using the key partioning
10
- functions it is possible to group sets of object onto servers.
11
-
12
- C<memcached_st> structures are thread-safe, but each thread must
13
- @@ -44,13 +44,13 @@
14
- used in this library.
15
-
16
- If you are working with GNU autotools you will want to add the following to
17
- -your configure.ac to properly include libmemcached in your application.
18
- +your configure.ac to properly include libmemcached in your application.
19
-
20
- PKG_CHECK_MODULES(DEPS, libmemcached >= 0.8.0)
21
- AC_SUBST(DEPS_CFLAGS)
22
- AC_SUBST(DEPS_LIBS)
23
-
24
- -Some features of the library must be enabled through memcached_behavior_set().
25
- +Some features of the library must be enabled through memcached_behavior_set().
26
-
27
- Hope you enjoy it!
28
-
29
- @@ -73,10 +73,6 @@
30
-
31
- Default size of key (which includes the null pointer).
32
-
33
- -=item MEMCACHED_STRIDE
34
- -
35
- -This is the "stride" used in the consistent hash used between replicas.
36
- -
37
- =item MEMCACHED_MAX_HOST_LENGTH
38
-
39
- Maximum allowed size of the hostname.
40
- @@ -87,15 +83,15 @@
41
-
42
- =item MEMCACHED_MAJOR_VERSION
43
-
44
- -Major version value. Such as 1.23.4, would be 1
45
- +Major version value. Such as 1.23.4, would be 1
46
-
47
- =item MEMCACHED_MINOR_VERSION
48
-
49
- -Major version value. Such as 1.23.4, would be 23
50
- +Major version value. Such as 1.23.4, would be 23
51
-
52
- =item MEMCACHED_MICRO_VERSION
53
-
54
- -Major version value. Such as 1.23.4, would be 4
55
- +Major version value. Such as 1.23.4, would be 4
56
-
57
-
58
- =back
59
- diff -ur a/libmemcached-0.32/docs/memcached_behavior.pod b/libmemcached-0.32/docs/memcached_behavior.pod
60
- --- a/libmemcached-0.32/docs/memcached_behavior.pod 2009-06-27 10:46:16.000000000 -0700
61
- +++ b/libmemcached-0.32/docs/memcached_behavior.pod 2011-03-02 21:45:30.000000000 -0800
62
- @@ -32,7 +32,7 @@
63
-
64
- memcached_behavior_set() changes the value of a particular option of the
65
- client. It takes both a flag (listed below) and a value. For simple on or
66
- -off options you just need to pass in a value of 1. Calls to
67
- +off options you just need to pass in a value of 1. Calls to
68
- memcached_behavior_set() will flush and reset all connections.
69
-
70
- =over 4
71
- @@ -40,7 +40,7 @@
72
- =item MEMCACHED_BEHAVIOR_USE_UDP
73
-
74
- Causes libmemcached(3) to use the UDP transport when communicating
75
- -with a memcached server. Not all I/O operations are supported
76
- +with a memcached server. Not all I/O operations are supported
77
- when this behavior is enababled. The following operations will return
78
- C<MEMCACHED_NOT_SUPPORTED> when executed with the MEMCACHED_BEHAVIOR_USE_UDP
79
- enabled: memcached_version(), memcached_stat(), memcached_get(),
80
- @@ -50,7 +50,7 @@
81
- All other operations are supported but are executed in a 'fire-and-forget'
82
- mode, in which once the client has executed the operation, no attempt
83
- will be made to ensure the operation has been received and acted on by the
84
- -server.
85
- +server.
86
-
87
- libmemcached(3) does not allow TCP and UDP servers to be shared within
88
- the same libmemached(3) client 'instance'. An attempt to add a TCP server
89
- @@ -82,19 +82,19 @@
90
- =item MEMCACHED_BEHAVIOR_HASH
91
-
92
- Makes the default hashing algorithm for keys use MD5. The value can be set
93
- -to either MEMCACHED_HASH_DEFAULT, MEMCACHED_HASH_MD5, MEMCACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEMCACHED_HASH_FNV1_32, MEMCACHED_HASH_FNV1A_32, MEMCACHED_HASH_JENKINS, MEMCACHED_HASH_HSIEH, and MEMCACHED_HASH_MURMUR.
94
- +to either MEMCACHED_HASH_DEFAULT, MEMCACHED_HASH_MD5, MEMCACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEMCACHED_HASH_FNV1_32, MEMCACHED_HASH_FNV1A_32, MEMCACHED_HASH_JENKINS, MEMCACHED_HASH_HSIEH, and MEMCACHED_HASH_MURMUR.
95
- Each hash has it's advantages and it's weaknesses. If you dont know or dont care, just go with the default.
96
- -Support for MEMCACHED_HASH_HSIEH is a compile time option that is disabled by default. To enable support for this hashing algorithm, configure and build libmemcached with the --enable-hash_hsieh.
97
- +Support for MEMCACHED_HASH_HSIEH is a compile time option that is disabled by default. To enable support for this hashing algorithm, configure and build libmemcached with the --enable-hash_hsieh.
98
-
99
- =item MEMCACHED_BEHAVIOR_DISTRIBUTION
100
-
101
- Using this you can enable different means of distributing values to servers.
102
- The default method is MEMCACHED_DISTRIBUTION_MODULA. You can enable
103
- -consistent hashing by setting MEMCACHED_DISTRIBUTION_CONSISTENT.
104
- -Consistent hashing delivers better distribution and allows servers to be
105
- +consistent hashing by setting MEMCACHED_DISTRIBUTION_CONSISTENT.
106
- +Consistent hashing delivers better distribution and allows servers to be
107
- added to the cluster with minimal cache losses. Currently
108
- MEMCACHED_DISTRIBUTION_CONSISTENT is an alias for the value
109
- -MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA.
110
- +MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA.
111
-
112
- =item MEMCACHED_BEHAVIOR_CACHE_LOOKUPS
113
-
114
- @@ -117,7 +117,7 @@
115
- =item MEMCACHED_BEHAVIOR_KETAMA_HASH
116
-
117
- Sets the hashing algorithm for host mapping on continuum. The value can be set
118
- -to either MEMCACHED_HASH_DEFAULT, MEMCACHED_HASH_MD5, MEMCACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEMCACHED_HASH_FNV1_32, and MEMCACHED_HASH_FNV1A_32.
119
- +to either MEMCACHED_HASH_DEFAULT, MEMCACHED_HASH_MD5, MEMCACHED_HASH_CRC, MEMCACHED_HASH_FNV1_64, MEMCACHED_HASH_FNV1A_64, MEMCACHED_HASH_FNV1_32, and MEMCACHED_HASH_FNV1A_32.
120
-
121
- =item MEMCACHED_BEHAVIOR_POLL_TIMEOUT
122
-
123
- @@ -136,16 +136,16 @@
124
- Enabling buffered IO causes commands to "buffer" instead of being sent. Any
125
- action that gets data causes this buffer to be be sent to the remote
126
- connection. Quiting the connection or closing down the connection will also
127
- -cause the buffered data to be pushed to the remote connection.
128
- +cause the buffered data to be pushed to the remote connection.
129
-
130
- =item MEMCACHED_BEHAVIOR_VERIFY_KEY
131
-
132
- -Enabling this will cause libmemcached(3) to test all keys to verify that they
133
- +Enabling this will cause libmemcached(3) to test all keys to verify that they
134
- are valid keys.
135
-
136
- =item MEMCACHED_BEHAVIOR_SORT_HOSTS
137
-
138
- -Enabling this will cause hosts that are added to be placed in the host list in
139
- +Enabling this will cause hosts that are added to be placed in the host list in
140
- sorted order. This will defeat consisten hashing.
141
-
142
- =item MEMCACHED_BEHAVIOR_CONNECT_TIMEOUT
143
- @@ -165,7 +165,7 @@
144
-
145
- =item MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK
146
-
147
- -Set this value to tune the number of messages that may be sent before
148
- +Set this value to tune the number of messages that may be sent before
149
- libmemcached should start to automatically drain the input queue. Setting
150
- this value to high, may cause libmemcached to deadlock (trying to send data,
151
- but the send will block because the input buffer in the kernel is full).
152
- @@ -175,7 +175,7 @@
153
- Set this value to tune the number of bytes that may be sent before
154
- libmemcached should start to automatically drain the input queue (need
155
- at least 10 IO requests sent without reading the input buffer). Setting
156
- -this value to high, may cause libmemcached to deadlock (trying to send
157
- +this value to high, may cause libmemcached to deadlock (trying to send
158
- data, but the send will block because the input buffer in the kernel is full).
159
-
160
- =item MEMCACHED_BEHAVIOR_IO_KEY_PREFETCH
161
- @@ -192,15 +192,7 @@
162
- =item MEMCACHED_BEHAVIOR_NOREPLY
163
-
164
- Set this value to specify that you really don't care about the result
165
- -from your storage commands (set, add, replace, append, prepend).
166
- -
167
- -=item MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS
168
- -
169
- -If you just want "a poor mans HA", you may specify the numbers of
170
- -replicas libmemcached should store of each item (on different servers).
171
- -This replication does not dedicate certain memcached servers to store the
172
- -replicas in, but instead it will store the replicas together with all of the
173
- -other objects (on the 'n' next servers specified in your server list).
174
- +from your storage commands (set, add, replace, append, prepend).
175
-
176
- =back
177
-
178
- @@ -213,7 +205,7 @@
179
- =head1 NOTES
180
-
181
- memcached_behavior_set() in version .17 was changed from taking a pointer
182
- -to data value, to taking a uin64_t.
183
- +to data value, to taking a uin64_t.
184
-
185
- =head1 HOME
186
-
187
- diff -ur a/libmemcached-0.32/libmemcached/memcached.c b/libmemcached-0.32/libmemcached/memcached.c
188
- --- a/libmemcached-0.32/libmemcached/memcached.c 2011-03-02 20:23:03.000000000 -0800
189
- +++ b/libmemcached-0.32/libmemcached/memcached.c 2011-03-02 21:44:27.000000000 -0800
190
- @@ -108,7 +108,6 @@
191
- new_clone->io_msg_watermark= source->io_msg_watermark;
192
- new_clone->io_bytes_watermark= source->io_bytes_watermark;
193
- new_clone->io_key_prefetch= source->io_key_prefetch;
194
- - new_clone->number_of_replicas= source->number_of_replicas;
195
-
196
- if (source->hosts)
197
- rc= memcached_server_push(new_clone, source->hosts);
198
- diff -ur a/libmemcached-0.32/libmemcached/memcached.h b/libmemcached-0.32/libmemcached/memcached.h
199
- --- a/libmemcached-0.32/libmemcached/memcached.h 2011-03-02 20:23:03.000000000 -0800
200
- +++ b/libmemcached-0.32/libmemcached/memcached.h 2011-03-02 21:44:17.000000000 -0800
201
- @@ -112,7 +112,6 @@
202
- memcached_trigger_key get_key_failure;
203
- memcached_trigger_delete_key delete_trigger;
204
- char prefix_key[MEMCACHED_PREFIX_KEY_MAX_SIZE];
205
- - uint32_t number_of_replicas;
206
- uint32_t number_of_live_hosts;
207
- uint32_t *live_host_indices;
208
- uint32_t live_host_indices_size;
209
- diff -ur a/libmemcached-0.32/libmemcached/memcached_behavior.c b/libmemcached-0.32/libmemcached/memcached_behavior.c
210
- --- a/libmemcached-0.32/libmemcached/memcached_behavior.c 2009-09-15 13:32:40.000000000 -0700
211
- +++ b/libmemcached-0.32/libmemcached/memcached_behavior.c 2011-03-02 21:44:58.000000000 -0800
212
- @@ -1,10 +1,10 @@
213
- -#include "common.h"
214
- +#include "common.h"
215
- #include <time.h>
216
- #include <sys/types.h>
217
- #include <sys/socket.h>
218
- #include <netinet/tcp.h>
219
-
220
- -/*
221
- +/*
222
- This function is used to modify the behavior of running client.
223
-
224
- We quit all connections so we can reset the sockets.
225
- @@ -18,15 +18,12 @@
226
- ptr->flags&= ~temp_flag;
227
- }
228
-
229
- -memcached_return memcached_behavior_set(memcached_st *ptr,
230
- - memcached_behavior flag,
231
- +memcached_return memcached_behavior_set(memcached_st *ptr,
232
- + memcached_behavior flag,
233
- uint64_t data)
234
- {
235
- switch (flag)
236
- {
237
- - case MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS:
238
- - ptr->number_of_replicas= (uint32_t)data;
239
- - break;
240
- case MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK:
241
- ptr->io_msg_watermark= (uint32_t) data;
242
- break;
243
- @@ -38,18 +35,18 @@
244
- break;
245
- case MEMCACHED_BEHAVIOR_SND_TIMEOUT:
246
- ptr->snd_timeout= (int32_t)data;
247
- - break;
248
- + break;
249
- case MEMCACHED_BEHAVIOR_RCV_TIMEOUT:
250
- ptr->rcv_timeout= (int32_t)data;
251
- - break;
252
- + break;
253
- case MEMCACHED_BEHAVIOR_SERVER_FAILURE_LIMIT:
254
- ptr->server_failure_limit= (uint32_t)data;
255
- - break;
256
- + break;
257
- case MEMCACHED_BEHAVIOR_BINARY_PROTOCOL:
258
- if (data)
259
- set_behavior_flag(ptr, MEM_VERIFY_KEY, 0);
260
- set_behavior_flag(ptr, MEM_BINARY_PROTOCOL, data);
261
- - break;
262
- + break;
263
- case MEMCACHED_BEHAVIOR_SUPPORT_CAS:
264
- set_behavior_flag(ptr, MEM_SUPPORT_CAS, data);
265
- break;
266
- @@ -169,15 +166,13 @@
267
- return MEMCACHED_SUCCESS;
268
- }
269
-
270
- -uint64_t memcached_behavior_get(memcached_st *ptr,
271
- +uint64_t memcached_behavior_get(memcached_st *ptr,
272
- memcached_behavior flag)
273
- {
274
- memcached_flags temp_flag= MEM_NO_BLOCK;
275
-
276
- switch (flag)
277
- {
278
- - case MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS:
279
- - return ptr->number_of_replicas;
280
- case MEMCACHED_BEHAVIOR_IO_MSG_WATERMARK:
281
- return ptr->io_msg_watermark;
282
- case MEMCACHED_BEHAVIOR_IO_BYTES_WATERMARK:
283
- @@ -186,7 +181,7 @@
284
- return ptr->io_key_prefetch;
285
- case MEMCACHED_BEHAVIOR_BINARY_PROTOCOL:
286
- temp_flag= MEM_BINARY_PROTOCOL;
287
- - break;
288
- + break;
289
- case MEMCACHED_BEHAVIOR_SUPPORT_CAS:
290
- temp_flag= MEM_SUPPORT_CAS;
291
- break;
292
- @@ -244,7 +239,7 @@
293
- if ((memcached_connect(&ptr->hosts[0])) != MEMCACHED_SUCCESS)
294
- return 0;
295
-
296
- - if (getsockopt(ptr->hosts[0].fd, SOL_SOCKET,
297
- + if (getsockopt(ptr->hosts[0].fd, SOL_SOCKET,
298
- SO_SNDBUF, &sock_size, &sock_length))
299
- return 0; /* Zero means error */
300
-
301
- @@ -260,7 +255,7 @@
302
- if ((memcached_connect(&ptr->hosts[0])) != MEMCACHED_SUCCESS)
303
- return 0;
304
-
305
- - if (getsockopt(ptr->hosts[0].fd, SOL_SOCKET,
306
- + if (getsockopt(ptr->hosts[0].fd, SOL_SOCKET,
307
- SO_RCVBUF, &sock_size, &sock_length))
308
- return 0; /* Zero means error */
309
-
310
- diff -ur a/libmemcached-0.32/libmemcached/memcached_constants.h b/libmemcached-0.32/libmemcached/memcached_constants.h
311
- --- a/libmemcached-0.32/libmemcached/memcached_constants.h 2011-03-02 20:23:03.000000000 -0800
312
- +++ b/libmemcached-0.32/libmemcached/memcached_constants.h 2011-03-02 21:45:46.000000000 -0800
313
- @@ -104,8 +104,7 @@
314
- MEMCACHED_BEHAVIOR_HASH_WITH_PREFIX_KEY,
315
- MEMCACHED_BEHAVIOR_NOREPLY,
316
- MEMCACHED_BEHAVIOR_USE_UDP,
317
- - MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS,
318
- - MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS
319
- + MEMCACHED_BEHAVIOR_AUTO_EJECT_HOSTS
320
- } memcached_behavior;
321
-
322
- typedef enum {
323
- diff -ur a/libmemcached-0.32/libmemcached/memcached_delete.c b/libmemcached-0.32/libmemcached/memcached_delete.c
324
- --- a/libmemcached-0.32/libmemcached/memcached_delete.c 2009-07-29 22:47:46.000000000 -0700
325
- +++ b/libmemcached-0.32/libmemcached/memcached_delete.c 2011-03-02 20:21:55.000000000 -0800
326
- @@ -1,153 +0,0 @@
327
- -#include "common.h"
328
- -#include "memcached/protocol_binary.h"
329
- -
330
- -memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
331
- - time_t expiration)
332
- -{
333
- - return memcached_delete_by_key(ptr, key, key_length,
334
- - key, key_length, expiration);
335
- -}
336
- -
337
- -static inline memcached_return binary_delete(memcached_st *ptr,
338
- - unsigned int server_key,
339
- - const char *key,
340
- - size_t key_length,
341
- - uint8_t flush);
342
- -
343
- -memcached_return memcached_delete_by_key(memcached_st *ptr,
344
- - const char *master_key, size_t master_key_length,
345
- - const char *key, size_t key_length,
346
- - time_t expiration)
347
- -{
348
- - uint8_t to_write;
349
- - size_t send_length;
350
- - memcached_return rc;
351
- - char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
352
- - unsigned int server_key;
353
- -
354
- - LIBMEMCACHED_MEMCACHED_DELETE_START();
355
- -
356
- - rc= memcached_validate_key_length(key_length,
357
- - ptr->flags & MEM_BINARY_PROTOCOL);
358
- - unlikely (rc != MEMCACHED_SUCCESS)
359
- - return rc;
360
- -
361
- - unlikely (ptr->hosts == NULL || ptr->number_of_hosts == 0)
362
- - return MEMCACHED_NO_SERVERS;
363
- -
364
- - server_key= memcached_generate_hash(ptr, master_key, master_key_length);
365
- - to_write= (uint8_t) (ptr->flags & MEM_BUFFER_REQUESTS) ? 0 : 1;
366
- - bool no_reply= (ptr->flags & MEM_NOREPLY);
367
- -
368
- - if (ptr->flags & MEM_BINARY_PROTOCOL)
369
- - rc= binary_delete(ptr, server_key, key, key_length, to_write);
370
- - else
371
- - {
372
- - if (expiration)
373
- - send_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
374
- - "delete %s%.*s %u%s\r\n",
375
- - ptr->prefix_key,
376
- - (int) key_length, key,
377
- - (uint32_t)expiration, no_reply ? " noreply" :"" );
378
- - else
379
- - send_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
380
- - "delete %s%.*s%s\r\n",
381
- - ptr->prefix_key,
382
- - (int)key_length, key, no_reply ? " noreply" :"");
383
- -
384
- - if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE)
385
- - {
386
- - rc= MEMCACHED_WRITE_FAILURE;
387
- - goto error;
388
- - }
389
- -
390
- - if (ptr->flags & MEM_USE_UDP && !to_write)
391
- - {
392
- - if (send_length > MAX_UDP_DATAGRAM_LENGTH - UDP_DATAGRAM_HEADER_LENGTH)
393
- - return MEMCACHED_WRITE_FAILURE;
394
- - if (send_length + ptr->hosts[server_key].write_buffer_offset > MAX_UDP_DATAGRAM_LENGTH)
395
- - memcached_io_write(&ptr->hosts[server_key], NULL, 0, 1);
396
- - }
397
- -
398
- - rc= memcached_do(&ptr->hosts[server_key], buffer, send_length, to_write);
399
- - }
400
- -
401
- - if (rc != MEMCACHED_SUCCESS)
402
- - goto error;
403
- -
404
- - if ((ptr->flags & MEM_BUFFER_REQUESTS))
405
- - rc= MEMCACHED_BUFFERED;
406
- - else if (!no_reply)
407
- - {
408
- - rc= memcached_response(&ptr->hosts[server_key], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
409
- - if (rc == MEMCACHED_DELETED)
410
- - rc= MEMCACHED_SUCCESS;
411
- - }
412
- -
413
- - if (rc == MEMCACHED_SUCCESS && ptr->delete_trigger)
414
- - ptr->delete_trigger(ptr, key, key_length);
415
- -
416
- -error:
417
- - LIBMEMCACHED_MEMCACHED_DELETE_END();
418
- - return rc;
419
- -}
420
- -
421
- -static inline memcached_return binary_delete(memcached_st *ptr,
422
- - unsigned int server_key,
423
- - const char *key,
424
- - size_t key_length,
425
- - uint8_t flush)
426
- -{
427
- - protocol_binary_request_delete request= {.bytes= {0}};
428
- -
429
- - request.message.header.request.magic= PROTOCOL_BINARY_REQ;
430
- - if (ptr->flags & MEM_NOREPLY)
431
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_DELETEQ;
432
- - else
433
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_DELETE;
434
- - request.message.header.request.keylen= htons((uint16_t)key_length);
435
- - request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
436
- - request.message.header.request.bodylen= htonl((uint32_t) key_length);
437
- -
438
- - if (ptr->flags & MEM_USE_UDP && !flush)
439
- - {
440
- - size_t cmd_size= sizeof(request.bytes) + key_length;
441
- - if (cmd_size > MAX_UDP_DATAGRAM_LENGTH - UDP_DATAGRAM_HEADER_LENGTH)
442
- - return MEMCACHED_WRITE_FAILURE;
443
- - if (cmd_size + ptr->hosts[server_key].write_buffer_offset > MAX_UDP_DATAGRAM_LENGTH)
444
- - memcached_io_write(&ptr->hosts[server_key], NULL, 0, 1);
445
- - }
446
- -
447
- - memcached_return rc= MEMCACHED_SUCCESS;
448
- -
449
- - if ((memcached_do(&ptr->hosts[server_key], request.bytes,
450
- - sizeof(request.bytes), 0) != MEMCACHED_SUCCESS) ||
451
- - (memcached_io_write(&ptr->hosts[server_key], key,
452
- - key_length, (char) flush) == -1))
453
- - {
454
- - memcached_io_reset(&ptr->hosts[server_key]);
455
- - rc= MEMCACHED_WRITE_FAILURE;
456
- - }
457
- -
458
- - unlikely (ptr->number_of_replicas > 0)
459
- - {
460
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_DELETEQ;
461
- -
462
- - for (uint32_t x= 0; x < ptr->number_of_replicas; ++x)
463
- - {
464
- - ++server_key;
465
- - if (server_key == ptr->number_of_hosts)
466
- - server_key= 0;
467
- -
468
- - memcached_server_st* server= &ptr->hosts[server_key];
469
- - if ((memcached_do(server, (const char*)request.bytes,
470
- - sizeof(request.bytes), 0) != MEMCACHED_SUCCESS) ||
471
- - (memcached_io_write(server, key, key_length, (char) flush) == -1))
472
- - memcached_io_reset(server);
473
- - else
474
- - memcached_server_response_decrement(server);
475
- - }
476
- - }
477
- -
478
- - return rc;
479
- -}
480
- diff -ur a/libmemcached-0.32/libmemcached/memcached_get.c b/libmemcached-0.32/libmemcached/memcached_get.c
481
- --- a/libmemcached-0.32/libmemcached/memcached_get.c 2011-03-02 20:23:03.000000000 -0800
482
- +++ b/libmemcached-0.32/libmemcached/memcached_get.c 2011-03-02 22:32:11.000000000 -0800
483
- @@ -1,12 +1,12 @@
484
- #include "common.h"
485
- #include "memcached_io.h"
486
-
487
- -/*
488
- +/*
489
- What happens if no servers exist?
490
- */
491
- -char *memcached_get(memcached_st *ptr, const char *key,
492
- - size_t key_length,
493
- - size_t *value_length,
494
- +char *memcached_get(memcached_st *ptr, const char *key,
495
- + size_t key_length,
496
- + size_t *value_length,
497
- uint32_t *flags,
498
- memcached_return *error)
499
- {
500
- @@ -15,25 +15,25 @@
501
- flags, error);
502
- }
503
-
504
- -char *memcached_get_len(memcached_st *ptr,
505
- +char *memcached_get_len(memcached_st *ptr,
506
- const char *key, size_t key_length,
507
- uint32_t user_spec_len,
508
- - size_t *value_length,
509
- + size_t *value_length,
510
- uint32_t *flags,
511
- memcached_return *error)
512
- {
513
- return memcached_get_by_key(ptr, NULL, 0, key, key_length,
514
- - user_spec_len, value_length,
515
- + user_spec_len, value_length,
516
- flags, error);
517
-
518
- }
519
-
520
- -char *memcached_get_by_key(memcached_st *ptr,
521
- - const char *master_key,
522
- - size_t master_key_length,
523
- +char *memcached_get_by_key(memcached_st *ptr,
524
- + const char *master_key,
525
- + size_t master_key_length,
526
- const char *key, size_t key_length,
527
- uint32_t user_spec_len,
528
- - size_t *value_length,
529
- + size_t *value_length,
530
- uint32_t *flags,
531
- memcached_return *error)
532
- {
533
- @@ -49,13 +49,13 @@
534
- }
535
-
536
- /* Request the key */
537
- - *error= memcached_mget_by_key(ptr,
538
- - master_key,
539
- - master_key_length,
540
- + *error= memcached_mget_by_key(ptr,
541
- + master_key,
542
- + master_key_length,
543
- (const char **)&key, &key_length, 1,
544
- user_spec_len);
545
-
546
- - value= memcached_fetch(ptr, NULL, NULL,
547
- + value= memcached_fetch(ptr, NULL, NULL,
548
- value_length, flags, error);
549
- /* This is for historical reasons */
550
- if (*error == MEMCACHED_END)
551
- @@ -69,7 +69,7 @@
552
-
553
- memcached_result_reset(&ptr->result);
554
- rc= ptr->get_key_failure(ptr, key, key_length, &ptr->result);
555
- -
556
- +
557
- /* On all failure drop to returning NULL */
558
- if (rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED)
559
- {
560
- @@ -80,7 +80,7 @@
561
- if (latch == 0)
562
- memcached_behavior_set(ptr, MEMCACHED_BEHAVIOR_BUFFER_REQUESTS, 1);
563
-
564
- - rc= memcached_set(ptr, key, key_length,
565
- + rc= memcached_set(ptr, key, key_length,
566
- memcached_result_value(&ptr->result),
567
- memcached_result_length(&ptr->result),
568
- 0, memcached_result_flags(&ptr->result));
569
- @@ -90,7 +90,7 @@
570
- }
571
- else
572
- {
573
- - rc= memcached_set(ptr, key, key_length,
574
- + rc= memcached_set(ptr, key, key_length,
575
- memcached_result_value(&ptr->result),
576
- memcached_result_length(&ptr->result),
577
- 0, memcached_result_flags(&ptr->result));
578
- @@ -109,24 +109,24 @@
579
- return NULL;
580
- }
581
-
582
- - (void)memcached_fetch(ptr, NULL, NULL,
583
- - &dummy_length, &dummy_flags,
584
- + (void)memcached_fetch(ptr, NULL, NULL,
585
- + &dummy_length, &dummy_flags,
586
- &dummy_error);
587
- WATCHPOINT_ASSERT(dummy_length == 0);
588
-
589
- return value;
590
- }
591
-
592
- -memcached_return memcached_mget(memcached_st *ptr,
593
- - const char **keys, size_t *key_length,
594
- +memcached_return memcached_mget(memcached_st *ptr,
595
- + const char **keys, size_t *key_length,
596
- size_t number_of_keys)
597
- {
598
- return memcached_mget_by_key(ptr, NULL, 0, keys, key_length, number_of_keys,
599
- GET_LEN_ARG_UNSPECIFIED);
600
- }
601
-
602
- -memcached_return memcached_mget_len(memcached_st *ptr,
603
- - const char **keys, size_t *key_length,
604
- +memcached_return memcached_mget_len(memcached_st *ptr,
605
- + const char **keys, size_t *key_length,
606
- size_t number_of_keys, uint32_t user_spec_len)
607
- {
608
- return memcached_mget_by_key(ptr, NULL, 0, keys, key_length, number_of_keys,
609
- @@ -145,11 +145,11 @@
610
- return (user_spec_len > 0 && user_spec_len < GET_LEN_ARG_UNSPECIFIED);
611
- }
612
-
613
- -memcached_return memcached_mget_by_key(memcached_st *ptr,
614
- - const char *master_key,
615
- +memcached_return memcached_mget_by_key(memcached_st *ptr,
616
- + const char *master_key,
617
- size_t master_key_length,
618
- - const char **keys,
619
- - size_t *key_length,
620
- + const char **keys,
621
- + size_t *key_length,
622
- size_t number_of_keys,
623
- uint32_t user_spec_len)
624
- {
625
- @@ -193,7 +193,7 @@
626
- return MEMCACHED_FAILURE;
627
- }
628
-
629
- - /*
630
- + /*
631
- Here is where we pay for the non-block API. We need to remove any data sitting
632
- in the queue before we start our get.
633
-
634
- @@ -212,13 +212,13 @@
635
- (void)memcached_response(&ptr->hosts[x], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, &ptr->result);
636
- }
637
- }
638
- -
639
- +
640
- if (ptr->flags & MEM_BINARY_PROTOCOL)
641
- - return binary_mget_by_key(ptr, master_server_key, is_master_key_set, keys,
642
- + return binary_mget_by_key(ptr, master_server_key, is_master_key_set, keys,
643
- key_length, number_of_keys);
644
-
645
- if (length_specified) {
646
- - if (use_cas)
647
- + if (use_cas)
648
- {
649
- get_command= "gets_len ";
650
- get_command_length= 9;
651
- @@ -227,7 +227,7 @@
652
- get_command_length= 8;
653
- }
654
- } else {
655
- - if (use_cas)
656
- + if (use_cas)
657
- {
658
- get_command= "gets ";
659
- get_command_length= 5;
660
- @@ -237,7 +237,7 @@
661
- }
662
- }
663
-
664
- - /*
665
- + /*
666
- If a server fails we warn about errors and start all over with sending keys
667
- to the server.
668
- */
669
- @@ -302,7 +302,7 @@
670
- rc= MEMCACHED_SOME_ERRORS;
671
- continue;
672
- }
673
- -
674
- +
675
- ptr->last_server_key = server_key;
676
- }
677
-
678
- @@ -329,7 +329,7 @@
679
- char *memcached_get_from_last(memcached_st *ptr,
680
- const char *key,
681
- size_t key_length,
682
- - size_t *value_length,
683
- + size_t *value_length,
684
- uint32_t *flags,
685
- memcached_return *error)
686
- {
687
- @@ -384,8 +384,8 @@
688
- uint32_t dummy_flags;
689
- memcached_return dummy_error;
690
-
691
- - (void)memcached_fetch(ptr, NULL, NULL,
692
- - &dummy_length, &dummy_flags,
693
- + (void)memcached_fetch(ptr, NULL, NULL,
694
- + &dummy_length, &dummy_flags,
695
- &dummy_error);
696
- WATCHPOINT_ASSERT(dummy_length == 0);
697
- }
698
- @@ -393,10 +393,10 @@
699
- return value;
700
- }
701
-
702
- -static memcached_return simple_binary_mget(memcached_st *ptr,
703
- +static memcached_return binary_mget_by_key(memcached_st *ptr,
704
- unsigned int master_server_key,
705
- bool is_master_key_set,
706
- - const char **keys, size_t *key_length,
707
- + const char **keys, size_t *key_length,
708
- size_t number_of_keys)
709
- {
710
- memcached_return rc= MEMCACHED_NOTFOUND;
711
- @@ -404,11 +404,11 @@
712
-
713
- int flush= number_of_keys == 1;
714
-
715
- - /*
716
- + /*
717
- If a server fails we warn about errors and start all over with sending keys
718
- to the server.
719
- */
720
- - for (x= 0; x < number_of_keys; x++)
721
- + for (x= 0; x < number_of_keys; x++)
722
- {
723
- unsigned int server_key;
724
-
725
- @@ -417,13 +417,13 @@
726
- else
727
- server_key= memcached_generate_hash(ptr, keys[x], key_length[x]);
728
-
729
- - if (memcached_server_response_count(&ptr->hosts[server_key]) == 0)
730
- + if (memcached_server_response_count(&ptr->hosts[server_key]) == 0)
731
- {
732
- rc= memcached_connect(&ptr->hosts[server_key]);
733
- - if (rc != MEMCACHED_SUCCESS)
734
- + if (rc != MEMCACHED_SUCCESS)
735
- continue;
736
- }
737
- -
738
- +
739
- protocol_binary_request_getk request= {.bytes= {0}};
740
- request.message.header.request.magic= PROTOCOL_BINARY_REQ;
741
- if (number_of_keys == 1)
742
- @@ -432,7 +432,7 @@
743
- request.message.header.request.opcode= PROTOCOL_BINARY_CMD_GETKQ;
744
-
745
- memcached_return vk;
746
- - vk= memcached_validate_key_length(key_length[x],
747
- + vk= memcached_validate_key_length(ptr->prefix_key_length + key_length[x],
748
- ptr->flags & MEM_BINARY_PROTOCOL);
749
- unlikely (vk != MEMCACHED_SUCCESS)
750
- {
751
- @@ -441,26 +441,28 @@
752
- return vk;
753
- }
754
-
755
- - request.message.header.request.keylen= htons((uint16_t)key_length[x]);
756
- + request.message.header.request.keylen= htons((uint16_t)(ptr->prefix_key_length + key_length[x]));
757
- request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
758
- - request.message.header.request.bodylen= htonl((uint32_t) key_length[x]);
759
- -
760
- + request.message.header.request.bodylen= htonl((uint32_t) (ptr->prefix_key_length + key_length[x]));
761
- +
762
- if ((memcached_io_write(&ptr->hosts[server_key], request.bytes,
763
- sizeof(request.bytes), 0) == -1) ||
764
- - (memcached_io_write(&ptr->hosts[server_key], keys[x],
765
- - key_length[x], (char) flush) == -1))
766
- + (memcached_io_write(&ptr->hosts[server_key], ptr->prefix_key,
767
- + ptr->prefix_key_length, 0) == -1) ||
768
- + (memcached_io_write(&ptr->hosts[server_key], keys[x],
769
- + key_length[x], (char) flush) == -1))
770
- {
771
- memcached_server_response_reset(&ptr->hosts[server_key]);
772
- rc= MEMCACHED_SOME_ERRORS;
773
- continue;
774
- }
775
- - memcached_server_response_increment(&ptr->hosts[server_key]);
776
- + memcached_server_response_increment(&ptr->hosts[server_key]);
777
- if ((x > 0 && x == ptr->io_key_prefetch) &&
778
- memcached_flush_buffers(ptr) != MEMCACHED_SUCCESS)
779
- rc= MEMCACHED_SOME_ERRORS;
780
- }
781
-
782
- - if (number_of_keys > 1)
783
- + if (number_of_keys > 1)
784
- {
785
- /*
786
- * Send a noop command to flush the buffers
787
- @@ -469,173 +471,28 @@
788
- request.message.header.request.magic= PROTOCOL_BINARY_REQ;
789
- request.message.header.request.opcode= PROTOCOL_BINARY_CMD_NOOP;
790
- request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
791
- -
792
- +
793
- for (x= 0; x < ptr->number_of_hosts; x++)
794
- - if (memcached_server_response_count(&ptr->hosts[x]))
795
- + if (memcached_server_response_count(&ptr->hosts[x]))
796
- {
797
- - if (memcached_io_write(&ptr->hosts[x], NULL, 0, 1) == -1)
798
- + if (memcached_io_write(&ptr->hosts[x], NULL, 0, 1) == -1)
799
- {
800
- memcached_server_response_reset(&ptr->hosts[x]);
801
- memcached_io_reset(&ptr->hosts[x]);
802
- rc= MEMCACHED_SOME_ERRORS;
803
- }
804
-
805
- - if (memcached_io_write(&ptr->hosts[x], request.bytes,
806
- - sizeof(request.bytes), 1) == -1)
807
- + if (memcached_io_write(&ptr->hosts[x], request.bytes,
808
- + sizeof(request.bytes), 1) == -1)
809
- {
810
- memcached_server_response_reset(&ptr->hosts[x]);
811
- memcached_io_reset(&ptr->hosts[x]);
812
- rc= MEMCACHED_SOME_ERRORS;
813
- }
814
- - memcached_server_response_increment(&ptr->hosts[x]);
815
- - }
816
- - }
817
- -
818
- -
819
- - return rc;
820
- -}
821
- -
822
- -static memcached_return replication_binary_mget(memcached_st *ptr,
823
- - uint32_t* hash, bool* dead_servers,
824
- - const char **keys, size_t *key_length,
825
- - size_t number_of_keys)
826
- -{
827
- - memcached_return rc= MEMCACHED_NOTFOUND;
828
- - uint32_t x;
829
- -
830
- - int flush= number_of_keys == 1;
831
- -
832
- - for (uint32_t replica= 0; replica <= ptr->number_of_replicas; ++replica)
833
- - {
834
- - bool success= true;
835
- -
836
- - for (x= 0; x < number_of_keys; ++x)
837
- - {
838
- - if (hash[x] == ptr->number_of_hosts)
839
- - continue; /* Already successfully sent */
840
- -
841
- - uint32_t server= hash[x] + replica;
842
- - while (server >= ptr->number_of_hosts)
843
- - server -= ptr->number_of_hosts;
844
- -
845
- - if (dead_servers[server])
846
- - continue;
847
- -
848
- - if (memcached_server_response_count(&ptr->hosts[server]) == 0)
849
- - {
850
- - rc= memcached_connect(&ptr->hosts[server]);
851
- - if (rc != MEMCACHED_SUCCESS)
852
- - {
853
- - memcached_io_reset(&ptr->hosts[server]);
854
- - dead_servers[server]= true;
855
- - success= false;
856
- - continue;
857
- - }
858
- + memcached_server_response_increment(&ptr->hosts[x]);
859
- }
860
- -
861
- - protocol_binary_request_getk request= {.bytes= {0}};
862
- - request.message.header.request.magic= PROTOCOL_BINARY_REQ;
863
- - if (number_of_keys == 1)
864
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_GETK;
865
- - else
866
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_GETKQ;
867
- -
868
- - request.message.header.request.keylen= htons((uint16_t)key_length[x]);
869
- - request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
870
- - request.message.header.request.bodylen= htonl((uint32_t) key_length[x]);
871
- -
872
- - if ((memcached_io_write(&ptr->hosts[server], request.bytes,
873
- - sizeof(request.bytes), 0) == -1) ||
874
- - (memcached_io_write(&ptr->hosts[server], keys[x],
875
- - key_length[x], (char) flush) == -1))
876
- - {
877
- - memcached_io_reset(&ptr->hosts[server]);
878
- - dead_servers[server]= true;
879
- - success= false;
880
- - continue;
881
- - }
882
- - memcached_server_response_increment(&ptr->hosts[server]);
883
- - }
884
- -
885
- - if (number_of_keys > 1)
886
- - {
887
- - /*
888
- - * Send a noop command to flush the buffers
889
- - */
890
- - protocol_binary_request_noop request= {.bytes= {0}};
891
- - request.message.header.request.magic= PROTOCOL_BINARY_REQ;
892
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_NOOP;
893
- - request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
894
- -
895
- - for (x= 0; x < ptr->number_of_hosts; x++)
896
- - if (memcached_server_response_count(&ptr->hosts[x]))
897
- - {
898
- - if (memcached_io_write(&ptr->hosts[x], request.bytes,
899
- - sizeof(request.bytes), 1) == -1)
900
- - {
901
- - memcached_io_reset(&ptr->hosts[x]);
902
- - dead_servers[x]= true;
903
- - success= false;
904
- - }
905
- - memcached_server_response_increment(&ptr->hosts[x]);
906
- -
907
- - /* mark all of the messages bound for this server as sent! */
908
- - for (x= 0; x < number_of_keys; ++x)
909
- - if (hash[x] == x)
910
- - hash[x]= ptr->number_of_hosts;
911
- - }
912
- }
913
-
914
- - if (success)
915
- - break;
916
- - }
917
- -
918
- - return rc;
919
- -}
920
- -
921
- -static memcached_return binary_mget_by_key(memcached_st *ptr,
922
- - unsigned int master_server_key,
923
- - bool is_master_key_set,
924
- - const char **keys, size_t *key_length,
925
- - size_t number_of_keys)
926
- -{
927
- - memcached_return rc;
928
- -
929
- - if (ptr->number_of_replicas == 0)
930
- - {
931
- - rc= simple_binary_mget(ptr, master_server_key, is_master_key_set,
932
- - keys, key_length, number_of_keys);
933
- - }
934
- - else
935
- - {
936
- - uint32_t* hash;
937
- - bool* dead_servers;
938
- -
939
- - hash= ptr->call_malloc(ptr, sizeof(uint32_t) * number_of_keys);
940
- - dead_servers= ptr->call_calloc(ptr, ptr->number_of_hosts, sizeof(bool));
941
- -
942
- - if (hash == NULL || dead_servers == NULL)
943
- - {
944
- - ptr->call_free(ptr, hash);
945
- - ptr->call_free(ptr, dead_servers);
946
- - return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
947
- - }
948
- -
949
- - if (is_master_key_set)
950
- - for (unsigned int x= 0; x < number_of_keys; x++)
951
- - hash[x]= master_server_key;
952
- - else
953
- - for (unsigned int x= 0; x < number_of_keys; x++)
954
- - hash[x]= memcached_generate_hash(ptr, keys[x], key_length[x]);
955
- -
956
- - rc= replication_binary_mget(ptr, hash, dead_servers, keys,
957
- - key_length, number_of_keys);
958
- -
959
- - ptr->call_free(ptr, hash);
960
- - ptr->call_free(ptr, dead_servers);
961
- -
962
- - return MEMCACHED_SUCCESS;
963
- - }
964
-
965
- return rc;
966
- }
967
- diff -ur a/libmemcached-0.32/libmemcached/memcached_hash.c b/libmemcached-0.32/libmemcached/memcached_hash.c
968
- --- a/libmemcached-0.32/libmemcached/memcached_hash.c 2011-03-02 20:23:03.000000000 -0800
969
- +++ b/libmemcached-0.32/libmemcached/memcached_hash.c 2011-03-02 21:44:00.000000000 -0800
970
- @@ -32,13 +32,13 @@
971
- hash= 1;
972
- break;
973
- /* FNV hash'es lifted from Dustin Sallings work */
974
- - case MEMCACHED_HASH_FNV1_64:
975
- + case MEMCACHED_HASH_FNV1_64:
976
- {
977
- /* Thanks to pierre@demartines.com for the pointer */
978
- uint64_t temp_hash;
979
-
980
- temp_hash= FNV_64_INIT;
981
- - for (x= 0; x < key_length; x++)
982
- + for (x= 0; x < key_length; x++)
983
- {
984
- temp_hash *= FNV_64_PRIME;
985
- temp_hash ^= (uint64_t)key[x];
986
- @@ -46,10 +46,10 @@
987
- hash= (uint32_t)temp_hash;
988
- }
989
- break;
990
- - case MEMCACHED_HASH_FNV1A_64:
991
- + case MEMCACHED_HASH_FNV1A_64:
992
- {
993
- hash= (uint32_t) FNV_64_INIT;
994
- - for (x= 0; x < key_length; x++)
995
- + for (x= 0; x < key_length; x++)
996
- {
997
- uint32_t val= (uint32_t)key[x];
998
- hash ^= val;
999
- @@ -57,10 +57,10 @@
1000
- }
1001
- }
1002
- break;
1003
- - case MEMCACHED_HASH_FNV1_32:
1004
- + case MEMCACHED_HASH_FNV1_32:
1005
- {
1006
- hash= FNV_32_INIT;
1007
- - for (x= 0; x < key_length; x++)
1008
- + for (x= 0; x < key_length; x++)
1009
- {
1010
- uint32_t val= (uint32_t)key[x];
1011
- hash *= FNV_32_PRIME;
1012
- @@ -68,10 +68,10 @@
1013
- }
1014
- }
1015
- break;
1016
- - case MEMCACHED_HASH_FNV1A_32:
1017
- + case MEMCACHED_HASH_FNV1A_32:
1018
- {
1019
- hash= FNV_32_INIT;
1020
- - for (x= 0; x < key_length; x++)
1021
- + for (x= 0; x < key_length; x++)
1022
- {
1023
- uint32_t val= (uint32_t)key[x];
1024
- hash ^= val;
1025
- @@ -127,7 +127,7 @@
1026
-
1027
- static uint32_t dispatch_host(memcached_st *ptr, uint32_t hash)
1028
- {
1029
- - switch (ptr->distribution)
1030
- + switch (ptr->distribution)
1031
- {
1032
- case MEMCACHED_DISTRIBUTION_CONSISTENT:
1033
- case MEMCACHED_DISTRIBUTION_CONSISTENT_KETAMA:
1034
- @@ -151,8 +151,8 @@
1035
- if (right == end)
1036
- right= begin;
1037
- return right->index;
1038
- - }
1039
- - case MEMCACHED_DISTRIBUTION_MODULA:
1040
- + }
1041
- + case MEMCACHED_DISTRIBUTION_MODULA:
1042
- return memcached_live_host_index(ptr, hash);
1043
- case MEMCACHED_DISTRIBUTION_RANDOM:
1044
- return memcached_live_host_index(ptr, (uint32_t) random());
1045
- @@ -164,8 +164,8 @@
1046
- /* NOTREACHED */
1047
- }
1048
-
1049
- -/*
1050
- - One day make this public, and have it return the actual memcached_server_st
1051
- +/*
1052
- + One day make this public, and have it return the actual memcached_server_st
1053
- to the calling application.
1054
- */
1055
- uint32_t memcached_generate_hash(memcached_st *ptr, const char *key, size_t key_length)
1056
- @@ -225,7 +225,7 @@
1057
- const char *ptr= key;
1058
- uint32_t value= 0;
1059
-
1060
- - while (key_length--)
1061
- + while (key_length--)
1062
- {
1063
- uint32_t val= (uint32_t) *ptr++;
1064
- value += val;
1065
- @@ -234,7 +234,7 @@
1066
- }
1067
- value += (value << 3);
1068
- value ^= (value >> 11);
1069
- - value += (value << 15);
1070
- + value += (value << 15);
1071
-
1072
- return value == 0 ? 1 : (uint32_t) value;
1073
- }
1074
- diff -ur a/libmemcached-0.32/libmemcached/memcached_storage.c b/libmemcached-0.32/libmemcached/memcached_storage.c
1075
- --- a/libmemcached-0.32/libmemcached/memcached_storage.c 2011-03-02 20:23:03.000000000 -0800
1076
- +++ b/libmemcached-0.32/libmemcached/memcached_storage.c 2011-03-02 22:09:56.000000000 -0800
1077
- @@ -16,6 +16,7 @@
1078
- PREPEND_OP,
1079
- APPEND_OP,
1080
- CAS_OP,
1081
- + DELETE_OP,
1082
- } memcached_storage_action;
1083
-
1084
- /* Inline this */
1085
- @@ -25,6 +26,8 @@
1086
- {
1087
- case SET_OP:
1088
- return "set ";
1089
- + case DELETE_OP:
1090
- + return "delete ";
1091
- case REPLACE_OP:
1092
- return "replace ";
1093
- case ADD_OP:
1094
- @@ -43,21 +46,21 @@
1095
- }
1096
-
1097
- static memcached_return memcached_send_binary(memcached_st *ptr,
1098
- - const char *master_key,
1099
- + const char *master_key,
1100
- size_t master_key_length,
1101
- - const char *key,
1102
- - size_t key_length,
1103
- - const char *value,
1104
- - size_t value_length,
1105
- + const char *key,
1106
- + size_t key_length,
1107
- + const char *value,
1108
- + size_t value_length,
1109
- time_t expiration,
1110
- uint32_t flags,
1111
- uint64_t cas,
1112
- memcached_storage_action verb);
1113
-
1114
- -static inline memcached_return memcached_send(memcached_st *ptr,
1115
- - const char *master_key, size_t master_key_length,
1116
- - const char *key, size_t key_length,
1117
- - const char *value, size_t value_length,
1118
- +static inline memcached_return memcached_send(memcached_st *ptr,
1119
- + const char *master_key, size_t master_key_length,
1120
- + const char *key, size_t key_length,
1121
- + const char *value, size_t value_length,
1122
- time_t expiration,
1123
- uint32_t flags,
1124
- uint64_t cas,
1125
- @@ -75,7 +78,7 @@
1126
- rc= memcached_validate_key_length(key_length, ptr->flags & MEM_BINARY_PROTOCOL);
1127
- unlikely (rc != MEMCACHED_SUCCESS)
1128
- return rc;
1129
- -
1130
- +
1131
- unlikely (ptr->number_of_hosts == 0)
1132
- return MEMCACHED_NO_SERVERS;
1133
-
1134
- @@ -91,12 +94,12 @@
1135
- server_key= memcached_generate_hash(ptr, master_key, master_key_length);
1136
-
1137
- if (cas)
1138
- - write_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
1139
- - "%s %s%.*s %u %llu %zu %llu%s\r\n",
1140
- + write_length= (size_t) snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE,
1141
- + "%s %s%.*s %u %llu %zu %llu%s\r\n",
1142
- storage_op_string(verb),
1143
- ptr->prefix_key,
1144
- - (int)key_length, key, flags,
1145
- - (unsigned long long)expiration, value_length,
1146
- + (int)key_length, key, flags,
1147
- + (unsigned long long)expiration, value_length,
1148
- (unsigned long long)cas,
1149
- (ptr->flags & MEM_NOREPLY) ? " noreply" : "");
1150
- else
1151
- @@ -111,18 +114,23 @@
1152
- buffer_ptr= memcpy(buffer_ptr + strlen(command) , ptr->prefix_key, strlen(ptr->prefix_key));
1153
-
1154
- /* Copy in the key, adjust point if a key prefix was used. */
1155
- - buffer_ptr= memcpy(buffer_ptr + (ptr->prefix_key ? strlen(ptr->prefix_key) : 0),
1156
- + buffer_ptr= memcpy(buffer_ptr + (ptr->prefix_key ? strlen(ptr->prefix_key) : 0),
1157
- key, key_length);
1158
- buffer_ptr+= key_length;
1159
- - buffer_ptr[0]= ' ';
1160
- + buffer_ptr[0]= ' ';
1161
- buffer_ptr++;
1162
- -
1163
- write_length= (size_t)(buffer_ptr - buffer);
1164
- - write_length+= (size_t) snprintf(buffer_ptr, MEMCACHED_DEFAULT_COMMAND_SIZE,
1165
- - "%u %llu %zu%s\r\n",
1166
- - flags,
1167
- - (unsigned long long)expiration, value_length,
1168
- - (ptr->flags & MEM_NOREPLY) ? " noreply" : "");
1169
- +
1170
- + if (verb == DELETE_OP) {
1171
- + if (ptr->flags & MEM_NOREPLY)
1172
- + write_length+= (size_t) snprintf(buffer_ptr, MEMCACHED_DEFAULT_COMMAND_SIZE, "noreply");
1173
- + } else {
1174
- + write_length+= (size_t) snprintf(buffer_ptr, MEMCACHED_DEFAULT_COMMAND_SIZE,
1175
- + "%u %llu %zu%s\r\n",
1176
- + flags,
1177
- + (unsigned long long)expiration, value_length,
1178
- + (ptr->flags & MEM_NOREPLY) ? " noreply" : "");
1179
- + }
1180
- }
1181
-
1182
- if (ptr->flags & MEM_USE_UDP && ptr->flags & MEM_BUFFER_REQUESTS)
1183
- @@ -147,7 +155,7 @@
1184
- return MEMCACHED_WRITE_FAILURE;
1185
-
1186
- if ((ptr->flags & MEM_BUFFER_REQUESTS) &&
1187
- - (verb == SET_OP || verb == PREPEND_OP || verb == APPEND_OP))
1188
- + (verb == SET_OP || verb == PREPEND_OP || verb == APPEND_OP || verb == DELETE_OP))
1189
- to_write= 0;
1190
- else
1191
- to_write= 1;
1192
- @@ -162,183 +170,210 @@
1193
- return MEMCACHED_BUFFERED;
1194
-
1195
- rc= memcached_response(&ptr->hosts[server_key], buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
1196
- - if (rc == MEMCACHED_STORED)
1197
- - return MEMCACHED_SUCCESS;
1198
- + if (rc == MEMCACHED_STORED || rc == MEMCACHED_DELETED)
1199
- + return MEMCACHED_SUCCESS;
1200
- +
1201
- return rc;
1202
- }
1203
-
1204
-
1205
- -memcached_return memcached_set(memcached_st *ptr, const char *key, size_t key_length,
1206
- - const char *value, size_t value_length,
1207
- +memcached_return memcached_set(memcached_st *ptr, const char *key, size_t key_length,
1208
- + const char *value, size_t value_length,
1209
- time_t expiration,
1210
- uint32_t flags)
1211
- {
1212
- memcached_return rc;
1213
- LIBMEMCACHED_MEMCACHED_SET_START();
1214
- - rc= memcached_send(ptr, key, key_length,
1215
- + rc= memcached_send(ptr, key, key_length,
1216
- key, key_length, value, value_length,
1217
- expiration, flags, 0, SET_OP);
1218
- LIBMEMCACHED_MEMCACHED_SET_END();
1219
- return rc;
1220
- }
1221
-
1222
- -memcached_return memcached_add(memcached_st *ptr,
1223
- +memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
1224
- + time_t expiration)
1225
- +{
1226
- + memcached_return rc;
1227
- + LIBMEMCACHED_MEMCACHED_DELETE_START();
1228
- + rc= memcached_send(ptr, key, key_length,
1229
- + key, key_length, "", 0,
1230
- + expiration, 0, 0, DELETE_OP);
1231
- + LIBMEMCACHED_MEMCACHED_DELETE_END();
1232
- + return rc;
1233
- +}
1234
- +
1235
- +memcached_return memcached_delete_by_key(memcached_st *ptr,
1236
- + const char *master_key, size_t master_key_length,
1237
- + const char *key, size_t key_length,
1238
- + time_t expiration)
1239
- +{
1240
- + memcached_return rc;
1241
- + LIBMEMCACHED_MEMCACHED_DELETE_START();
1242
- + rc= memcached_send(ptr, master_key, master_key_length,
1243
- + key, key_length, "", 0,
1244
- + expiration, 0, 0, DELETE_OP);
1245
- + LIBMEMCACHED_MEMCACHED_DELETE_END();
1246
- + return rc;
1247
- +}
1248
- +
1249
- +memcached_return memcached_add(memcached_st *ptr,
1250
- const char *key, size_t key_length,
1251
- - const char *value, size_t value_length,
1252
- + const char *value, size_t value_length,
1253
- time_t expiration,
1254
- uint32_t flags)
1255
- {
1256
- memcached_return rc;
1257
- LIBMEMCACHED_MEMCACHED_ADD_START();
1258
- - rc= memcached_send(ptr, key, key_length,
1259
- + rc= memcached_send(ptr, key, key_length,
1260
- key, key_length, value, value_length,
1261
- expiration, flags, 0, ADD_OP);
1262
- LIBMEMCACHED_MEMCACHED_ADD_END();
1263
- return rc;
1264
- }
1265
-
1266
- -memcached_return memcached_replace(memcached_st *ptr,
1267
- +memcached_return memcached_replace(memcached_st *ptr,
1268
- const char *key, size_t key_length,
1269
- - const char *value, size_t value_length,
1270
- + const char *value, size_t value_length,
1271
- time_t expiration,
1272
- uint32_t flags)
1273
- {
1274
- memcached_return rc;
1275
- LIBMEMCACHED_MEMCACHED_REPLACE_START();
1276
- - rc= memcached_send(ptr, key, key_length,
1277
- + rc= memcached_send(ptr, key, key_length,
1278
- key, key_length, value, value_length,
1279
- expiration, flags, 0, REPLACE_OP);
1280
- LIBMEMCACHED_MEMCACHED_REPLACE_END();
1281
- return rc;
1282
- }
1283
-
1284
- -memcached_return memcached_prepend(memcached_st *ptr,
1285
- +memcached_return memcached_prepend(memcached_st *ptr,
1286
- const char *key, size_t key_length,
1287
- - const char *value, size_t value_length,
1288
- + const char *value, size_t value_length,
1289
- time_t expiration,
1290
- uint32_t flags)
1291
- {
1292
- memcached_return rc;
1293
- - rc= memcached_send(ptr, key, key_length,
1294
- + rc= memcached_send(ptr, key, key_length,
1295
- key, key_length, value, value_length,
1296
- expiration, flags, 0, PREPEND_OP);
1297
- return rc;
1298
- }
1299
-
1300
- -memcached_return memcached_append(memcached_st *ptr,
1301
- +memcached_return memcached_append(memcached_st *ptr,
1302
- const char *key, size_t key_length,
1303
- - const char *value, size_t value_length,
1304
- + const char *value, size_t value_length,
1305
- time_t expiration,
1306
- uint32_t flags)
1307
- {
1308
- memcached_return rc;
1309
- - rc= memcached_send(ptr, key, key_length,
1310
- + rc= memcached_send(ptr, key, key_length,
1311
- key, key_length, value, value_length,
1312
- expiration, flags, 0, APPEND_OP);
1313
- return rc;
1314
- }
1315
-
1316
- -memcached_return memcached_cas(memcached_st *ptr,
1317
- +memcached_return memcached_cas(memcached_st *ptr,
1318
- const char *key, size_t key_length,
1319
- - const char *value, size_t value_length,
1320
- + const char *value, size_t value_length,
1321
- time_t expiration,
1322
- uint32_t flags,
1323
- uint64_t cas)
1324
- {
1325
- memcached_return rc;
1326
- - rc= memcached_send(ptr, key, key_length,
1327
- + rc= memcached_send(ptr, key, key_length,
1328
- key, key_length, value, value_length,
1329
- expiration, flags, cas, CAS_OP);
1330
- return rc;
1331
- }
1332
-
1333
- -memcached_return memcached_set_by_key(memcached_st *ptr,
1334
- - const char *master_key __attribute__((unused)),
1335
- - size_t master_key_length __attribute__((unused)),
1336
- - const char *key, size_t key_length,
1337
- - const char *value, size_t value_length,
1338
- +memcached_return memcached_set_by_key(memcached_st *ptr,
1339
- + const char *master_key __attribute__((unused)),
1340
- + size_t master_key_length __attribute__((unused)),
1341
- + const char *key, size_t key_length,
1342
- + const char *value, size_t value_length,
1343
- time_t expiration,
1344
- uint32_t flags)
1345
- {
1346
- memcached_return rc;
1347
- LIBMEMCACHED_MEMCACHED_SET_START();
1348
- - rc= memcached_send(ptr, master_key, master_key_length,
1349
- + rc= memcached_send(ptr, master_key, master_key_length,
1350
- key, key_length, value, value_length,
1351
- expiration, flags, 0, SET_OP);
1352
- LIBMEMCACHED_MEMCACHED_SET_END();
1353
- return rc;
1354
- }
1355
-
1356
- -memcached_return memcached_add_by_key(memcached_st *ptr,
1357
- +memcached_return memcached_add_by_key(memcached_st *ptr,
1358
- const char *master_key, size_t master_key_length,
1359
- const char *key, size_t key_length,
1360
- - const char *value, size_t value_length,
1361
- + const char *value, size_t value_length,
1362
- time_t expiration,
1363
- uint32_t flags)
1364
- {
1365
- memcached_return rc;
1366
- LIBMEMCACHED_MEMCACHED_ADD_START();
1367
- - rc= memcached_send(ptr, master_key, master_key_length,
1368
- + rc= memcached_send(ptr, master_key, master_key_length,
1369
- key, key_length, value, value_length,
1370
- expiration, flags, 0, ADD_OP);
1371
- LIBMEMCACHED_MEMCACHED_ADD_END();
1372
- return rc;
1373
- }
1374
-
1375
- -memcached_return memcached_replace_by_key(memcached_st *ptr,
1376
- +memcached_return memcached_replace_by_key(memcached_st *ptr,
1377
- const char *master_key, size_t master_key_length,
1378
- const char *key, size_t key_length,
1379
- - const char *value, size_t value_length,
1380
- + const char *value, size_t value_length,
1381
- time_t expiration,
1382
- uint32_t flags)
1383
- {
1384
- memcached_return rc;
1385
- LIBMEMCACHED_MEMCACHED_REPLACE_START();
1386
- - rc= memcached_send(ptr, master_key, master_key_length,
1387
- + rc= memcached_send(ptr, master_key, master_key_length,
1388
- key, key_length, value, value_length,
1389
- expiration, flags, 0, REPLACE_OP);
1390
- LIBMEMCACHED_MEMCACHED_REPLACE_END();
1391
- return rc;
1392
- }
1393
-
1394
- -memcached_return memcached_prepend_by_key(memcached_st *ptr,
1395
- +memcached_return memcached_prepend_by_key(memcached_st *ptr,
1396
- const char *master_key, size_t master_key_length,
1397
- const char *key, size_t key_length,
1398
- - const char *value, size_t value_length,
1399
- + const char *value, size_t value_length,
1400
- time_t expiration,
1401
- uint32_t flags)
1402
- {
1403
- memcached_return rc;
1404
- - rc= memcached_send(ptr, master_key, master_key_length,
1405
- + rc= memcached_send(ptr, master_key, master_key_length,
1406
- key, key_length, value, value_length,
1407
- expiration, flags, 0, PREPEND_OP);
1408
- return rc;
1409
- }
1410
-
1411
- -memcached_return memcached_append_by_key(memcached_st *ptr,
1412
- +memcached_return memcached_append_by_key(memcached_st *ptr,
1413
- const char *master_key, size_t master_key_length,
1414
- const char *key, size_t key_length,
1415
- - const char *value, size_t value_length,
1416
- + const char *value, size_t value_length,
1417
- time_t expiration,
1418
- uint32_t flags)
1419
- {
1420
- memcached_return rc;
1421
- - rc= memcached_send(ptr, master_key, master_key_length,
1422
- + rc= memcached_send(ptr, master_key, master_key_length,
1423
- key, key_length, value, value_length,
1424
- expiration, flags, 0, APPEND_OP);
1425
- return rc;
1426
- }
1427
-
1428
- -memcached_return memcached_cas_by_key(memcached_st *ptr,
1429
- +memcached_return memcached_cas_by_key(memcached_st *ptr,
1430
- const char *master_key, size_t master_key_length,
1431
- const char *key, size_t key_length,
1432
- - const char *value, size_t value_length,
1433
- + const char *value, size_t value_length,
1434
- time_t expiration,
1435
- uint32_t flags,
1436
- uint64_t cas)
1437
- {
1438
- memcached_return rc;
1439
- - rc= memcached_send(ptr, master_key, master_key_length,
1440
- + rc= memcached_send(ptr, master_key, master_key_length,
1441
- key, key_length, value, value_length,
1442
- expiration, flags, cas, CAS_OP);
1443
- return rc;
1444
- @@ -356,6 +391,9 @@
1445
- case SET_OP:
1446
- ret=PROTOCOL_BINARY_CMD_SETQ;
1447
- break;
1448
- + case DELETE_OP:
1449
- + ret=PROTOCOL_BINARY_CMD_DELETEQ;
1450
- + break;
1451
- case ADD_OP:
1452
- ret=PROTOCOL_BINARY_CMD_ADDQ;
1453
- break;
1454
- @@ -379,6 +417,9 @@
1455
- case SET_OP:
1456
- ret=PROTOCOL_BINARY_CMD_SET;
1457
- break;
1458
- + case DELETE_OP:
1459
- + ret=PROTOCOL_BINARY_CMD_DELETE;
1460
- + break;
1461
- case ADD_OP:
1462
- ret=PROTOCOL_BINARY_CMD_ADD;
1463
- break;
1464
- @@ -403,12 +444,12 @@
1465
-
1466
-
1467
- static memcached_return memcached_send_binary(memcached_st *ptr,
1468
- - const char *master_key,
1469
- + const char *master_key,
1470
- size_t master_key_length,
1471
- const char *key,
1472
- - size_t key_length,
1473
- - const char *value,
1474
- - size_t value_length,
1475
- + size_t key_length,
1476
- + const char *value,
1477
- + size_t value_length,
1478
- time_t expiration,
1479
- uint32_t flags,
1480
- uint64_t cas,
1481
- @@ -417,77 +458,57 @@
1482
- uint8_t flush;
1483
- protocol_binary_request_set request= {.bytes= {0}};
1484
- size_t send_length= sizeof(request.bytes);
1485
- - uint32_t server_key= memcached_generate_hash(ptr, master_key,
1486
- + uint32_t server_key= memcached_generate_hash(ptr, master_key,
1487
- master_key_length);
1488
- memcached_server_st *server= &ptr->hosts[server_key];
1489
- bool noreply= server->root->flags & MEM_NOREPLY;
1490
-
1491
- request.message.header.request.magic= PROTOCOL_BINARY_REQ;
1492
- request.message.header.request.opcode= get_com_code(verb, noreply);
1493
- - request.message.header.request.keylen= htons((uint16_t)key_length);
1494
- + request.message.header.request.keylen= htons((uint16_t)(ptr->prefix_key_length + key_length));
1495
- request.message.header.request.datatype= PROTOCOL_BINARY_RAW_BYTES;
1496
- - if (verb == APPEND_OP || verb == PREPEND_OP)
1497
- - send_length -= 8; /* append & prepend does not contain extras! */
1498
- - else
1499
- + if (verb == APPEND_OP || verb == PREPEND_OP || verb == DELETE_OP)
1500
- + send_length -= 8; /* append, delete, and prepend do not contain extras! */
1501
- + else
1502
- {
1503
- request.message.header.request.extlen= 8;
1504
- - request.message.body.flags= htonl(flags);
1505
- + request.message.body.flags= htonl(flags);
1506
- request.message.body.expiration= htonl((uint32_t)expiration);
1507
- }
1508
- -
1509
- - request.message.header.request.bodylen= htonl((uint32_t) (key_length + value_length +
1510
- +
1511
- + request.message.header.request.bodylen= htonl((uint32_t) (ptr->prefix_key_length + key_length + value_length +
1512
- request.message.header.request.extlen));
1513
- -
1514
- +
1515
- if (cas)
1516
- request.message.header.request.cas= htonll(cas);
1517
- -
1518
- +
1519
- flush= (uint8_t) (((server->root->flags & MEM_BUFFER_REQUESTS) && verb == SET_OP) ? 0 : 1);
1520
-
1521
- if ((server->root->flags & MEM_USE_UDP) && !flush)
1522
- {
1523
- - size_t cmd_size= send_length + key_length + value_length;
1524
- + size_t cmd_size= send_length + ptr->prefix_key_length + key_length + value_length;
1525
- if (cmd_size > MAX_UDP_DATAGRAM_LENGTH - UDP_DATAGRAM_HEADER_LENGTH)
1526
- return MEMCACHED_WRITE_FAILURE;
1527
- if (cmd_size + server->write_buffer_offset > MAX_UDP_DATAGRAM_LENGTH)
1528
- memcached_io_write(server,NULL,0, 1);
1529
- }
1530
- -
1531
- +
1532
- /* write the header */
1533
- if ((memcached_do(server, (const char*)request.bytes, send_length, 0) != MEMCACHED_SUCCESS) ||
1534
- + (memcached_io_write(server, ptr->prefix_key, ptr->prefix_key_length, 0) == -1) ||
1535
- (memcached_io_write(server, key, key_length, 0) == -1) ||
1536
- - (memcached_io_write(server, value, value_length, (char) flush) == -1))
1537
- + (memcached_io_write(server, value, value_length, (char) flush) == -1))
1538
- {
1539
- memcached_io_reset(server);
1540
- return MEMCACHED_WRITE_FAILURE;
1541
- }
1542
-
1543
- - unlikely (verb == SET_OP && ptr->number_of_replicas > 0)
1544
- - {
1545
- - request.message.header.request.opcode= PROTOCOL_BINARY_CMD_SETQ;
1546
- -
1547
- - for (uint32_t x= 0; x < ptr->number_of_replicas; x++)
1548
- - {
1549
- - ++server_key;
1550
- - if (server_key == ptr->number_of_hosts)
1551
- - server_key= 0;
1552
- -
1553
- - memcached_server_st *srv= &ptr->hosts[server_key];
1554
- - if ((memcached_do(srv, (const char*)request.bytes,
1555
- - send_length, 0) != MEMCACHED_SUCCESS) ||
1556
- - (memcached_io_write(srv, key, key_length, 0) == -1) ||
1557
- - (memcached_io_write(srv, value, value_length, (char) flush) == -1))
1558
- - memcached_io_reset(srv);
1559
- - else
1560
- - memcached_server_response_decrement(srv);
1561
- - }
1562
- - }
1563
- -
1564
- if (flush == 0)
1565
- return MEMCACHED_BUFFERED;
1566
-
1567
- if (noreply)
1568
- return MEMCACHED_SUCCESS;
1569
-
1570
- - return memcached_response(server, NULL, 0, NULL);
1571
- + return memcached_response(server, NULL, 0, NULL);
1572
- }
1573
-
1574
- diff -ur a/libmemcached-0.32/tests/function.c b/libmemcached-0.32/tests/function.c
1575
- --- a/libmemcached-0.32/tests/function.c 2011-03-02 20:23:03.000000000 -0800
1576
- +++ b/libmemcached-0.32/tests/function.c 2011-03-02 21:47:27.000000000 -0800
1577
- @@ -270,7 +270,7 @@
1578
- assert(memcached_set_user_data(memc, foo) == NULL);
1579
- assert(memcached_get_user_data(memc) == foo);
1580
- assert(memcached_set_user_data(memc, NULL) == foo);
1581
- -
1582
- +
1583
- return TEST_SUCCESS;
1584
- }
1585
-
1586
- @@ -287,10 +287,10 @@
1587
- static test_return error_test(memcached_st *memc)
1588
- {
1589
- memcached_return rc;
1590
- - uint32_t values[] = { 851992627U, 2337886783U, 3196981036U, 4001849190U, 982370485U, 1263635348U, 4242906218U, 3829656100U, 1891735253U,
1591
- - 334139633U, 2257084983U, 3088286104U, 13199785U, 2542027183U, 1097051614U, 199566778U, 2748246961U, 2465192557U,
1592
- - 1664094137U, 2405439045U, 1842224848U, 692413798U, 3479807801U, 919913813U, 4269430871U, 610793021U, 527273862U,
1593
- - 1437122909U, 2300930706U, 2943759320U, 674306647U, 2400528935U, 54481931U, 4186304426U, 1741088401U, 2979625118U,
1594
- + uint32_t values[] = { 851992627U, 2337886783U, 3196981036U, 4001849190U, 982370485U, 1263635348U, 4242906218U, 3829656100U, 1891735253U,
1595
- + 334139633U, 2257084983U, 3088286104U, 13199785U, 2542027183U, 1097051614U, 199566778U, 2748246961U, 2465192557U,
1596
- + 1664094137U, 2405439045U, 1842224848U, 692413798U, 3479807801U, 919913813U, 4269430871U, 610793021U, 527273862U,
1597
- + 1437122909U, 2300930706U, 2943759320U, 674306647U, 2400528935U, 54481931U, 4186304426U, 1741088401U, 2979625118U,
1598
- 4159057246U, 1769812374U, 2302537950U, 1110330676U};
1599
-
1600
- // You have updated the memcache_error messages but not updated docs/tests.
1601
- @@ -311,7 +311,7 @@
1602
- const char *key= "foo";
1603
- const char *value= "when we sanitize";
1604
-
1605
- - rc= memcached_set(memc, key, strlen(key),
1606
- + rc= memcached_set(memc, key, strlen(key),
1607
- value, strlen(value),
1608
- (time_t)0, (uint32_t)0);
1609
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1610
- @@ -331,17 +331,17 @@
1611
- rc= memcached_flush(memc, 0);
1612
- assert(rc == MEMCACHED_SUCCESS);
1613
-
1614
- - rc= memcached_set(memc, key, strlen(key),
1615
- + rc= memcached_set(memc, key, strlen(key),
1616
- in_value, strlen(in_value),
1617
- (time_t)0, (uint32_t)0);
1618
- assert(rc == MEMCACHED_SUCCESS);
1619
-
1620
- - rc= memcached_append(memc, key, strlen(key),
1621
- + rc= memcached_append(memc, key, strlen(key),
1622
- " the", strlen(" the"),
1623
- (time_t)0, (uint32_t)0);
1624
- assert(rc == MEMCACHED_SUCCESS);
1625
-
1626
- - rc= memcached_append(memc, key, strlen(key),
1627
- + rc= memcached_append(memc, key, strlen(key),
1628
- " people", strlen(" people"),
1629
- (time_t)0, (uint32_t)0);
1630
- assert(rc == MEMCACHED_SUCCESS);
1631
- @@ -370,16 +370,16 @@
1632
- rc= memcached_flush(memc, 0);
1633
- assert(rc == MEMCACHED_SUCCESS);
1634
-
1635
- - rc= memcached_set(memc,
1636
- - key, strlen(key),
1637
- + rc= memcached_set(memc,
1638
- + key, strlen(key),
1639
- NULL, 0,
1640
- (time_t)0, (uint32_t)0);
1641
- assert(rc == MEMCACHED_SUCCESS);
1642
-
1643
- for (x= 0; store_list[x] ; x++)
1644
- {
1645
- - rc= memcached_append(memc,
1646
- - key, strlen(key),
1647
- + rc= memcached_append(memc,
1648
- + key, strlen(key),
1649
- (char *)&store_list[x], sizeof(unsigned int),
1650
- (time_t)0, (uint32_t)0);
1651
- assert(rc == MEMCACHED_SUCCESS);
1652
- @@ -421,7 +421,7 @@
1653
-
1654
- for (x= 0; x < 3; x++)
1655
- {
1656
- - rc= memcached_set(memc, keys[x], key_length[x],
1657
- + rc= memcached_set(memc, keys[x], key_length[x],
1658
- keys[x], key_length[x],
1659
- (time_t)50, (uint32_t)9);
1660
- assert(rc == MEMCACHED_SUCCESS);
1661
- @@ -467,7 +467,7 @@
1662
-
1663
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
1664
-
1665
- - rc= memcached_set(memc, key, strlen(key),
1666
- + rc= memcached_set(memc, key, strlen(key),
1667
- value, strlen(value),
1668
- (time_t)0, (uint32_t)0);
1669
- assert(rc == MEMCACHED_SUCCESS);
1670
- @@ -490,7 +490,7 @@
1671
- assert(rc == MEMCACHED_END);
1672
- assert(results == NULL);
1673
- #endif
1674
- -
1675
- +
1676
- rc= memcached_cas(memc, key, key_length, value2, value2_length, 0, 0, cas);
1677
- assert(rc == MEMCACHED_SUCCESS);
1678
-
1679
- @@ -542,7 +542,7 @@
1680
-
1681
- for (x= 0; x < number_of_keys; x++)
1682
- {
1683
- - rc= memcached_set(memc, keys[x], keys_length[x],
1684
- + rc= memcached_set(memc, keys[x], keys_length[x],
1685
- keys[x], keys_length[x],
1686
- (time_t)50, (uint32_t)9);
1687
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1688
- @@ -564,7 +564,7 @@
1689
- assert(&results_obj == results);
1690
- assert(rc == MEMCACHED_SUCCESS);
1691
- assert(!memcached_result_cas(results));
1692
- -
1693
- +
1694
- char *result_str = memcached_result_value(results);
1695
- assert(strlen(result_str) == specified_length);
1696
-
1697
- @@ -615,7 +615,7 @@
1698
-
1699
- for (x= 0; x < number_of_keys; x++)
1700
- {
1701
- - rc= memcached_set(memc, keys[x], keys_length[x],
1702
- + rc= memcached_set(memc, keys[x], keys_length[x],
1703
- keys[x], keys_length[x],
1704
- (time_t)50, (uint32_t)9);
1705
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1706
- @@ -643,7 +643,7 @@
1707
- assert(results);
1708
- assert(&results_obj == results);
1709
- assert(rc == MEMCACHED_SUCCESS);
1710
- -
1711
- +
1712
- char *result_str = memcached_result_value(results);
1713
- assert(strlen(result_str) == specified_length);
1714
-
1715
- @@ -682,17 +682,17 @@
1716
- rc= memcached_flush(memc, 0);
1717
- assert(rc == MEMCACHED_SUCCESS);
1718
-
1719
- - rc= memcached_set(memc, key, strlen(key),
1720
- + rc= memcached_set(memc, key, strlen(key),
1721
- value, strlen(value),
1722
- (time_t)0, (uint32_t)0);
1723
- assert(rc == MEMCACHED_SUCCESS);
1724
-
1725
- - rc= memcached_prepend(memc, key, strlen(key),
1726
- + rc= memcached_prepend(memc, key, strlen(key),
1727
- "the ", strlen("the "),
1728
- (time_t)0, (uint32_t)0);
1729
- assert(rc == MEMCACHED_SUCCESS);
1730
-
1731
- - rc= memcached_prepend(memc, key, strlen(key),
1732
- + rc= memcached_prepend(memc, key, strlen(key),
1733
- "we ", strlen("we "),
1734
- (time_t)0, (uint32_t)0);
1735
- assert(rc == MEMCACHED_SUCCESS);
1736
- @@ -707,7 +707,7 @@
1737
- return 0;
1738
- }
1739
-
1740
- -/*
1741
- +/*
1742
- Set the value, then quit to make sure it is flushed.
1743
- Come back in and test that add fails.
1744
- */
1745
- @@ -720,12 +720,12 @@
1746
-
1747
- setting_value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NO_BLOCK);
1748
-
1749
- - rc= memcached_set(memc, key, strlen(key),
1750
- + rc= memcached_set(memc, key, strlen(key),
1751
- value, strlen(value),
1752
- (time_t)0, (uint32_t)0);
1753
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1754
- memcached_quit(memc);
1755
- - rc= memcached_add(memc, key, strlen(key),
1756
- + rc= memcached_add(memc, key, strlen(key),
1757
- value, strlen(value),
1758
- (time_t)0, (uint32_t)0);
1759
-
1760
- @@ -766,12 +766,12 @@
1761
- const char *value= "when we sanitize";
1762
- const char *original= "first we insert some data";
1763
-
1764
- - rc= memcached_set(memc, key, strlen(key),
1765
- + rc= memcached_set(memc, key, strlen(key),
1766
- original, strlen(original),
1767
- (time_t)0, (uint32_t)0);
1768
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1769
-
1770
- - rc= memcached_replace(memc, key, strlen(key),
1771
- + rc= memcached_replace(memc, key, strlen(key),
1772
- value, strlen(value),
1773
- (time_t)0, (uint32_t)0);
1774
- assert(rc == MEMCACHED_SUCCESS);
1775
- @@ -785,7 +785,7 @@
1776
- const char *key= "foo";
1777
- const char *value= "when we sanitize";
1778
-
1779
- - rc= memcached_set(memc, key, strlen(key),
1780
- + rc= memcached_set(memc, key, strlen(key),
1781
- value, strlen(value),
1782
- (time_t)0, (uint32_t)0);
1783
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1784
- @@ -806,8 +806,8 @@
1785
- return 0;
1786
- }
1787
-
1788
- -static memcached_return server_function(memcached_st *ptr __attribute__((unused)),
1789
- - memcached_server_st *server __attribute__((unused)),
1790
- +static memcached_return server_function(memcached_st *ptr __attribute__((unused)),
1791
- + memcached_server_st *server __attribute__((unused)),
1792
- void *context __attribute__((unused)))
1793
- {
1794
- /* Do Nothing */
1795
- @@ -844,7 +844,7 @@
1796
- assert(rc == MEMCACHED_SUCCESS);
1797
-
1798
- /* All keys are valid in the binary protocol (except for length) */
1799
- - if (memcached_behavior_get(memc_clone, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) == 0)
1800
- + if (memcached_behavior_get(memc_clone, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) == 0)
1801
- {
1802
- string= memcached_get(memc_clone, key, strlen(key),
1803
- &string_length, &flags, &rc);
1804
- @@ -885,7 +885,7 @@
1805
- assert(rc == MEMCACHED_SUCCESS);
1806
-
1807
- char *longkey= malloc(max_keylen + 1);
1808
- - if (longkey != NULL)
1809
- + if (longkey != NULL)
1810
- {
1811
- memset(longkey, 'a', max_keylen + 1);
1812
- string= memcached_get(memc_clone, longkey, max_keylen,
1813
- @@ -921,11 +921,11 @@
1814
-
1815
- #define READ_THROUGH_VALUE "set for me"
1816
- static memcached_return read_through_trigger(memcached_st *memc __attribute__((unused)),
1817
- - char *key __attribute__((unused)),
1818
- - size_t key_length __attribute__((unused)),
1819
- + char *key __attribute__((unused)),
1820
- + size_t key_length __attribute__((unused)),
1821
- memcached_result_st *result)
1822
- {
1823
- -
1824
- +
1825
- return memcached_result_set_value(result, READ_THROUGH_VALUE, strlen(READ_THROUGH_VALUE));
1826
- }
1827
-
1828
- @@ -968,8 +968,8 @@
1829
- return 0;
1830
- }
1831
-
1832
- -static memcached_return delete_trigger(memcached_st *ptr __attribute__((unused)),
1833
- - const char *key,
1834
- +static memcached_return delete_trigger(memcached_st *ptr __attribute__((unused)),
1835
- + const char *key,
1836
- size_t key_length __attribute__((unused)))
1837
- {
1838
- assert(key);
1839
- @@ -1020,7 +1020,7 @@
1840
- size_t string_length;
1841
- uint32_t flags;
1842
-
1843
- - rc= memcached_set(memc, key, strlen(key),
1844
- + rc= memcached_set(memc, key, strlen(key),
1845
- value, strlen(value),
1846
- (time_t)0, (uint32_t)0);
1847
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1848
- @@ -1075,7 +1075,7 @@
1849
- size_t string_length;
1850
- uint32_t flags;
1851
-
1852
- - rc= memcached_set(memc, key, strlen(key),
1853
- + rc= memcached_set(memc, key, strlen(key),
1854
- value, strlen(value),
1855
- (time_t)0, (uint32_t)0);
1856
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1857
- @@ -1108,7 +1108,7 @@
1858
- size_t string_length;
1859
- uint32_t flags;
1860
-
1861
- - rc= memcached_set(memc, key, strlen(key),
1862
- + rc= memcached_set(memc, key, strlen(key),
1863
- value, strlen(value),
1864
- (time_t)0, (uint32_t)0);
1865
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1866
- @@ -1142,7 +1142,7 @@
1867
-
1868
- for (x= 0; x < 10; x++)
1869
- {
1870
- - rc= memcached_set(memc, key, strlen(key),
1871
- + rc= memcached_set(memc, key, strlen(key),
1872
- value, value_length,
1873
- (time_t)0, (uint32_t)0);
1874
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1875
- @@ -1171,7 +1171,7 @@
1876
-
1877
- sprintf(key, "foo%u", x);
1878
-
1879
- - rc= memcached_set(memc, key, strlen(key),
1880
- + rc= memcached_set(memc, key, strlen(key),
1881
- value, value_length,
1882
- (time_t)0, (uint32_t)0);
1883
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1884
- @@ -1199,7 +1199,7 @@
1885
- for (x= 0; x < value_length; x++)
1886
- value[x] = (char) (x % 127);
1887
-
1888
- - rc= memcached_set(memc, key, strlen(key),
1889
- + rc= memcached_set(memc, key, strlen(key),
1890
- value, value_length,
1891
- (time_t)0, (uint32_t)0);
1892
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1893
- @@ -1235,7 +1235,7 @@
1894
- for (x= 0; x < value_length; x++)
1895
- value[x] = (char) (x % 127);
1896
-
1897
- - rc= memcached_set(memc, key, strlen(key),
1898
- + rc= memcached_set(memc, key, strlen(key),
1899
- value, value_length,
1900
- (time_t)0, (uint32_t)0);
1901
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1902
- @@ -1273,7 +1273,7 @@
1903
- uint32_t flags;
1904
- size_t rlen;
1905
-
1906
- - memcached_return rc= memcached_set(memc, keys[0], lengths[0],
1907
- + memcached_return rc= memcached_set(memc, keys[0], lengths[0],
1908
- keys[0], lengths[0], 0, 0);
1909
- assert(rc == MEMCACHED_SUCCESS);
1910
- rc= memcached_mget(memc, keys, lengths, 2);
1911
- @@ -1309,7 +1309,7 @@
1912
- memcached_return rc;
1913
- memcached_stat_st memc_stat;
1914
- rc= memcached_stat_servername(&memc_stat, NULL,
1915
- - memc->hosts[0].hostname,
1916
- + memc->hosts[0].hostname,
1917
- memc->hosts[0].port);
1918
-
1919
- return 0;
1920
- @@ -1322,7 +1322,7 @@
1921
- const char *key= "number";
1922
- const char *value= "0";
1923
-
1924
- - rc= memcached_set(memc, key, strlen(key),
1925
- + rc= memcached_set(memc, key, strlen(key),
1926
- value, strlen(value),
1927
- (time_t)0, (uint32_t)0);
1928
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1929
- @@ -1369,7 +1369,7 @@
1930
- const char *key= "number";
1931
- const char *value= "3";
1932
-
1933
- - rc= memcached_set(memc, key, strlen(key),
1934
- + rc= memcached_set(memc, key, strlen(key),
1935
- value, strlen(value),
1936
- (time_t)0, (uint32_t)0);
1937
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1938
- @@ -1415,13 +1415,13 @@
1939
- const char *key= "fudge";
1940
- const char *value= "sanford and sun";
1941
-
1942
- - rc= memcached_set(memc, key, strlen(key),
1943
- + rc= memcached_set(memc, key, strlen(key),
1944
- value, strlen(value),
1945
- (time_t)10, (uint32_t)3);
1946
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1947
- memcached_quit(memc);
1948
-
1949
- - rc= memcached_set(memc, key, strlen(key),
1950
- + rc= memcached_set(memc, key, strlen(key),
1951
- value, strlen(value),
1952
- (time_t)50, (uint32_t)9);
1953
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1954
- @@ -1461,7 +1461,7 @@
1955
-
1956
- for (x= 0; x < 3; x++)
1957
- {
1958
- - rc= memcached_set(memc, keys[x], key_length[x],
1959
- + rc= memcached_set(memc, keys[x], key_length[x],
1960
- keys[x], key_length[x],
1961
- (time_t)50, (uint32_t)9);
1962
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1963
- @@ -1476,8 +1476,8 @@
1964
- assert(&results_obj == results);
1965
- assert(rc == MEMCACHED_SUCCESS);
1966
- assert(memcached_result_key_length(results) == memcached_result_length(results));
1967
- - assert(!memcmp(memcached_result_key_value(results),
1968
- - memcached_result_value(results),
1969
- + assert(!memcmp(memcached_result_key_value(results),
1970
- + memcached_result_value(results),
1971
- memcached_result_length(results)));
1972
- }
1973
-
1974
- @@ -1521,7 +1521,7 @@
1975
-
1976
- for (x= 0; x < number_of_keys; x++)
1977
- {
1978
- - rc= memcached_set(memc, keys[x], key_length[x],
1979
- + rc= memcached_set(memc, keys[x], key_length[x],
1980
- keys[x], key_length[x],
1981
- (time_t)50, (uint32_t)9);
1982
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1983
- @@ -1585,7 +1585,7 @@
1984
-
1985
- for (x= 0; x < 3; x++)
1986
- {
1987
- - rc= memcached_set(memc, keys[x], key_length[x],
1988
- + rc= memcached_set(memc, keys[x], key_length[x],
1989
- keys[x], key_length[x],
1990
- (time_t)50, (uint32_t)9);
1991
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
1992
- @@ -1600,8 +1600,8 @@
1993
- assert(results);
1994
- assert(rc == MEMCACHED_SUCCESS);
1995
- assert(memcached_result_key_length(results) == memcached_result_length(results));
1996
- - assert(!memcmp(memcached_result_key_value(results),
1997
- - memcached_result_value(results),
1998
- + assert(!memcmp(memcached_result_key_value(results),
1999
- + memcached_result_value(results),
2000
- memcached_result_length(results)));
2001
- memcached_result_free(results);
2002
- x++;
2003
- @@ -1611,8 +1611,8 @@
2004
- }
2005
-
2006
- /* Count the results */
2007
- -static memcached_return callback_counter(memcached_st *ptr __attribute__((unused)),
2008
- - memcached_result_st *result __attribute__((unused)),
2009
- +static memcached_return callback_counter(memcached_st *ptr __attribute__((unused)),
2010
- + memcached_result_st *result __attribute__((unused)),
2011
- void *context)
2012
- {
2013
- unsigned int *counter= (unsigned int *)context;
2014
- @@ -1635,7 +1635,7 @@
2015
- rc= memcached_flush(memc, 0);
2016
- for (x= 0; x < 3; x++)
2017
- {
2018
- - rc= memcached_set(memc, keys[x], key_length[x],
2019
- + rc= memcached_set(memc, keys[x], key_length[x],
2020
- keys[x], key_length[x],
2021
- (time_t)50, (uint32_t)9);
2022
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
2023
- @@ -1646,7 +1646,7 @@
2024
-
2025
- callbacks[0]= &callback_counter;
2026
- counter= 0;
2027
- - rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1);
2028
- + rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1);
2029
-
2030
- assert(counter == 3);
2031
-
2032
- @@ -1673,7 +1673,7 @@
2033
- rc= memcached_mget(memc, keys, key_length, 3);
2034
- assert(rc == MEMCACHED_SUCCESS);
2035
-
2036
- - while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2037
- + while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2038
- &return_value_length, &flags, &rc)) != NULL)
2039
- {
2040
- assert(return_value);
2041
- @@ -1684,7 +1684,7 @@
2042
-
2043
- for (x= 0; x < 3; x++)
2044
- {
2045
- - rc= memcached_set(memc, keys[x], key_length[x],
2046
- + rc= memcached_set(memc, keys[x], key_length[x],
2047
- keys[x], key_length[x],
2048
- (time_t)50, (uint32_t)9);
2049
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
2050
- @@ -1694,7 +1694,7 @@
2051
- assert(rc == MEMCACHED_SUCCESS);
2052
-
2053
- x= 0;
2054
- - while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2055
- + while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2056
- &return_value_length, &flags, &rc)))
2057
- {
2058
- assert(return_value);
2059
- @@ -1781,7 +1781,7 @@
2060
- char buffer[SMALL_STRING_LEN];
2061
-
2062
- snprintf(buffer, SMALL_STRING_LEN, "%u.example.com", 400+x);
2063
- - servers= memcached_server_list_append_with_weight(servers, buffer, 401, 0,
2064
- + servers= memcached_server_list_append_with_weight(servers, buffer, 401, 0,
2065
- &rc);
2066
- assert(rc == MEMCACHED_SUCCESS);
2067
- assert(x == memcached_server_list_count(servers));
2068
- @@ -1897,10 +1897,6 @@
2069
-
2070
- value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_SOCKET_RECV_SIZE);
2071
- assert(value > 0);
2072
- -
2073
- - value= memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS);
2074
- - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, value + 1);
2075
- - assert((value + 1) == memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS));
2076
- return 0;
2077
- }
2078
-
2079
- @@ -1913,7 +1909,7 @@
2080
- unsigned long long total= 0;
2081
- uint32_t size= 0;
2082
- char key[10];
2083
- - char randomstuff[6 * 1024];
2084
- + char randomstuff[6 * 1024];
2085
- memcached_return rc;
2086
-
2087
- memset(randomstuff, 0, 6 * 1024);
2088
- @@ -1934,17 +1930,17 @@
2089
- memset(randomstuff, 0, 6 * 1024);
2090
- assert(size < 6 * 1024); /* Being safe here */
2091
-
2092
- - for (j= 0 ; j < size ;j++)
2093
- + for (j= 0 ; j < size ;j++)
2094
- randomstuff[j] = (signed char) ((rand() % 26) + 97);
2095
-
2096
- total += size;
2097
- sprintf(key, "%d", x);
2098
- - rc = memcached_set(memc, key, strlen(key),
2099
- + rc = memcached_set(memc, key, strlen(key),
2100
- randomstuff, strlen(randomstuff), 10, 0);
2101
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
2102
- /* If we fail, lets try again */
2103
- if (rc != MEMCACHED_SUCCESS && rc != MEMCACHED_BUFFERED)
2104
- - rc = memcached_set(memc, key, strlen(key),
2105
- + rc = memcached_set(memc, key, strlen(key),
2106
- randomstuff, strlen(randomstuff), 10, 0);
2107
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
2108
- }
2109
- @@ -1986,8 +1982,8 @@
2110
-
2111
- snprintf(buffer, SMALL_STRING_LEN, "%u", x);
2112
- getval= memcached_get(memc, buffer, strlen(buffer),
2113
- - &val_len, &flags, &rc);
2114
- - if (rc != MEMCACHED_SUCCESS)
2115
- + &val_len, &flags, &rc);
2116
- + if (rc != MEMCACHED_SUCCESS)
2117
- {
2118
- if (rc == MEMCACHED_NOTFOUND)
2119
- errors++;
2120
- @@ -2051,7 +2047,7 @@
2121
- size_t return_value_length;
2122
- uint32_t flags;
2123
-
2124
- - while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2125
- + while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2126
- &return_value_length, &flags, &rc)))
2127
- {
2128
- assert(return_value);
2129
- @@ -2095,7 +2091,7 @@
2130
- rc= memcached_mget(memc, keys, key_length, 3);
2131
- assert(rc == MEMCACHED_NO_SERVERS);
2132
-
2133
- - while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2134
- + while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2135
- &return_value_length, &flags, &rc)) != NULL)
2136
- {
2137
- assert(return_value);
2138
- @@ -2106,7 +2102,7 @@
2139
-
2140
- for (x= 0; x < 3; x++)
2141
- {
2142
- - rc= memcached_set(memc, keys[x], key_length[x],
2143
- + rc= memcached_set(memc, keys[x], key_length[x],
2144
- keys[x], key_length[x],
2145
- (time_t)50, (uint32_t)9);
2146
- assert(rc == MEMCACHED_NO_SERVERS);
2147
- @@ -2116,7 +2112,7 @@
2148
- assert(rc == MEMCACHED_NO_SERVERS);
2149
-
2150
- x= 0;
2151
- - while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2152
- + while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2153
- &return_value_length, &flags, &rc)))
2154
- {
2155
- assert(return_value);
2156
- @@ -2150,19 +2146,19 @@
2157
-
2158
- memcached_flush(memc, 0);
2159
- value= memcached_get(memc, keys[0], key_length[0],
2160
- - &value_length, &flags, &rc);
2161
- + &value_length, &flags, &rc);
2162
- assert(value == NULL);
2163
- rc= memcached_mget(memc, keys, key_length, 4);
2164
-
2165
- count= 0;
2166
- - while ((value= memcached_fetch(memc, return_key, &return_key_length,
2167
- + while ((value= memcached_fetch(memc, return_key, &return_key_length,
2168
- &value_length, &flags, &rc)))
2169
- count++;
2170
- assert(count == 0);
2171
-
2172
- for (x= 0; x < 4; x++)
2173
- {
2174
- - rc= memcached_set(memc, keys[x], key_length[x],
2175
- + rc= memcached_set(memc, keys[x], key_length[x],
2176
- insert_data, VALUE_SIZE_BUG5,
2177
- (time_t)0, (uint32_t)0);
2178
- assert(rc == MEMCACHED_SUCCESS);
2179
- @@ -2171,13 +2167,13 @@
2180
- for (x= 0; x < 10; x++)
2181
- {
2182
- value= memcached_get(memc, keys[0], key_length[0],
2183
- - &value_length, &flags, &rc);
2184
- + &value_length, &flags, &rc);
2185
- assert(value);
2186
- free(value);
2187
-
2188
- rc= memcached_mget(memc, keys, key_length, 4);
2189
- count= 0;
2190
- - while ((value= memcached_fetch(memc, return_key, &return_key_length,
2191
- + while ((value= memcached_fetch(memc, return_key, &return_key_length,
2192
- &value_length, &flags, &rc)))
2193
- {
2194
- count++;
2195
- @@ -2208,14 +2204,14 @@
2196
-
2197
- memcached_flush(memc, 0);
2198
- value= memcached_get(memc, keys[0], key_length[0],
2199
- - &value_length, &flags, &rc);
2200
- + &value_length, &flags, &rc);
2201
- assert(value == NULL);
2202
- assert(rc == MEMCACHED_NOTFOUND);
2203
- rc= memcached_mget(memc, keys, key_length, 4);
2204
- assert(rc == MEMCACHED_SUCCESS);
2205
-
2206
- count= 0;
2207
- - while ((value= memcached_fetch(memc, return_key, &return_key_length,
2208
- + while ((value= memcached_fetch(memc, return_key, &return_key_length,
2209
- &value_length, &flags, &rc)))
2210
- count++;
2211
- assert(count == 0);
2212
- @@ -2223,7 +2219,7 @@
2213
-
2214
- for (x= 0; x < 4; x++)
2215
- {
2216
- - rc= memcached_set(memc, keys[x], key_length[x],
2217
- + rc= memcached_set(memc, keys[x], key_length[x],
2218
- insert_data, VALUE_SIZE_BUG5,
2219
- (time_t)0, (uint32_t)0);
2220
- assert(rc == MEMCACHED_SUCCESS);
2221
- @@ -2232,7 +2228,7 @@
2222
- for (x= 0; x < 2; x++)
2223
- {
2224
- value= memcached_get(memc, keys[0], key_length[0],
2225
- - &value_length, &flags, &rc);
2226
- + &value_length, &flags, &rc);
2227
- assert(value);
2228
- free(value);
2229
-
2230
- @@ -2242,7 +2238,7 @@
2231
- /* We test for purge of partial complete fetches */
2232
- for (count= 3; count; count--)
2233
- {
2234
- - value= memcached_fetch(memc, return_key, &return_key_length,
2235
- + value= memcached_fetch(memc, return_key, &return_key_length,
2236
- &value_length, &flags, &rc);
2237
- assert(rc == MEMCACHED_SUCCESS);
2238
- assert(!(memcmp(value, insert_data, value_length)));
2239
- @@ -2304,14 +2300,14 @@
2240
- memcached_flush(memc, 0);
2241
-
2242
- flags= 245;
2243
- - rc= memcached_set(memc, keys, key_length,
2244
- + rc= memcached_set(memc, keys, key_length,
2245
- insert_data, VALUE_SIZE_BUG5,
2246
- (time_t)0, flags);
2247
- assert(rc == MEMCACHED_SUCCESS);
2248
-
2249
- flags= 0;
2250
- value= memcached_get(memc, keys, key_length,
2251
- - &value_length, &flags, &rc);
2252
- + &value_length, &flags, &rc);
2253
- assert(flags == 245);
2254
- assert(value);
2255
- free(value);
2256
- @@ -2319,7 +2315,7 @@
2257
- rc= memcached_mget(memc, &keys, &key_length, 1);
2258
-
2259
- flags= 0;
2260
- - value= memcached_fetch(memc, return_key, &return_key_length,
2261
- + value= memcached_fetch(memc, return_key, &return_key_length,
2262
- &value_length, &flags, &rc);
2263
- assert(flags == 245);
2264
- assert(value);
2265
- @@ -2351,7 +2347,7 @@
2266
-
2267
- for (x= 0; x < 3; x++)
2268
- {
2269
- - rc= memcached_set(memc, keys[x], key_length[x],
2270
- + rc= memcached_set(memc, keys[x], key_length[x],
2271
- keys[x], key_length[x],
2272
- (time_t)50, (uint32_t)9);
2273
- assert(rc == MEMCACHED_SUCCESS);
2274
- @@ -2361,7 +2357,7 @@
2275
- assert(rc == MEMCACHED_SUCCESS);
2276
-
2277
- /* We need to empty the server before continueing test */
2278
- - while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2279
- + while ((return_value= memcached_fetch(memc, return_key, &return_key_length,
2280
- &return_value_length, &flags, &rc)) != NULL)
2281
- {
2282
- assert(return_value);
2283
- @@ -2401,7 +2397,7 @@
2284
- {
2285
- rc= memcached_set(mclone, key, key_len,value, value_length, 0, 0);
2286
-
2287
- - assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_WRITE_FAILURE ||
2288
- + assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_WRITE_FAILURE ||
2289
- rc == MEMCACHED_BUFFERED || rc == MEMCACHED_TIMEOUT);
2290
-
2291
- if (rc == MEMCACHED_WRITE_FAILURE || rc == MEMCACHED_TIMEOUT)
2292
- @@ -2467,7 +2463,7 @@
2293
- uint64_t number_value;
2294
-
2295
- value= memcached_get(memc, "autoincrement", strlen("autoincrement"),
2296
- - &value_length, &flags, &rc);
2297
- + &value_length, &flags, &rc);
2298
- assert(value == NULL);
2299
- assert(rc == MEMCACHED_NOTFOUND);
2300
-
2301
- @@ -2476,7 +2472,7 @@
2302
-
2303
- assert(value == NULL);
2304
- /* The binary protocol will set the key if it doesn't exist */
2305
- - if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) == 1)
2306
- + if (memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL) == 1)
2307
- assert(rc == MEMCACHED_SUCCESS);
2308
- else
2309
- assert(rc == MEMCACHED_NOTFOUND);
2310
- @@ -2484,7 +2480,7 @@
2311
- rc= memcached_set(memc, "autoincrement", strlen("autoincrement"), "1", 1, 0, 0);
2312
-
2313
- value= memcached_get(memc, "autoincrement", strlen("autoincrement"),
2314
- - &value_length, &flags, &rc);
2315
- + &value_length, &flags, &rc);
2316
- assert(value);
2317
- assert(rc == MEMCACHED_SUCCESS);
2318
- free(value);
2319
- @@ -2561,7 +2557,7 @@
2320
-
2321
- for (current_length= 0; current_length < value_length; current_length++)
2322
- {
2323
- - rc= memcached_set(memc, key, strlen(key),
2324
- + rc= memcached_set(memc, key, strlen(key),
2325
- value, current_length,
2326
- (time_t)0, (uint32_t)0);
2327
- assert(rc == MEMCACHED_SUCCESS || rc == MEMCACHED_BUFFERED);
2328
- @@ -2595,7 +2591,7 @@
2329
-
2330
- for (x= 0; x < 2; x++)
2331
- {
2332
- - rc= memcached_set(memc, key, strlen(key),
2333
- + rc= memcached_set(memc, key, strlen(key),
2334
- NULL, 0,
2335
- (time_t)0, (uint32_t)0);
2336
-
2337
- @@ -2630,7 +2626,7 @@
2338
- size_t length;
2339
- uint32_t flags;
2340
-
2341
- - rc= memcached_set(memc, key, strlen(key),
2342
- + rc= memcached_set(memc, key, strlen(key),
2343
- NULL, 0,
2344
- (time_t)0, UINT32_MAX);
2345
-
2346
- @@ -2745,7 +2741,7 @@
2347
-
2348
- memc= memcached_create(NULL);
2349
- assert(memc);
2350
- -
2351
- +
2352
- rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_KETAMA_WEIGHTED, 1);
2353
- assert(rc == MEMCACHED_SUCCESS);
2354
-
2355
- @@ -2760,7 +2756,7 @@
2356
-
2357
- server_pool = memcached_servers_parse("10.0.1.1:11211 600,10.0.1.2:11211 300,10.0.1.3:11211 200,10.0.1.4:11211 350,10.0.1.5:11211 1000,10.0.1.6:11211 800,10.0.1.7:11211 950,10.0.1.8:11211 100");
2358
- memcached_server_push(memc, server_pool);
2359
- -
2360
- +
2361
- /* verify that the server list was parsed okay. */
2362
- assert(memc->number_of_hosts == 8);
2363
- assert(strcmp(server_pool[0].hostname, "10.0.1.1") == 0);
2364
- @@ -2993,7 +2989,7 @@
2365
-
2366
- for (x= 0; x < global_count; x++)
2367
- {
2368
- - global_keys[x]= global_pairs[x].key;
2369
- + global_keys[x]= global_pairs[x].key;
2370
- global_keys_length[x]= global_pairs[x].key_length;
2371
- }
2372
-
2373
- @@ -3008,7 +3004,7 @@
2374
-
2375
- for (x= 0; x < global_count; x++)
2376
- {
2377
- - global_keys[x]= global_pairs[x].key;
2378
- + global_keys[x]= global_pairs[x].key;
2379
- global_keys_length[x]= global_pairs[x].key_length;
2380
- }
2381
-
2382
- @@ -3181,7 +3177,7 @@
2383
-
2384
- callbacks[0]= &callback_counter;
2385
- counter= 0;
2386
- - rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1);
2387
- + rc= memcached_fetch_execute(memc, callbacks, (void *)&counter, 1);
2388
-
2389
- return 0;
2390
- }
2391
- @@ -3230,7 +3226,7 @@
2392
- char buffer[SMALL_STRING_LEN];
2393
-
2394
- snprintf(buffer, SMALL_STRING_LEN, "%u.example.com", 400+x);
2395
- - servers= memcached_server_list_append_with_weight(servers, buffer, 401, 0,
2396
- + servers= memcached_server_list_append_with_weight(servers, buffer, 401, 0,
2397
- &rc);
2398
- assert(rc == MEMCACHED_SUCCESS);
2399
- assert(x == memcached_server_list_count(servers));
2400
- @@ -3264,7 +3260,7 @@
2401
- // will not toggle protocol on an connection.
2402
- memcached_version(memc_clone);
2403
-
2404
- - if (memc_clone->hosts[0].major_version >= 1 && memc_clone->hosts[0].minor_version > 2)
2405
- + if (memc_clone->hosts[0].major_version >= 1 && memc_clone->hosts[0].minor_version > 2)
2406
- {
2407
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NO_BLOCK, 0);
2408
- rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
2409
- @@ -3388,7 +3384,7 @@
2410
- // will not toggle protocol on an connection.
2411
- memcached_version(memc_clone);
2412
-
2413
- - if (memc_clone->hosts[0].major_version >= 1 && memc_clone->hosts[0].minor_version > 2)
2414
- + if (memc_clone->hosts[0].major_version >= 1 && memc_clone->hosts[0].minor_version > 2)
2415
- {
2416
- rc = memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_BINARY_PROTOCOL, 1);
2417
- assert(rc == MEMCACHED_SUCCESS);
2418
- @@ -3399,34 +3395,6 @@
2419
- return rc;
2420
- }
2421
-
2422
- -static memcached_return pre_replication(memcached_st *memc)
2423
- -{
2424
- - memcached_return rc= MEMCACHED_FAILURE;
2425
- - if (pre_binary(memc) == MEMCACHED_SUCCESS)
2426
- - {
2427
- - /*
2428
- - * Make sure that we store the item on all servers
2429
- - * (master + replicas == number of servers)
2430
- - */
2431
- - rc= memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS,
2432
- - memc->number_of_hosts - 1);
2433
- - assert(rc == MEMCACHED_SUCCESS);
2434
- - assert(memcached_behavior_get(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS) == memc->number_of_hosts - 1);
2435
- - }
2436
- -
2437
- - return rc;
2438
- -}
2439
- -
2440
- -static memcached_return pre_replication_noblock(memcached_st *memc)
2441
- -{
2442
- - memcached_return rc= MEMCACHED_FAILURE;
2443
- - if (pre_replication(memc) == MEMCACHED_SUCCESS &&
2444
- - pre_nonblock(memc) == MEMCACHED_SUCCESS)
2445
- - rc= MEMCACHED_SUCCESS;
2446
- -
2447
- - return rc;
2448
- -}
2449
- -
2450
- static void my_free(memcached_st *ptr __attribute__((unused)), void *mem)
2451
- {
2452
- free(mem);
2453
- @@ -3526,7 +3494,7 @@
2454
- void *test_ptr= NULL;
2455
- void *cb_ptr= NULL;
2456
- {
2457
- - memcached_malloc_function malloc_cb=
2458
- + memcached_malloc_function malloc_cb=
2459
- (memcached_malloc_function)my_malloc;
2460
- cb_ptr= *(void **)&malloc_cb;
2461
- memcached_return rc;
2462
- @@ -3539,7 +3507,7 @@
2463
- }
2464
-
2465
- {
2466
- - memcached_realloc_function realloc_cb=
2467
- + memcached_realloc_function realloc_cb=
2468
- (memcached_realloc_function)my_realloc;
2469
- cb_ptr= *(void **)&realloc_cb;
2470
- memcached_return rc;
2471
- @@ -3552,7 +3520,7 @@
2472
- }
2473
-
2474
- {
2475
- - memcached_free_function free_cb=
2476
- + memcached_free_function free_cb=
2477
- (memcached_free_function)my_free;
2478
- cb_ptr= *(void **)&free_cb;
2479
- memcached_return rc;
2480
- @@ -3570,19 +3538,19 @@
2481
- static memcached_return set_memory_alloc(memcached_st *memc)
2482
- {
2483
- memcached_return rc;
2484
- - rc= memcached_set_memory_allocators(memc, NULL, my_free,
2485
- + rc= memcached_set_memory_allocators(memc, NULL, my_free,
2486
- my_realloc, my_calloc);
2487
- assert(rc == MEMCACHED_FAILURE);
2488
-
2489
- - rc= memcached_set_memory_allocators(memc, my_malloc, my_free,
2490
- + rc= memcached_set_memory_allocators(memc, my_malloc, my_free,
2491
- my_realloc, my_calloc);
2492
- -
2493
- +
2494
- memcached_malloc_function mem_malloc;
2495
- memcached_free_function mem_free;
2496
- memcached_realloc_function mem_realloc;
2497
- memcached_calloc_function mem_calloc;
2498
- - memcached_get_memory_allocators(memc, &mem_malloc, &mem_free,
2499
- - &mem_realloc, &mem_calloc);
2500
- + memcached_get_memory_allocators(memc, &mem_malloc, &mem_free,
2501
- + &mem_realloc, &mem_calloc);
2502
-
2503
- assert(mem_malloc == my_malloc);
2504
- assert(mem_realloc == my_realloc);
2505
- @@ -3616,7 +3584,7 @@
2506
-
2507
- memcached_version(memc);
2508
-
2509
- - if ((memc->hosts[0].major_version >= 1 && (memc->hosts[0].minor_version == 2 && memc->hosts[0].micro_version >= 4))
2510
- + if ((memc->hosts[0].major_version >= 1 && (memc->hosts[0].minor_version == 2 && memc->hosts[0].micro_version >= 4))
2511
- || memc->hosts[0].minor_version > 2)
2512
- {
2513
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_SUPPORT_CAS, set);
2514
- @@ -3822,7 +3790,7 @@
2515
- assert(rc == MEMCACHED_SUCCESS);
2516
- assert(memc_stat);
2517
-
2518
- - report= memcached_analyze(memc, memc_stat, &rc);
2519
- + report= memcached_analyze(memc, memc_stat, &rc);
2520
- assert(rc == MEMCACHED_SUCCESS);
2521
- assert(report);
2522
-
2523
- @@ -3833,9 +3801,9 @@
2524
- }
2525
-
2526
- /* Count the objects */
2527
- -static memcached_return callback_dump_counter(memcached_st *ptr __attribute__((unused)),
2528
- - const char *key __attribute__((unused)),
2529
- - size_t key_length __attribute__((unused)),
2530
- +static memcached_return callback_dump_counter(memcached_st *ptr __attribute__((unused)),
2531
- + const char *key __attribute__((unused)),
2532
- + size_t key_length __attribute__((unused)),
2533
- void *context)
2534
- {
2535
- uint32_t *counter= (uint32_t *)context;
2536
- @@ -3932,214 +3900,6 @@
2537
- }
2538
- #endif
2539
-
2540
- -static test_return replication_set_test(memcached_st *memc)
2541
- -{
2542
- - memcached_return rc;
2543
- - memcached_st *memc_clone= memcached_clone(NULL, memc);
2544
- - memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, 0);
2545
- -
2546
- - rc= memcached_set(memc, "bubba", 5, "0", 1, 0, 0);
2547
- - assert(rc == MEMCACHED_SUCCESS);
2548
- -
2549
- - /*
2550
- - ** We are using the quiet commands to store the replicas, so we need
2551
- - ** to ensure that all of them are processed before we can continue.
2552
- - ** In the test we go directly from storing the object to trying to
2553
- - ** receive the object from all of the different servers, so we
2554
- - ** could end up in a race condition (the memcached server hasn't yet
2555
- - ** processed the quiet command from the replication set when it process
2556
- - ** the request from the other client (created by the clone)). As a
2557
- - ** workaround for that we call memcached_quit to send the quit command
2558
- - ** to the server and wait for the response ;-) If you use the test code
2559
- - ** as an example for your own code, please note that you shouldn't need
2560
- - ** to do this ;-)
2561
- - */
2562
- - memcached_quit(memc);
2563
- -
2564
- - /*
2565
- - ** "bubba" should now be stored on all of our servers. We don't have an
2566
- - ** easy to use API to address each individual server, so I'll just iterate
2567
- - ** through a bunch of "master keys" and I should most likely hit all of the
2568
- - ** servers...
2569
- - */
2570
- - for (int x= 'a'; x <= 'z'; ++x)
2571
- - {
2572
- - char key[2]= { [0]= (char)x };
2573
- - size_t len;
2574
- - uint32_t flags;
2575
- - char *val= memcached_get_by_key(memc_clone, key, 1, "bubba", 5,
2576
- - GET_LEN_ARG_UNSPECIFIED,
2577
- - &len, &flags, &rc);
2578
- - assert(rc == MEMCACHED_SUCCESS);
2579
- - assert(val != NULL);
2580
- - free(val);
2581
- - }
2582
- -
2583
- - memcached_free(memc_clone);
2584
- -
2585
- - return TEST_SUCCESS;
2586
- -}
2587
- -
2588
- -static test_return replication_get_test(memcached_st *memc)
2589
- -{
2590
- - memcached_return rc;
2591
- -
2592
- - /*
2593
- - * Don't do the following in your code. I am abusing the internal details
2594
- - * within the library, and this is not a supported interface.
2595
- - * This is to verify correct behavior in the library
2596
- - */
2597
- - for (uint32_t host= 0; host < memc->number_of_hosts; ++host)
2598
- - {
2599
- - memcached_st *memc_clone= memcached_clone(NULL, memc);
2600
- - memc_clone->hosts[host].port= 0;
2601
- -
2602
- - for (int x= 'a'; x <= 'z'; ++x)
2603
- - {
2604
- - char key[2]= { [0]= (char)x };
2605
- - size_t len;
2606
- - uint32_t flags;
2607
- - char *val= memcached_get_by_key(memc_clone, key, 1, "bubba", 5,
2608
- - GET_LEN_ARG_UNSPECIFIED,
2609
- - &len, &flags, &rc);
2610
- - assert(rc == MEMCACHED_SUCCESS);
2611
- - assert(val != NULL);
2612
- - free(val);
2613
- - }
2614
- -
2615
- - memcached_free(memc_clone);
2616
- - }
2617
- -
2618
- - return TEST_SUCCESS;
2619
- -}
2620
- -
2621
- -static test_return replication_mget_test(memcached_st *memc)
2622
- -{
2623
- - memcached_return rc;
2624
- - memcached_st *memc_clone= memcached_clone(NULL, memc);
2625
- - memcached_behavior_set(memc_clone, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, 0);
2626
- -
2627
- - const char *keys[]= { "bubba", "key1", "key2", "key3" };
2628
- - size_t len[]= { 5, 4, 4, 4 };
2629
- -
2630
- - for (int x=0; x< 4; ++x)
2631
- - {
2632
- - rc= memcached_set(memc, keys[x], len[x], "0", 1, 0, 0);
2633
- - assert(rc == MEMCACHED_SUCCESS);
2634
- - }
2635
- -
2636
- - /*
2637
- - ** We are using the quiet commands to store the replicas, so we need
2638
- - ** to ensure that all of them are processed before we can continue.
2639
- - ** In the test we go directly from storing the object to trying to
2640
- - ** receive the object from all of the different servers, so we
2641
- - ** could end up in a race condition (the memcached server hasn't yet
2642
- - ** processed the quiet command from the replication set when it process
2643
- - ** the request from the other client (created by the clone)). As a
2644
- - ** workaround for that we call memcached_quit to send the quit command
2645
- - ** to the server and wait for the response ;-) If you use the test code
2646
- - ** as an example for your own code, please note that you shouldn't need
2647
- - ** to do this ;-)
2648
- - */
2649
- - memcached_quit(memc);
2650
- -
2651
- - /*
2652
- - * Don't do the following in your code. I am abusing the internal details
2653
- - * within the library, and this is not a supported interface.
2654
- - * This is to verify correct behavior in the library
2655
- - */
2656
- - memcached_result_st result_obj;
2657
- - for (uint32_t host= 0; host < memc_clone->number_of_hosts; host++)
2658
- - {
2659
- - memcached_st *new_clone= memcached_clone(NULL, memc);
2660
- - new_clone->hosts[host].port= 0;
2661
- -
2662
- - for (int x= 'a'; x <= 'z'; ++x)
2663
- - {
2664
- - const char key[2]= { [0]= (const char)x };
2665
- -
2666
- - rc= memcached_mget_by_key(new_clone, key, 1, keys, len,
2667
- - 4, GET_LEN_ARG_UNSPECIFIED);
2668
- - assert(rc == MEMCACHED_SUCCESS);
2669
- -
2670
- - memcached_result_st *results= memcached_result_create(new_clone, &result_obj);
2671
- - assert(results);
2672
- -
2673
- - int hits= 0;
2674
- - while ((results= memcached_fetch_result(new_clone, &result_obj, &rc)) != NULL)
2675
- - {
2676
- - hits++;
2677
- - }
2678
- - assert(hits == 4);
2679
- - memcached_result_free(&result_obj);
2680
- - }
2681
- -
2682
- - memcached_free(new_clone);
2683
- - }
2684
- -
2685
- - memcached_free(memc_clone);
2686
- -
2687
- - return TEST_SUCCESS;
2688
- -}
2689
- -
2690
- -static test_return replication_delete_test(memcached_st *memc)
2691
- -{
2692
- - memcached_return rc;
2693
- - memcached_st *memc_clone= memcached_clone(NULL, memc);
2694
- - /* Delete the items from all of the servers except 1 */
2695
- - uint64_t repl= memcached_behavior_get(memc,
2696
- - MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS);
2697
- - memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_NUMBER_OF_REPLICAS, --repl);
2698
- -
2699
- - const char *keys[]= { "bubba", "key1", "key2", "key3" };
2700
- - size_t len[]= { 5, 4, 4, 4 };
2701
- -
2702
- - for (int x=0; x< 4; ++x)
2703
- - {
2704
- - rc= memcached_delete_by_key(memc, keys[0], len[0], keys[x], len[x], 0);
2705
- - assert(rc == MEMCACHED_SUCCESS);
2706
- - }
2707
- -
2708
- - /*
2709
- - * Don't do the following in your code. I am abusing the internal details
2710
- - * within the library, and this is not a supported interface.
2711
- - * This is to verify correct behavior in the library
2712
- - */
2713
- - uint32_t hash= memcached_generate_hash(memc, keys[0], len[0]);
2714
- - for (uint32_t x= 0; x < (repl + 1); ++x)
2715
- - {
2716
- - memc_clone->hosts[hash].port= 0;
2717
- - if (++hash == memc_clone->number_of_hosts)
2718
- - hash= 0;
2719
- - }
2720
- -
2721
- - memcached_result_st result_obj;
2722
- - for (uint32_t host= 0; host < memc_clone->number_of_hosts; ++host)
2723
- - {
2724
- - for (int x= 'a'; x <= 'z'; ++x)
2725
- - {
2726
- - const char key[2]= { [0]= (const char)x };
2727
- -
2728
- - rc= memcached_mget_by_key(memc_clone, key, 1, keys, len,
2729
- - 4, GET_LEN_ARG_UNSPECIFIED);
2730
- - assert(rc == MEMCACHED_SUCCESS);
2731
- -
2732
- - memcached_result_st *results= memcached_result_create(memc_clone, &result_obj);
2733
- - assert(results);
2734
- -
2735
- - int hits= 0;
2736
- - while ((results= memcached_fetch_result(memc_clone, &result_obj, &rc)) != NULL)
2737
- - {
2738
- - ++hits;
2739
- - }
2740
- - assert(hits == 4);
2741
- - memcached_result_free(&result_obj);
2742
- - }
2743
- - }
2744
- - memcached_free(memc_clone);
2745
- -
2746
- - return TEST_SUCCESS;
2747
- -}
2748
-
2749
- static void increment_request_id(uint16_t *id)
2750
- {
2751
- @@ -4245,7 +4005,7 @@
2752
- assert(memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_USE_UDP, 1) == MEMCACHED_SUCCESS);
2753
- assert(memc->flags & MEM_USE_UDP);
2754
- assert(memc->flags & MEM_NOREPLY);;
2755
- -
2756
- +
2757
- assert(memc->number_of_hosts == 0);
2758
-
2759
- memcached_behavior_set(memc, MEMCACHED_BEHAVIOR_USE_UDP,0);
2760
- @@ -4278,11 +4038,11 @@
2761
- if (rc == MEMCACHED_SUCCESS ||
2762
- memc->hosts[server_key].write_buffer_offset < init_offset)
2763
- increment_request_id(&expected_ids[server_key]);
2764
- -
2765
- +
2766
- if (rc == MEMCACHED_SUCCESS)
2767
- {
2768
- assert(memc->hosts[server_key].write_buffer_offset == UDP_DATAGRAM_HEADER_LENGTH);
2769
- - }
2770
- + }
2771
- else
2772
- {
2773
- assert(memc->hosts[server_key].write_buffer_offset != UDP_DATAGRAM_HEADER_LENGTH);
2774
- @@ -4370,7 +4130,7 @@
2775
- memcached_return rc;
2776
- uint16_t *expected_ids= get_udp_request_ids(memc);
2777
- unsigned int x;
2778
- - for (x= 0; x < memc->number_of_hosts;x++)
2779
- + for (x= 0; x < memc->number_of_hosts;x++)
2780
- increment_request_id(&expected_ids[x]);
2781
-
2782
- rc= memcached_flush(memc,0);
2783
- @@ -4383,10 +4143,10 @@
2784
- memcached_return rc;
2785
- const char *key= "incr";
2786
- const char *value= "1";
2787
- - rc= memcached_set(memc, key, strlen(key),
2788
- + rc= memcached_set(memc, key, strlen(key),
2789
- value, strlen(value),
2790
- (time_t)0, (uint32_t)0);
2791
- -
2792
- +
2793
- assert(rc == MEMCACHED_SUCCESS);
2794
- uint16_t *expected_ids= get_udp_request_ids(memc);
2795
- unsigned int server_key= memcached_generate_hash(memc, key, strlen(key));
2796
- @@ -4402,10 +4162,10 @@
2797
- memcached_return rc;
2798
- const char *key= "decr";
2799
- const char *value= "1";
2800
- - rc= memcached_set(memc, key, strlen(key),
2801
- + rc= memcached_set(memc, key, strlen(key),
2802
- value, strlen(value),
2803
- (time_t)0, (uint32_t)0);
2804
- -
2805
- +
2806
- assert(rc == MEMCACHED_SUCCESS);
2807
- uint16_t *expected_ids= get_udp_request_ids(memc);
2808
- unsigned int server_key= memcached_generate_hash(memc, key, strlen(key));
2809
- @@ -4521,16 +4281,16 @@
2810
- const char **ptr;
2811
- uint32_t values[]= { 3195025439U, 2556848621U, 3724893440U, 3332385401U,
2812
- 245758794U, 2550894432U, 121710495U, 3053817768U,
2813
- - 1250994555U, 1862072655U, 2631955953U, 2951528551U,
2814
- + 1250994555U, 1862072655U, 2631955953U, 2951528551U,
2815
- 1451250070U, 2820856945U, 2060845566U, 3646985608U,
2816
- 2138080750U, 217675895U, 2230934345U, 1234361223U,
2817
- - 3968582726U, 2455685270U, 1293568479U, 199067604U,
2818
- + 3968582726U, 2455685270U, 1293568479U, 199067604U,
2819
- 2042482093U };
2820
-
2821
-
2822
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2823
- {
2824
- - uint32_t hash_val;
2825
- + uint32_t hash_val;
2826
-
2827
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_MD5);
2828
- assert(values[x] == hash_val);
2829
- @@ -4545,12 +4305,12 @@
2830
- const char **ptr;
2831
- uint32_t values[]= { 10542U, 22009U, 14526U, 19510U, 19432U, 10199U, 20634U,
2832
- 9369U, 11511U, 10362U, 7893U, 31289U, 11313U, 9354U,
2833
- - 7621U, 30628U, 15218U, 25967U, 2695U, 9380U,
2834
- + 7621U, 30628U, 15218U, 25967U, 2695U, 9380U,
2835
- 17300U, 28156U, 9192U, 20484U, 16925U };
2836
-
2837
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2838
- {
2839
- - uint32_t hash_val;
2840
- + uint32_t hash_val;
2841
-
2842
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_CRC);
2843
- assert(values[x] == hash_val);
2844
- @@ -4563,17 +4323,17 @@
2845
- {
2846
- uint32_t x;
2847
- const char **ptr;
2848
- - uint32_t values[]= { 473199127U, 4148981457U, 3971873300U, 3257986707U,
2849
- - 1722477987U, 2991193800U, 4147007314U, 3633179701U,
2850
- + uint32_t values[]= { 473199127U, 4148981457U, 3971873300U, 3257986707U,
2851
- + 1722477987U, 2991193800U, 4147007314U, 3633179701U,
2852
- 1805162104U, 3503289120U, 3395702895U, 3325073042U,
2853
- 2345265314U, 3340346032U, 2722964135U, 1173398992U,
2854
- - 2815549194U, 2562818319U, 224996066U, 2680194749U,
2855
- + 2815549194U, 2562818319U, 224996066U, 2680194749U,
2856
- 3035305390U, 246890365U, 2395624193U, 4145193337U,
2857
- 1801941682U };
2858
-
2859
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2860
- {
2861
- - uint32_t hash_val;
2862
- + uint32_t hash_val;
2863
-
2864
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_FNV1_64);
2865
- assert(values[x] == hash_val);
2866
- @@ -4586,17 +4346,17 @@
2867
- {
2868
- uint32_t x;
2869
- const char **ptr;
2870
- - uint32_t values[]= { 1488911807U, 2500855813U, 1510099634U, 1390325195U,
2871
- - 3647689787U, 3241528582U, 1669328060U, 2604311949U,
2872
- + uint32_t values[]= { 1488911807U, 2500855813U, 1510099634U, 1390325195U,
2873
- + 3647689787U, 3241528582U, 1669328060U, 2604311949U,
2874
- 734810122U, 1516407546U, 560948863U, 1767346780U,
2875
- 561034892U, 4156330026U, 3716417003U, 3475297030U,
2876
- - 1518272172U, 227211583U, 3938128828U, 126112909U,
2877
- + 1518272172U, 227211583U, 3938128828U, 126112909U,
2878
- 3043416448U, 3131561933U, 1328739897U, 2455664041U,
2879
- - 2272238452U };
2880
- + 2272238452U };
2881
-
2882
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2883
- {
2884
- - uint32_t hash_val;
2885
- + uint32_t hash_val;
2886
-
2887
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_FNV1A_64);
2888
- assert(values[x] == hash_val);
2889
- @@ -4609,9 +4369,9 @@
2890
- {
2891
- uint32_t x;
2892
- const char **ptr;
2893
- - uint32_t values[]= { 67176023U, 1190179409U, 2043204404U, 3221866419U,
2894
- + uint32_t values[]= { 67176023U, 1190179409U, 2043204404U, 3221866419U,
2895
- 2567703427U, 3787535528U, 4147287986U, 3500475733U,
2896
- - 344481048U, 3865235296U, 2181839183U, 119581266U,
2897
- + 344481048U, 3865235296U, 2181839183U, 119581266U,
2898
- 510234242U, 4248244304U, 1362796839U, 103389328U,
2899
- 1449620010U, 182962511U, 3554262370U, 3206747549U,
2900
- 1551306158U, 4127558461U, 1889140833U, 2774173721U,
2901
- @@ -4620,7 +4380,7 @@
2902
-
2903
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2904
- {
2905
- - uint32_t hash_val;
2906
- + uint32_t hash_val;
2907
-
2908
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_FNV1_32);
2909
- assert(values[x] == hash_val);
2910
- @@ -4643,7 +4403,7 @@
2911
-
2912
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2913
- {
2914
- - uint32_t hash_val;
2915
- + uint32_t hash_val;
2916
-
2917
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_FNV1A_32);
2918
- assert(values[x] == hash_val);
2919
- @@ -4668,7 +4428,7 @@
2920
-
2921
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2922
- {
2923
- - uint32_t hash_val;
2924
- + uint32_t hash_val;
2925
-
2926
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_HSIEH);
2927
- assert(values[x] == hash_val);
2928
- @@ -4691,7 +4451,7 @@
2929
-
2930
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2931
- {
2932
- - uint32_t hash_val;
2933
- + uint32_t hash_val;
2934
-
2935
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_FNV1_64);
2936
- assert(values[x] == hash_val);
2937
- @@ -4715,7 +4475,7 @@
2938
-
2939
- for (ptr= list, x= 0; *ptr; ptr++, x++)
2940
- {
2941
- - uint32_t hash_val;
2942
- + uint32_t hash_val;
2943
-
2944
- hash_val= memcached_generate_hash_value(*ptr, strlen(*ptr), MEMCACHED_HASH_JENKINS);
2945
- assert(values[x] == hash_val);
2946
- @@ -4776,7 +4536,7 @@
2947
- {"get3", 0, get_test3 },
2948
- {"get4", 0, get_test4 },
2949
- {"partial mget", 0, get_test5 },
2950
- - {"get_len", 1, get_len_test },
2951
- + {"get_len", 1, get_len_test },
2952
- {"get_len2", 0, get_len_test2 },
2953
- {"get_len3", 0, get_len_test3 },
2954
- {"stats_servername", 0, stats_servername_test },
2955
- @@ -4859,8 +4619,8 @@
2956
- {"user_supplied_bug15", 1, user_supplied_bug15 },
2957
- {"user_supplied_bug16", 1, user_supplied_bug16 },
2958
- #ifndef __sun
2959
- - /*
2960
- - ** It seems to be something weird with the character sets..
2961
- + /*
2962
- + ** It seems to be something weird with the character sets..
2963
- ** value_fetch is unable to parse the value line (iscntrl "fails"), so I
2964
- ** guess I need to find out how this is supposed to work.. Perhaps I need
2965
- ** to run the test in a specific locale (I tried zh_CN.UTF-8 without success,
2966
- @@ -4874,14 +4634,6 @@
2967
- {0, 0, 0}
2968
- };
2969
-
2970
- -test_st replication_tests[]= {
2971
- - {"set", 1, replication_set_test },
2972
- - {"get", 0, replication_get_test },
2973
- - {"mget", 0, replication_mget_test },
2974
- - {"delete", 0, replication_delete_test },
2975
- - {0, 0, 0}
2976
- -};
2977
- -
2978
- test_st generate_tests[] ={
2979
- {"generate_pairs", 1, generate_pairs },
2980
- {"generate_data", 1, generate_data },
2981
- @@ -4988,8 +4740,6 @@
2982
- {"consistent_ketama", pre_behavior_ketama, 0, consistent_tests},
2983
- {"consistent_ketama_weighted", pre_behavior_ketama_weighted, 0, consistent_weighted_tests},
2984
- {"test_hashes", 0, 0, hash_tests},
2985
- - {"replication", pre_replication, 0, replication_tests},
2986
- - {"replication_noblock", pre_replication_noblock, 0, replication_tests},
2987
- {0, 0, 0, 0}
2988
- };
2989
-