File tree 3 files changed +23
-2
lines changed
3 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -4,6 +4,8 @@ Dalli Changelog
4
4
Unreleased
5
5
==========
6
6
7
+ - Fix cannot read response data included terminator ` \r\n ` when use meta protocol (matsubara0507)
8
+
7
9
3.2.8
8
10
==========
9
11
Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ def meta_get_with_value(cache_nils: false)
32
32
return cache_nils ? ::Dalli ::NOT_FOUND : nil if tokens . first == EN
33
33
return true unless tokens . first == VA
34
34
35
- @value_marshaller . retrieve ( read_line , bitflags_from_tokens ( tokens ) )
35
+ @value_marshaller . retrieve ( read_data ( tokens [ 1 ] . to_i ) , bitflags_from_tokens ( tokens ) )
36
36
end
37
37
38
38
def meta_get_with_value_and_cas
@@ -42,7 +42,7 @@ def meta_get_with_value_and_cas
42
42
cas = cas_from_tokens ( tokens )
43
43
return [ nil , cas ] unless tokens . first == VA
44
44
45
- [ @value_marshaller . retrieve ( read_line , bitflags_from_tokens ( tokens ) ) , cas ]
45
+ [ @value_marshaller . retrieve ( read_data ( tokens [ 1 ] . to_i ) , bitflags_from_tokens ( tokens ) ) , cas ]
46
46
end
47
47
48
48
def meta_get_without_value
@@ -205,6 +205,10 @@ def next_line_to_tokens
205
205
line = read_line
206
206
line &.split || [ ]
207
207
end
208
+
209
+ def read_data ( data_size )
210
+ @io_source . read ( data_size + TERMINATOR . bytesize ) &.chomp! ( TERMINATOR )
211
+ end
208
212
end
209
213
end
210
214
end
Original file line number Diff line number Diff line change 23
23
end
24
24
end
25
25
26
+ it 'return the value that include TERMINATOR on a hit' do
27
+ memcached_persistent ( p ) do |dc |
28
+ dc . flush
29
+
30
+ val1 = "12345#{ Dalli ::Protocol ::Meta ::TERMINATOR } 67890"
31
+ dc . set ( 'a' , val1 )
32
+ val2 = dc . get ( 'a' )
33
+
34
+ assert_equal val1 , val2
35
+
36
+ assert op_addset_succeeds ( dc . set ( 'a' , nil ) )
37
+ assert_nil dc . get ( 'a' )
38
+ end
39
+ end
40
+
26
41
it 'returns nil on a miss' do
27
42
memcached_persistent ( p ) do |dc |
28
43
assert_nil dc . get ( 'notexist' )
You can’t perform that action at this time.
0 commit comments