From 9d7a67e09580805e857ebe39e0ceca55052bee05 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Sat, 15 Jun 2019 03:07:56 +0000
Subject: [PATCH] Don't call alert() - (load-libraries shouldn't be doing
 that), instead return a string on error which can be logged/displayed/ignored
 as desired by the caller. Catch JSON.parse() errors gracefully and return an
 error (string).

---
 exec/load/sbbsimsg_lib.js | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/exec/load/sbbsimsg_lib.js b/exec/load/sbbsimsg_lib.js
index 5d96e66b58..e45a2292c3 100644
--- a/exec/load/sbbsimsg_lib.js
+++ b/exec/load/sbbsimsg_lib.js
@@ -85,16 +85,19 @@ function parse_active_users(message, logon_callback, logoff_callback)
 	if(!message)
 		return false;
 	var sys = sys_list[message.ip_address];
-	if(!sys) {
-		alert("Unknown system: " + message.ip_address);
-		return false;
-	}
+	if(!sys)
+		return "Unknown system: " + message.ip_address;
 	
 	sys.last_response = time();
 	var old_users = sys.users.slice();
 	
-	if(message.data[0] == '[')
-		sys.users = JSON.parse(message.data);
+	if(message.data[0] == '[') {
+		try {
+			sys.users = JSON.parse(message.data);
+		} catch(e) {
+			return e;
+		}
+	}
 	else {
 		var response = message.data.split("\r\n");
 		
@@ -167,8 +170,8 @@ function poll_systems(sent, interval, timeout, callback)
 		replies++;
 
 		var result = parse_active_users(message);
-		if(!result)
-			alert("Failed to parse: " + JSON.stringify(message));
+		if(result !== true)
+			return format("%s: %s", result, JSON.stringify(message));
 	}
 	return replies;
 }
-- 
GitLab