diff --git a/exec/load/sbbsimsg_lib.js b/exec/load/sbbsimsg_lib.js
index 8af2a8c47a643bc37b863cb9f6558cedc8961759..c0a43dde3796a4485b9820462b20dc955027bb2b 100644
--- a/exec/load/sbbsimsg_lib.js
+++ b/exec/load/sbbsimsg_lib.js
@@ -144,14 +144,15 @@ function receive_active_users()
 	return sock.recvfrom(0x10000);
 }
 
+// Cancel listening if callback returns 'true'
 function poll_systems(sent, interval, timeout, callback)
 {
 	var replies = 0;
 	var begin = new Date();
 	for(var loop = 0; replies < sent && new Date().valueOf()-begin.valueOf() < timeout; loop++)
 	{
-		if(callback)
-			callback(loop);
+		if(callback && callback(loop))
+			break;
 		if(!sock.poll(interval))
 			continue;