memcached 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/BUG ADDED
@@ -0,0 +1,22 @@
1
+ Program received signal SIGINT, Interrupt.
2
+ 0x00007fff86ec39c6 in read ()
3
+ (gdb) bt
4
+ #0 0x00007fff86ec39c6 in read ()
5
+ #1 0x00000001001b043b in memcached_io_read (ptr=0x208915a00, buffer=0x7fff5fbfbc80, length=1, nread=0x7fff5fbfbb58) at memcached_io.c:108
6
+ #2 0x00000001001b0d9c in memcached_io_readline (ptr=0x208915a00, buffer_ptr=0x7fff5fbfbc80 "???_?", size=1024) at memcached_io.c:482
7
+ #3 0x00000001001b2fcc in textual_read_one_response (ptr=0x208915a00, buffer=0x7fff5fbfbc80 "???_?", buffer_length=1024, result=0x7fff5fbfc080) at memcached_response.c:208
8
+ #4 0x00000001001b2a2b in memcached_read_one_response (ptr=0x208915a00, buffer=0x7fff5fbfbc80 "???_?", buffer_length=1024, result=0x7fff5fbfc080) at memcached_response.c:31
9
+ #5 0x00000001001b1100 in memcached_purge (ptr=0x208915a00) at memcached_purge.c:56
10
+ #6 0x00000001001b0aa6 in io_flush (ptr=0x208915a00, error=0x7fff5fbfc2bc) at memcached_io.c:340
11
+ #7 0x00000001001b07bb in memcached_io_write (ptr=0x208915a00, buffer=0x1001bcee9, length=0, with_flush=1 '\001') at memcached_io.c:241
12
+ #8 0x00000001001ac8db in memcached_do (ptr=0x208915a00, command=0x1001bcee9, command_length=6, with_flush=1 '\001') at memcached_do.c:26
13
+ #9 0x00000001001b2516 in memcached_quit_server (ptr=0x208915a00, io_death=0 '\0') at memcached_quit.c:30
14
+ #10 0x00000001001b2673 in memcached_quit (ptr=0x102b1bb50) at memcached_quit.c:73
15
+ #11 0x00000001001aa704 in memcached_free (ptr=0x102b1bb50) at memcached.c:43
16
+ #12 0x0000000100038557 in rb_gc_call_finalizer_at_exit () at gc.c:2738
17
+ #13 0x000000010001be60 in ruby_finalize_1 () at eval.c:1603
18
+ #14 0x000000010002a09a in ruby_cleanup (exArg=<value temporarily unavailable, due to optimizations>) at eval.c:1641
19
+ #15 0x000000010002a1f9 in ruby_stop (ex=<value temporarily unavailable, due to optimizations>) at eval.c:1696
20
+ #16 0x00000001000319f4 in ruby_run () at eval.c:1717
21
+ #17 0x0000000100000994 in main (argc=<value temporarily unavailable, due to optimizations>, argv=<value temporarily unavailable, due to optimizations>, envp=<value temporarily unavailable, due to optimizations>) at main.c:48
22
+
data/CHANGELOG CHANGED
@@ -1,3 +1,5 @@
1
+ v1.2.2. Work around tcmalloc bug on OS X. Avoid circular reference in memcached_server_by_key().
2
+
1
3
  v1.2.1. Fix large allocation on error bug.
2
4
 
3
5
  v1.2. Clean up duplicated set_prefix_key API. Pipeline deletes and remove dead replication code. Apply prefix_key to binary protocol properly (tarrall). Add Memcached::Rails#exist? (ssoroka).
data/Manifest CHANGED
@@ -1,4 +1,5 @@
1
1
  BENCHMARKS
2
+ BUG
2
3
  CHANGELOG
3
4
  LICENSE
4
5
  Manifest
@@ -8,13 +9,15 @@ TODO
8
9
  ext/extconf-make.rb
9
10
  ext/extconf.rb
10
11
  ext/libmemcached-0.32.tar.gz
12
+ ext/libmemcached-1.patch
11
13
  ext/libmemcached-2.patch
12
14
  ext/libmemcached-3.patch
13
15
  ext/libmemcached-4.patch
