patch 8.2.0452: channel_parse_messages() fails when called recursively

Problem:    channel_parse_messages() fails when called recursively.
Solution:   Return for a recursive call. (closes #5835)
diff --git a/src/channel.c b/src/channel.c
index a57ed9c..15ee0b7 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -4428,14 +4428,22 @@
     int		ret = FALSE;
     int		r;
     ch_part_T	part = PART_SOCK;
+    static int	recursive = FALSE;
 #ifdef ELAPSED_FUNC
     elapsed_T	start_tv;
-
-    ELAPSED_INIT(start_tv);
 #endif
 
+    // The code below may invoke callbacks, which might call us back.
+    // That doesn't work well, just return without doing anything.
+    if (recursive)
+	return FALSE;
+    recursive = TRUE;
     ++safe_to_invoke_callback;
 
+#ifdef ELAPSED_FUNC
+    ELAPSED_INIT(start_tv);
+#endif
+
     // Only do this message when another message was given, otherwise we get
     // lots of them.
     if ((did_repeated_msg & REPEATED_MSG_LOOKING) == 0)
@@ -4513,6 +4521,7 @@
     }
 
     --safe_to_invoke_callback;
+    recursive = FALSE;
 
     return ret;
 }
diff --git a/src/version.c b/src/version.c
index 12e287d..94fcb60 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    452,
+/**/
     451,
 /**/
     450,