summaryrefslogtreecommitdiffstats
path: root/src/testdir
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-20 14:31:00 +0100
committerBram Moolenaar <Bram@vim.org>2016-03-20 14:31:00 +0100
commitac74d5e86cd16b42e81ba48f58f3d45c72758248 (patch)
tree54b1ebc8573e8e4d0f09215ccc829df310b07431 /src/testdir
parent829c8e369630a7cbbdac015d8177b7fde25e2f19 (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.py5
-rw-r--r--src/testdir/test_channel.vim4
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.