diff --git a/exec/msglist.js b/exec/msglist.js
index 58c9c84b30c96faa2cdf60003ed1a24cfabcf8aa..172d7bd97b2fdea3f542a1889411a2489bf71454 100644
--- a/exec/msglist.js
+++ b/exec/msglist.js
@@ -398,7 +398,7 @@ function view_msg(msgbase, msg, lines, total_msgs, grp_name, sub_name, is_operat
 //	console.clear();
 	msg.lines = lines.length;
 	
-	while(!js.terminated) {
+	while(bbs.online && !js.terminated) {
 		if(show_hdr) {
 			console.home();
 			console.status |= CON_CR_CLREOL;
@@ -422,7 +422,7 @@ function view_msg(msgbase, msg, lines, total_msgs, grp_name, sub_name, is_operat
 		var i = line_num;
 		var row = hdr_len;
 		var pmode = msg_pmode(msgbase, msg);
-		while(row < (console.screen_rows - 2)) {
+		while(row < (console.screen_rows - 2) && bbs.online) {
 			console.line_counter = 0;
 			if(i < lines.length)
 				console.putmsg(lines[i++].trimRight(), pmode);
@@ -747,7 +747,7 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name)
 
 	console.line_counter = 0;
 	console.status |= CON_MOUSE_SCROLL;
-	while(!js.terminated) {
+	while(bbs.online && !js.terminated) {
 		if(!last_msg)
 			last_msg = msgbase.last_msg;
 		else if(msgbase.last_msg != last_msg)
@@ -974,7 +974,7 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name)
 			case '\r':
 				console.clear();
 				var viewed_msg = current;
-				while(!js.terminated && list[current]
+				while(bbs.online && !js.terminated && list[current]
 					&& (key = view_msg(msgbase, list[current]
 						,get_msg_lines(msgbase, list[current], view_hdr, view_source, view_hex, view_wrapped)
 						,orglist.length
@@ -1060,7 +1060,7 @@ function list_msgs(msgbase, list, current, preview, grp_name, sub_name)
 						case 'O':
 							if(!is_operator)
 								break;
-							while(bbs.online) {
+							while(bbs.online && !js.terminated) {
 								if(!(user.settings & USER_EXPERT)) {
 									console.clear(LIGHTGRAY);
 									bbs.menu("sysmscan");
@@ -1624,6 +1624,6 @@ do {
 		curmsg = msg_area.sub[msgbase.cfg.code].last_read;
 	else
 		curmsg = userprops.last_read_mail;
-} while(list_msgs(msgbase, list, curmsg, preview, grp_name, sub_name) === true);
+} while(list_msgs(msgbase, list, curmsg, preview, grp_name, sub_name) === true && bbs.online && !js.terminated);
 
 userprops_lib.set(userprops_section, userprops);