diff options
author | Eric Wong <normalperson@yhbt.net> | 2011-11-05 02:11:03 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-11-05 02:11:03 +0000 |
commit | f057a82730d252c509f8c590430dbf4507d17601 (patch) | |
tree | 35c5bf005dc3b7c0d52a580ee7e94cd223090357 | |
parent | 972bad366ae58ec726329a45cbf908e16e1889df (diff) | |
download | mogilefs-client-f057a82730d252c509f8c590430dbf4507d17601.tar.gz |
Otherwise IO#gets and MogileFS::Socket#timed_gets could return a truncated response before EOF and we would never know the response was truncated.
-rw-r--r-- | lib/mogilefs/backend.rb | 2 | ||||
-rw-r--r-- | test/test_backend.rb | 9 |
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/mogilefs/backend.rb b/lib/mogilefs/backend.rb index 973d82b..db13b45 100644 --- a/lib/mogilefs/backend.rb +++ b/lib/mogilefs/backend.rb @@ -207,7 +207,7 @@ class MogileFS::Backend raise error(@lasterr), @lasterrstr end - return url_decode($1) if line =~ /^OK\s+\d*\s*(\S*)/ + return url_decode($1) if line =~ /^OK\s+\d*\s*(\S*)\r\n\z/ raise MogileFS::InvalidResponseError, "Invalid response from server: #{line.inspect}" diff --git a/test/test_backend.rb b/test/test_backend.rb index 1a723de..6211b34 100644 --- a/test/test_backend.rb +++ b/test/test_backend.rb @@ -77,11 +77,11 @@ class TestBackend < Test::Unit::TestCase def test_parse_response assert_equal({'foo' => 'bar', 'baz' => 'hoge'}, - @backend.parse_response('OK 1 foo=bar&baz=hoge')) + @backend.parse_response("OK 1 foo=bar&baz=hoge\r\n")) err = nil begin - @backend.parse_response('ERR you totally suck') + @backend.parse_response("ERR you totally suck\r\n") rescue MogileFS::Error => err assert_equal 'MogileFS::Backend::YouError', err.class.to_s assert_equal 'totally suck', err.message @@ -94,6 +94,9 @@ class TestBackend < Test::Unit::TestCase assert_raises MogileFS::InvalidResponseError do @backend.parse_response 'garbage' end + assert_raises MogileFS::InvalidResponseError do + @backend.parse_response("OK 1 foo=bar&baz=hoge") + end end def test_parse_response_newline @@ -142,7 +145,7 @@ class TestBackend < Test::Unit::TestCase t1.close thr = Thread.new do client = t2.accept - client.write("OK 1 foo=bar\n") + client.write("OK 1 foo=bar\r\n") client end rv = nil |