14
16
  ext/libmemcached-5.patch
15
17
  ext/libmemcached-6.patch
16
18
  ext/libmemcached-7.patch
17
- ext/libmemcached.patch
19
+ ext/libmemcached-8.patch
20
+ ext/libmemcached-9.patch
18
21
  ext/rlibmemcached.i
19
22
  ext/rlibmemcached_wrap.c
20
23
  ext/sasl.patch
@@ -25,6 +28,7 @@ lib/memcached/exceptions.rb
25
28
  lib/memcached/experimental.rb
26
29
  lib/memcached/memcached.rb
27
30
  lib/memcached/rails.rb
31
+ lib/rlibmemcached.bundle.dSYM/Contents/Info.plist
28
32
  test/profile/benchmark.rb
29
33
  test/profile/c_profiler.rb
30
34
  test/profile/exercise.rb
@@ -47,13 +47,13 @@ def check_libmemcached
47
47
  $DEFLIBPATH = [] unless SOLARIS_32
48
48
 
49
49
  Dir.chdir(HERE) do
50
- if File.exist?("lib")
51
- puts "Libmemcached already configured; run 'rake clean' first if you need to reconfigure."
50
+ if File.exist?("libmemcached-0.32")
51
+ puts "Libmemcached already unpacked; run 'rake clean' first if you need to start from scratch."
52
52
  else
53
53
  system("rm -rf #{BUNDLE_PATH}") unless ENV['DEBUG'] or ENV['DEV']
54
54
  run("#{TAR_CMD} xzf #{BUNDLE} 2>&1", "Building libmemcached.")
55
55
 
56
- patch("libmemcached", "mark-dead behavior")
56
+ patch("libmemcached-1", "mark-dead behavior")
57
57
  patch("sasl", "SASL")
58
58
  patch("libmemcached-2", "get_from_last method")
59
59
  patch("libmemcached-3", "pipelined prepend and append")
@@ -61,12 +61,14 @@ def check_libmemcached
61
61
  patch("libmemcached-5", "get_len method")
62
62
  patch("libmemcached-6", "failure count bug")
63
63
  patch("libmemcached-7", "pipelined delete and unused replica code")
64
+ patch("libmemcached-8", "avoid strdup() to work around tcmalloc on OS X bug")
65
+ patch("libmemcached-9", "don't clone server_st by reference server_by_key()")
64
66
 
65
67
  run("touch -r #{BUNDLE_PATH}/m4/visibility.m4 #{BUNDLE_PATH}/configure.ac #{BUNDLE_PATH}/m4/pandora_have_sasl.m4", "Touching aclocal.m4 in libmemcached.")
68
+ end
66
69
 
