diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-03-20 14:31:00 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-03-20 14:31:00 +0100 |
commit | ac74d5e86cd16b42e81ba48f58f3d45c72758248 (patch) | |
tree | 54b1ebc8573e8e4d0f09215ccc829df310b07431 /src/testdir | |
parent | 829c8e369630a7cbbdac015d8177b7fde25e2f19 (diff) |
patch 7.4.1616v7.4.1616
Problem: Malformed channel request causes a hang.
Solution: Drop malformed message. (Damien)
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_channel.py | 5 | ||||
-rw-r--r-- | src/testdir/test_channel.vim | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py index a465d65d2f..47a12ea7e0 100644 --- a/src/testdir/test_channel.py +++ b/src/testdir/test_channel.py @@ -104,6 +104,11 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler): print("sending: {}".format(cmd)) self.request.sendall(cmd.encode('utf-8')) response = "ok" + elif decoded[1] == 'malformed': + cmd = '["ex",":"]wrong!["ex","smi"]' + print("sending: {}".format(cmd)) + self.request.sendall(cmd.encode('utf-8')) + response = "ok" elif decoded[1] == 'an expr': # Send an expr request. cmd = '["expr","setline(\\"$\\", [\\"one\\",\\"two\\",\\"three\\"])"]' diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index 6d38bffcec..c628bbe881 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -123,10 +123,12 @@ func s:communicate(port) " check that no job is handled correctly call assert_equal('no process', string(ch_getjob(handle))) endif - " Simple string request and reply. call assert_equal('got it', ch_evalexpr(handle, 'hello!')) + " Malformed command should be ignored. + call assert_equal('ok', ch_evalexpr(handle, 'malformed')) + " Request that triggers sending two ex commands. These will usually be " handled before getting the response, but it's not guaranteed, thus wait a " tiny bit for the commands to get executed. |