patch 7.4.1299
Problem:    When the server sends a message with ID zero the channel handler
            is not invoked. (Christian J.  Robinson)
Solution:   Recognize zero value for the request ID.  Add a test for invoking
            the channel handler.
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 8193703..d77778a 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -204,6 +204,35 @@
   call s:run_server('s:server_crash')
 endfunc
 
+let s:reply = ""
+func s:Handler(chan, msg)
+  let s:reply = a:msg
+endfunc
+
+func s:channel_handler(port)
+  let chopt = copy(s:chopt)
+  let chopt['callback'] = 's:Handler'
+  let handle = ch_open('localhost:' . a:port, chopt)
+  if handle < 0
+    call assert_false(1, "Can't open channel")
+    return
+  endif
+
+  " Test that it works while waiting on a numbered message.
+  call assert_equal('ok', ch_sendexpr(handle, 'call me'))
+  sleep 10m
+  call assert_equal('we called you', s:reply)
+
+  " Test that it works while not waiting on a numbered message.
+  call ch_sendexpr(handle, 'call me again', 0)
+  sleep 10m
+  call assert_equal('we did call you', s:reply)
+endfunc
+
+func Test_channel_handler()
+  call s:run_server('s:channel_handler')
+endfunc
+
 " Test that trying to connect to a non-existing port fails quickly.
 func Test_connect_waittime()
   let start = reltime()