1
0
forked from aniani/vim

patch 8.0.0312: failure when a channel receives a split json message

Problem:    When a json message arrives in pieces, the start is dropped and
            the decoding fails.
Solution:   Do not drop the start when it is still needed. (Kay Zheng)  Add a
            test.  Reset the timeout when something is received.
This commit is contained in:
Bram Moolenaar
2017-02-06 21:56:09 +01:00
parent 544d3bc9f0
commit 88989cc381
5 changed files with 50 additions and 23 deletions

View File

@@ -1563,9 +1563,11 @@ typedef struct {
jsonq_T ch_json_head; /* header for circular json read queue */
int ch_block_id; /* ID that channel_read_json_block() is
waiting for */
/* When ch_waiting is TRUE use ch_deadline to wait for incomplete message
* to be complete. */
int ch_waiting;
/* When ch_wait_len is non-zero use ch_deadline to wait for incomplete
* message to be complete. The value is the length of the incomplete
* message when the deadline was set. If it gets longer (something was
* received) the deadline is reset. */
size_t ch_wait_len;
#ifdef WIN32
DWORD ch_deadline;
#else