67
- Dir.chdir(BUNDLE_PATH) do
68
- run("env CFLAGS='-fPIC #{$CFLAGS}' LDFLAGS='-fPIC #{$LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
69
- end
70
+ Dir.chdir(BUNDLE_PATH) do
71
+ run("env CFLAGS='-fPIC #{$CFLAGS}' LDFLAGS='-fPIC #{$LDFLAGS}' ./configure --prefix=#{HERE} --without-memcached --disable-shared --disable-utils --disable-dependency-tracking #{$EXTRA_CONF} 2>&1", "Configuring libmemcached.")
70
72
  end
71
73
 
72
74
  Dir.chdir(BUNDLE_PATH) do
@@ -0,0 +1,137 @@
1
+ diff -ru a/libmemcached-0.32/libmemcached/memcached_response.c b/libmemcached-0.32/libmemcached/memcached_response.c
2
+ --- a/libmemcached-0.32/libmemcached/memcached_response.c 2011-03-08 13:07:36.000000000 -0800
3
+ +++ b/libmemcached-0.32/libmemcached/memcached_response.c 2011-03-08 13:02:11.000000000 -0800
4
+ @@ -239,32 +239,19 @@
5
+ }
6
+ else if (buffer[1] == 'E') /* SERVER_ERROR */
7
+ {
8
+ - char *rel_ptr;
9
+ - char *startptr= buffer + 13, *endptr= startptr;
10
+ -
11
+ - while (*endptr != '\r' && *endptr != '\n') endptr++;
12
+ + memcached_server_error_reset(ptr);
13
+
14
+ - /*
15
+ - Yes, we could make this "efficent" but to do that we would need
16
+ - to maintain more state for the size of the buffer. Why waste
17
+ - memory in the struct, which is important, for something that
18
+ - rarely should happen?
19
+ - */
20
+ - rel_ptr= (char *)ptr->root->call_realloc(ptr->root,
21
+ - ptr->cached_server_error,
22
+ - (size_t) (endptr - startptr + 1));
23
+ -
24
+ - if (rel_ptr == NULL)
25
+ - {
26
+ - /* If we happened to have some memory, we just null it since we don't know the size */
27
+ - if (ptr->cached_server_error)
28
+ - ptr->cached_server_error[0]= 0;
29
+ - return MEMCACHED_SERVER_ERROR;
30
+ - }
31
+ - ptr->cached_server_error= rel_ptr;
32
+ + char *startptr= buffer + 13, *endptr= startptr;
33
+ + while (*endptr != '\r' && *endptr != '\n')
34
+ + endptr++;
35
+ + size_t err_len = (endptr - startptr + 1);
36
+ +
37
+ + ptr->cached_server_error = malloc(err_len);
38
+ + if (ptr->cached_server_error == NULL)
39
+ + return MEMCACHED_SERVER_ERROR;
40
+
41
+ - memcpy(ptr->cached_server_error, startptr, (size_t) (endptr - startptr));
42
+ - ptr->cached_server_error[endptr - startptr]= 0;
43
+ + strncpy(ptr->cached_server_error, startptr, err_len);
44
+ + ptr->cached_server_error[err_len - 1]= 0;
45
+ return MEMCACHED_SERVER_ERROR;
46
+ }
47
+ else if (buffer[1] == 'T')
48
+ diff -ru a/libmemcached-0.32/libmemcached/memcached_server.c b/libmemcached-0.32/libmemcached/memcached_server.c
49
+ --- a/libmemcached-0.32/libmemcached/memcached_server.c 2009-07-15 03:34:17.000000000 -0700
50
+ +++ b/libmemcached-0.32/libmemcached/memcached_server.c 2011-03-08 13:02:11.000000000 -0800
51
+ @@ -16,14 +16,14 @@
52
+ }
53
+ else
54
+ memset(ptr, 0, sizeof(memcached_server_st));
55
+ -
56
+ +
57
+ ptr->root= memc;
58
+
59
+ return ptr;
60
+ }
61
+
62
+ -memcached_server_st *memcached_server_create_with(memcached_st *memc, memcached_server_st *host,
63
+ - const char *hostname, unsigned int port,
64
+ +memcached_server_st *memcached_server_create_with(memcached_st *memc, memcached_server_st *host,
65
+ + const char *hostname, unsigned int port,
66
+ uint32_t weight, memcached_connection type)
67
+ {
68
+ host= memcached_server_create(memc, host);
69
+ @@ -52,9 +52,7 @@
70
+ void memcached_server_free(memcached_server_st *ptr)
71
+ {
72
+ memcached_quit_server(ptr, 0);
73
+ -
74
+ - if (ptr->cached_server_error)
75
+ - free(ptr->cached_server_error);
76
+ + memcached_server_error_reset(ptr);
77
+
78
+ if (ptr->address_info)
79
+ freeaddrinfo(ptr->address_info);
80
+ @@ -76,21 +74,24 @@
81
+ if (ptr == NULL)
82
+ return NULL;
83
+
84
+ - rv = memcached_server_create_with(ptr->root, clone,
85
+ + rv = memcached_server_create_with(ptr->root, clone,
86
+ ptr->hostname, ptr->port, ptr->weight,
87
+ ptr->type);
88
+ if (rv != NULL)
89
+ {
90
+ rv->cached_errno= ptr->cached_errno;
91
+ - if (ptr->cached_server_error)
92
+ - rv->cached_server_error= strdup(ptr->cached_server_error);
93
+ + if (ptr->cached_server_error) {
94
+ + size_t err_len = strlen(ptr->cached_server_error) + 1;
95
+ + rv->cached_server_error = malloc(err_len);
96
+ + strncpy(rv->cached_server_error, ptr->cached_server_error, err_len);
97
+ + }
98
+ }
99
+
100
+ return rv;
101
+
102
+ }
103
+
104
+ -memcached_return memcached_server_cursor(memcached_st *ptr,
105
+ +memcached_return memcached_server_cursor(memcached_st *ptr,
106
+ memcached_server_function *callback,
107
+ void *context,
108
+ unsigned int number_of_callbacks)
109
+ @@ -119,7 +120,7 @@
110
+ {
111
+ uint32_t server_key;
112
+
113
+ - *error= memcached_validate_key_length(key_length,
114
+ + *error= memcached_validate_key_length(key_length,
115
+ ptr->flags & MEM_BINARY_PROTOCOL);
116
+ unlikely (*error != MEMCACHED_SUCCESS)
117
+ return NULL;
118
+ @@ -144,13 +145,16 @@
119
+
120
+ const char *memcached_server_error(memcached_server_st *ptr)
121
+ {
122
+ - if (ptr)
123
+ + if (ptr->cached_server_error)
124
+ return ptr->cached_server_error;
125
+ - else
126
+ + else
127
+ return NULL;
128
+ }
129
+
130
+ void memcached_server_error_reset(memcached_server_st *ptr)
131
+ {
132
+ - ptr->cached_server_error[0]= 0;
133
+ + if (ptr->cached_server_error) {
134
+ + free(ptr->cached_server_error);
135
+ + ptr->cached_server_error = 0;
136
+ + }
137
+ }
@@ -0,0 +1,13 @@
1
+ diff -uwr a/libmemcached-0.32/libmemcached/memcached_server.c b/libmemcached-0.32/libmemcached/memcached_server.c
2
+ --- a/libmemcached-0.32/libmemcached/memcached_server.c 2011-03-13 11:49:57.000000000 -0700
3
+ +++ b/libmemcached-0.32/libmemcached/memcached_server.c 2011-03-13 21:35:17.000000000 -0700
4
+ @@ -139,8 +139,7 @@
5
+
6
+ server_key= memcached_generate_hash(ptr, key, key_length);
7
+
8
+ - return memcached_server_clone(NULL, &ptr->hosts[server_key]);
9
+ -
10
+ + return &ptr->hosts[server_key];
11
+ }
12
+
13
+ const char *memcached_server_error(memcached_server_st *ptr)
@@ -25,7 +25,6 @@
25
25
  %newobject memcached_clone;
26
26
  %newobject memcached_stat_get_value;
27
27
  // %newobject memcached_stat;
28
- %newobject memcached_server_by_key;
29
28
 
30
29
  // %trackobjects; // Doesn't fix any interesting leaks
31
30
 
@@ -11987,7 +11987,7 @@ _wrap_memcached_server_by_key(int argc, VALUE *argv, VALUE self) {
11987
11987
  arg3 = (size_t) RSTRING_LEN(argv[1]);
11988
11988
  }
11989
11989
  result = (memcached_server_st *)memcached_server_by_key(arg1,(char const *)arg2,arg3,arg4);
11990
- vresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_memcached_server_st, SWIG_POINTER_OWN | 0 );
11990
+ vresult = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_memcached_server_st, 0 | 0 );
11991
11991
  if (SWIG_IsTmpObj(res4)) {
11992
11992
  vresult = SWIG_Ruby_AppendOutput(vresult, SWIG_From_unsigned_SS_short((*arg4)));
11993
11993
  } else {
@@ -13,7 +13,7 @@ class Memcached
13
13
  BEHAVIORS = load_constants("MEMCACHED_BEHAVIOR_")
14
14
 
15
15
  BEHAVIOR_VALUES = {
16
- false => 0,
16
+ false => 0,
17
17
  true => 1
18
18
  }
19
19
 
@@ -66,13 +66,12 @@ class Memcached
66
66
  # Scoped values; still annoying
67
67
  when :hash then HASH_VALUES.invert[value]
68
68
  when :distribution then DISTRIBUTION_VALUES.invert[value]
69
- when *DIRECT_VALUE_BEHAVIORS then value
70
69
  else
71
- BEHAVIOR_VALUES.invert[value]
70
+ value
72
71
  end
73
72
  else
74
73
  value
75
74
  end
76
75
  end
77
-
78
- end
76
+
77
+ end
@@ -121,9 +121,13 @@ Please note that when <tt>:no_block => true</tt>, update methods do not raise on
121
121
 
122
122
  instance_eval { send(:extend, Experimental) } if options[:experimental_features]
123
123
 
124
+ # SASL requires binary protocol
124
125
  options[:binary_protocol] = true if options[:credentials]
125
126
 
126
- # Force :buffer_requests to use :no_block
127
+ # UDP requires noreply
128
+ options[:noreply] = true if options[:use_udp]
129
+
130
+ # Buffering requires non-blocking
127
131
  # FIXME This should all be wrapped up in a single :pipeline option.
128
132
  options[:no_block] = true if options[:buffer_requests]
129
133
 
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>CFBundleDevelopmentRegion</key>
6
+ <string>English</string>
7
+ <key>CFBundleIdentifier</key>
8
+ <string>com.apple.xcode.dsym.rlibmemcached.bundle</string>
9
+ <key>CFBundleInfoDictionaryVersion</key>
10
+ <string>6.0</string>
11
+ <key>CFBundlePackageType</key>
12
+ <string>dSYM</string>
13
+ <key>CFBundleSignature</key>
14
+ <string>????</string>
15
+ <key>CFBundleShortVersionString</key>
16
+ <string>1.0</string>
17
+ <key>CFBundleVersion</key>
18
+ <string>1</string>
19
+ </dict>
20
+ </plist>
@@ -2,17 +2,17 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{memcached}
5
- s.version = "1.2.1"
5
+ s.version = "1.2.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Evan Weaver"]
9
9
  s.cert_chain = ["/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
10
- s.date = %q{2011-03-07}
10
+ s.date = %q{2011-03-14}
11
11
  s.description = %q{An interface to the libmemcached C client.}
12
12
  s.email = %q{}
13
13
  s.extensions = ["ext/extconf.rb"]
14
14
  s.extra_rdoc_files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "README", "TODO", "lib/memcached.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb"]
15
- s.files = ["BENCHMARKS", "CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "TODO", "ext/extconf-make.rb", "ext/extconf.rb", "ext/libmemcached-0.32.tar.gz", "ext/libmemcached-2.patch", "ext/libmemcached-3.patch", "ext/libmemcached-4.patch", "ext/libmemcached-5.patch", "ext/libmemcached-6.patch", "ext/libmemcached-7.patch", "ext/libmemcached.patch", "ext/rlibmemcached.i", "ext/rlibmemcached_wrap.c", "ext/sasl.patch", "lib/memcached.rb", "lib/memcached/auth.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb", "test/profile/benchmark.rb", "test/profile/c_profiler.rb", "test/profile/exercise.rb", "test/profile/rb_profiler.rb", "test/profile/valgrind.rb", "test/setup.rb", "test/teardown.rb", "test/test_helper.rb", "test/unit/binding_test.rb", "test/unit/memcached_experimental_test.rb", "test/unit/memcached_test.rb", "test/unit/rails_test.rb", "memcached.gemspec"]
15
+ s.files = ["BENCHMARKS", "BUG", "CHANGELOG", "LICENSE", "Manifest", "README", "Rakefile", "TODO", "ext/extconf-make.rb", "ext/extconf.rb", "ext/libmemcached-0.32.tar.gz", "ext/libmemcached-1.patch", "ext/libmemcached-2.patch", "ext/libmemcached-3.patch", "ext/libmemcached-4.patch", "ext/libmemcached-5.patch", "ext/libmemcached-6.patch", "ext/libmemcached-7.patch", "ext/libmemcached-8.patch", "ext/libmemcached-9.patch", "ext/rlibmemcached.i", "ext/rlibmemcached_wrap.c", "ext/sasl.patch", "lib/memcached.rb", "lib/memcached/auth.rb", "lib/memcached/behaviors.rb", "lib/memcached/exceptions.rb", "lib/memcached/experimental.rb", "lib/memcached/memcached.rb", "lib/memcached/rails.rb", "lib/rlibmemcached.bundle.dSYM/Contents/Info.plist", "test/profile/benchmark.rb", "test/profile/c_profiler.rb", "test/profile/exercise.rb", "test/profile/rb_profiler.rb", "test/profile/valgrind.rb", "test/setup.rb", "test/teardown.rb", "test/test_helper.rb", "test/unit/binding_test.rb", "test/unit/memcached_experimental_test.rb", "test/unit/memcached_test.rb", "test/unit/rails_test.rb", "memcached.gemspec"]
16
16
  s.homepage = %q{http://fauna.github.com/fauna/memcached/}
17
17
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Memcached", "--main", "README"]
18
18
  s.require_paths = ["lib", "ext"]
@@ -147,6 +147,13 @@ class Worker
147
147
  @i.times do
148
148
  @cache.server_by_key(@key1)
149
149
  end
150
+ when "server_error"
151
+ @i.times do
152
+ begin
153
+ @cache.set @key1, "I'm big" * 1000000
154
+ rescue
155
+ end
156
+ end
150
157
  else
151
158
  raise "No such method"
152
159
  end
@@ -1,3 +1,3 @@
1
1
  require "#{File.dirname(__FILE__)}/../setup"
2
2
 
3
- exec("valgrind --tool=memcheck --error-limit=no --undef-value-errors=no --leak-check=full --show-reachable=no --num-callers=15 --track-fds=yes --workaround-gcc296-bugs=yes --leak-resolution=med --max-stackframe=7304328 --dsymutil=yes ruby -r#{File.dirname(__FILE__)}/exercise.rb -e \"Worker.new(ENV['TEST'] || 'everything', 50, 'true').work\"")
3
+ exec("valgrind --tool=memcheck --error-limit=no --undef-value-errors=no --leak-check=full --show-reachable=no --num-callers=15 --track-fds=yes --workaround-gcc296-bugs=yes --leak-resolution=med --max-stackframe=7304328 --dsymutil=yes ruby -r#{File.dirname(__FILE__)}/exercise.rb -e \"Worker.new(ENV['TEST'] || 'everything', (ENV['LOOPS'] || 50).to_i, 'true').work\"")
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: memcached
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 1
10
- version: 1.2.1
9
+ - 2
10
+ version: 1.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Evan Weaver
@@ -36,7 +36,7 @@ cert_chain:
36
36
  yZ0=
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2011-03-07 00:00:00 -08:00
39
+ date: 2011-03-14 00:00:00 -07:00
40
40
  default_executable:
41
41
  dependencies: []
42
42
 
@@ -60,6 +60,7 @@ extra_rdoc_files:
60
60
  - lib/memcached/rails.rb
61
61
  files:
62
62
  - BENCHMARKS
63
+ - BUG
63
64
  - CHANGELOG
64
65
  - LICENSE
65
66
  - Manifest
@@ -69,13 +70,15 @@ files:
69
70
  - ext/extconf-make.rb
70
71
  - ext/extconf.rb
71
72
  - ext/libmemcached-0.32.tar.gz
73
+ - ext/libmemcached-1.patch
72
74
  - ext/libmemcached-2.patch
73
75
  - ext/libmemcached-3.patch
74
76
  - ext/libmemcached-4.patch
75
77
  - ext/libmemcached-5.patch
76
78
  - ext/libmemcached-6.patch
77
79
  - ext/libmemcached-7.patch
78
- - ext/libmemcached.patch
80
+ - ext/libmemcached-8.patch
81
+ - ext/libmemcached-9.patch
79
82
  - ext/rlibmemcached.i
80
83
  - ext/rlibmemcached_wrap.c
81
84
  - ext/sasl.patch
@@ -86,6 +89,7 @@ files:
86
89
  - lib/memcached/experimental.rb
87
90
  - lib/memcached/memcached.rb
88
91
  - lib/memcached/rails.rb
92
+ - lib/rlibmemcached.bundle.dSYM/Contents/Info.plist
89
93
  - test/profile/benchmark.rb
90
94
  - test/profile/c_profiler.rb
91
95
  - test/profile/exercise.rb
metadata.gz.sig CHANGED
Binary file